Entidade COMPONENTES

ADS_COMPS.COMPONENTES

Descrição

Um componente é elemento chave para o detalhamentos dos sistemas feitos pelo Telescope.
Um componente é qualquer elemento que faz parte do sistema. Cada componente deve ser devidamente classificado, ser dividido em sub-componentes, referenciar-se a outros componentes, etc.

Existem componente extremamente complexos (ex: um sistema é representado por um componente) da mesma forma que existem componentes extremamente simples (ex: o parâmetro de uma função).

Alguns exemplos de componentes são:

Os componentes estabelecem necessidades e funcionalidades de forma descritiva e permitem contextualizar estas necessidades vinculando-as umas com as outras.

Durante o processo de desenvolvimento, os componentes são inicialmente criados com uma conotação conceitual e vão sendo sistematicamente especializados até poderem ser implementados fisicamente em alguma linguagem de programação.

Alguns componentes são criados apenas para criar definições gerais, tais como tipos de dados, eventos, etc.. Nestes componentes pode-se definir como eles deverão ser implementados.

Atributos

AtributoDomínioRegrasDescrição
IDID(18)Rqd PK ID:
Número de identificação físico do componente.
TIPO_COMPONENTE_IDID(18)Rqd FK Tipo de componente:

Referência para TIPOS_COMPONENTES
NOMEUPPER(80)Rqd UK AK Nome:
Nome dado para identificar o componente.
NOME_CURTOUPPER(80)Nome curto:
Nome curto do componente. Normalmente é uma abreviação ou alias de seu nome completo.
NOME_GLOBALUPPER(300)UK Nome global:
Indica o nome global do componente. Se o componente for raiz (não tem pai), então o nome global será igual ao nome do componente. Se o componente não for raiz (tem pai), então o nome global é formado pelo nome global do componente pai + "." + nome do componente. Ex: ADS, ADS.COMPONENTES, ADS.COMPONENTES.NOME_GLOBAL
TITULOTEXT(300)Título:
Título do componente para fins conceituais.
DESCRICAOTEXT_LONGDescrição:
Texto livre para descrição do componente. Esta descrição inclui o que o componente representa, quais as funcionalidades que ele tem, o que ele representa e quando necessário dá um breve resumo de como ele funciona.
Ver ADS_COMPS.TIPOS_COMPONENTES
DESCRICAO_CURTATEXT_LONGDescrição curta:
Texto que descreve o componente resumido em uma única linha. Usado para documentação do sistema em locais onde não é necessário entrar em detalhes (ex: "hint" de uma interface). Dependendo do tipo de componente, a descrição curta é o seu objetivo (porque o sistema precisa deste componente?).
VALORTEXT(300)Valor:
Valor inicial do componente quando aplicável.
OPCIONALFLAG(1)Opcional:
Indica quando o preenchimento do componente é considerado opcional ou não. Em alguns casos, também pode indicar quando um componente é público.

Valor padrão = S
PAI_COMP_IDID(18)UK FK Pai
Referência para COMPONENTES
REF_COMP_IDID(18)FK Referencia
Referência para COMPONENTES
DOMINIO_COMP_IDID(18)FK Domínio:
Quando preenchido, indica que o componente atual herda todas as funcionalidades de um outro componente. Muitas vezes está associado ao tipo de dado que o componente retorna ou representa.

Referência para COMPONENTES
SEQUENCIAINTEGERSequencia:
Número de sequencia deste componente. Normalmente define a ordem dos componentes com relação ao seu escopo.
TAMANHOINTEGERTamanho:
Determina o tamanho do componente.
LARGURAINTEGERLargura:
Estabelece a largura do componente onde isso faz algum sentido. Ex: Para atributos, a largura indica o número de caracteres utilizados pelos í­tens de interface relacionados com o mesmo.
ALTURAINTEGERAltura:
Estabelece a altura do componente onde isso faz sentido. Ex: Para atributos, a altura indica o número de linhas utilizados pelos í­tens de interface relacionados com o mesmo.
NOTASTEXT_LONGNotas:
Notas ou observações sobre o componente.
SITUACAOOPCAO(1)Situação:
Informa qual a situação do componente com relação ao seu processo de aprovação/homologação. A situação é calculada automaticamente através das homologações do componente. Toda vez que um processo de homologação é criado, o componente passa para pendente.

Valores permitidos:
  • P - Pendente - Existe pelo menos uma homologação pendente e não existem homologações reprovando o componente (podem existir homologações aprovando o mesmo).
  • R - Reprovado - Existe pelo menos uma homologação reprovando o componente. Observar que podem existir homologações pendentes e/ou aprovando o componente, mas basta uma reprovação para considerar o componente reprovado.
  • B - Aprovado com ressalvas - O componente está aprovado, mas existem observações que devem ser consideradas. Isso significa que todas as homologações foram realizadas e aprovaram o componente, mas pelo menos em uma delas foi registrada uma ressalva.
  • A - Aprovado - O componente foi aprovado. Isso significa que todos os processos de homologação foram realizados e foram aprovados sem nenhuma ressalva.

Valor padrão = P
VERSAOINTEGERVersão:
Número de versão do componente. Informa quantos ciclos de aprovação/revisão já ocorreram no mesmo.
A versão é automaticamente incrementada toda vez que um novo processo de homologação para o componente é criado.

Valor padrão = 1
DATA_APROVACAODATEData de aprovação:
Data em que este componente foi aprovado.
DATA_INCLUSAODATEData da inclusão:
Data em que o componente foi criado.

Valor padrão = [SYSDATE]
DATA_MODIFICACAODATEData da modificação:
Data em que o componente foi modificado pela última vez. Na inclusão, será igual a data da inclusão.

Valor padrão = [SYSDATE]
USUARIO_INCLUSAO_IDID(18)FK Usuário da inclusão:
Indica o usuário que inseriu o componente no sistema.

Valor padrão = [USER_ID]
Referência para USUARIOS
USUARIO_MODIFICACAO_IDID(18)FK Usuário da modificação:
Indica o usuário que fez a última alteração no componente (pode ser a própria inclusão).

Valor padrão = [USER_ID]
Referência para USUARIOS
POLITICA_ACESSOOPCAO(1)Política de acesso:
Determina como deve ser o controle de acesso deste componente.

Valores permitidos:
  • R - Restrito - A operação é restrita a usuários que tenham acesso específico a mesma. Para os outros usuários, a operação é sequer apresentada.
  • E - Exige credencial - A operação exige a credencial de um usuário com este direito de acesso no momento da sua execução. Neste caso, caso o usuário da sessão corrente não possuir esta credencial, o sistema irá pedir as credenciais de um usuário que as tenha. Ao contrário da política de acesso "Restrito", a operação é visível para qualquer usuário que tenha acesso a uma operação de entrada do bloco, mas caso ele não tenha o direito de acesso específico, o sistema irá pedir as credencias de alguém que tenha este direito. Ver Política de acesso "Exige credencial"
  • U - Usuário - Todos os usuários logados tem acesso a este elemento.
  • P - Público - Qualquer um tem acesso a este elemento (mesmo usuários não logados)
TEXT_04TEXTTexto livre 4:
Atributo genérico de texto 4.
RAIZ_IDID(18)FK Raiz:
Componente raiz ao qual o componente faz parte. Este atributo contribui para diversas regras que são definidas através do sistema do componente. Quando o componente tem pai, o seu componente raiz será sempre igual ao do pai, caso contrário, o seu sistema será o próprio componente.

Referência para COMPONENTES
DATA_MODIFICACAO_ESTRUTURADATE_TIMEUltima alteração estrutura:
Data em que este componente ou algum de seus filhos foi alterada. Esta data é automaticamente atualizada sempre que este componentes ou algum dos componentes filhos é alterado.

Valor padrão = [SYSDATE]
USUARIO_MODIFICACAO_ESTRUTURA_IDID(18)FK Usuário que modificou estrutura:
Indica o ultimo usuário que modificou algum componente da estrutura deste componente.

Valor padrão = [USER_ID]
Referência para USUARIOS
INDEXARFLAG(1)Rqd AK Indexar:
Indica se este componente deverá ser incluído no mecanismo de indexação para acelerar as pesquisas de documentação.
Este valor é automaticamente atualizado sempre que o componente que os valores do título ou descrição do componente forem alterados e ele for de um tipo de componente que deve ser indexado.


Valor padrão = N
ANEXOSATTACHED_FILE_LISTAnexos:
Arquivos anexos ao componente. Podem ser, por exemplo, imagens necessárias para a documentação e que podem ser referidas pela macro [ img: nome ] .
SUBSTITUIDO_POR_IDID(18)FK Substituído por:
Quando informado indica que este componente foi substituído por outro e está obsoleto.

Referência para COMPONENTES

Regras

Criar FK para atributo

(Depois de inserir, Depois de alterar)
Quando o atributo apontar para uma entidade, criar uma FK e alterar o domínio para ID.

Calcular situação

(Antes de inserir, Antes de alterar)
Ver documentação do atributo

Zerar os dominios dos filhos

(Antes de excluir)
Limpa em cascata os domínios de todos os filhos deste componente. Este procedimento é necessário para eliminar inter-dependências entre os componentes antes de fazer uma exclusão em cascata.

Garantir um nome para o componente

(Antes de alterar, Antes de inserir)
Caso o nome não tenha sido informado, calcula um automaticamente da seguinte forma:
1) Se for um REQUISITO, será REQ-9999 onde 9999 é o número de requisitos já cadastrados + 1 (max da sequencia)
2) Nome do tipo de componente + ID.

Calcular nome global

(Antes de inserir, Antes de alterar)
Se o componente não tem pai, então o seu nome global é igual ao nome. Se o componente tem pai, então o seu nome global é igual ao nome global do pai, concatenado com um ponto (".") e com o seu próprio nome. Se o nome global do pai for ".", então o nome global do filho será apenas "." + o seu próprio nome.

Calcular componente raiz

(Antes de inserir, Antes de alterar)
Se componente tem um pai informado, terá a mesma raiz que seu pai, caso contrário, a raiz será o próprio componente.

Aprovar componentes filhos

Quando um componente é aprovado, todos os filhos são aprovados em cascata.

Calcular sequencia das usages

(Antes de inserir, Antes de alterar)
Quando o componente for uma entity-usage, então o número de sequencia deverá ser o número de entidades que estão a "esquerda". A entidade base será sempre "0". As primeiras lookups serão 1, as lookups das lookups serão 2 e assim sucessivamente.

Atualizar usuário e data das modificações

(Antes de alterar)
Considera modificado apenas se um dos atributos lógicos foi alterado. Para atributo lógico considera-se apenas aqueles que dão valor ao componente. Não considera:

Note que se um nome for alterado, os nomes globais dos filhos serão alterados em cascata mas apenas o registro que originou a alteração terá seus dados de auditoria alterados.

Atualizar o nome global e raiz dos filhos

(Depois de alterar)
Verifica e corrige se necessário o nome global ou a raiz de todos os componentes que são filhos deste componente. A atualização somente é executada caso o componente altere se nome global ou a sua raiz.

Atualiza dependências indiretas

(Depois de inserir, Depois de excluir)
Na exclusão ou inclusão de uma dependência do sistema, recalcula as suas dependências indiretas.
Se mudar alguma coisa, atualiza as dependências de todos os sistemas que são dependentes deste sistema.

Atualizar os dados do componente pai

(Depois de excluir, Depois de inserir, Depois de alterar)
Sempre que incluir, alterar ou excluir um componente, deve alterar a data e usuário de modificação da estrutura do componente pai.

Substituir referencias de documentação feitas com nome global pelo respectivo ID

(Antes de inserir, Antes de alterar)
Sempre que a descrição, notas ou a descrição curta forem alteradas, substituir referencias realizadas por macros do tipo
[t:nome-global]
pelos respectivos IDs:
[t:#id]

Atualizar referencias de documentação

(Depois de inserir, Depois de alterar)
Atualizar as dependências deste elemento, formando registros que vinculam este elemento ao elemento referenciado e removendo aqueles que não são mais referenciados.

Atualizar informações da estrurura

(Antes de inserir, Antes de alterar)
Sempre que o registro for alterado, registrar esta alteração no próprio registro e em todos os registros-pai até alcançar a raiz.

Calcular identação dos requisitos

(Antes de inserir, Antes de alterar)
Calcula a altura do requisito considerando 1 caso ele esteja no escopo no sistema ou 1 + altura do requisito do seu escopo.
Caso modificada, atualiza dos respectivos sub-requisitos.

Propagar alterações nos requisitos

(Depois de inserir, Depois de alterar)
Se o componente for um requisito, então proceder:

Atualizar indexação

(Antes de inserir, Antes de alterar)
Verifica se o registro deve ou não ser indexado.

Atualizar histórico

(Depois de inserir, Depois de alterar)
Atualiza as informações de histórico do componente de acordo com o que estiver definido no tipo de componente:

Atualizar homologações

(Depois de inserir, Depois de alterar)
Garantir a geração de processos de homologação para este componente.
Esta regra verifica se o tipo de alteração realizado deve gerar processos de homologação e garante que os mesmos sejam "agendados" com os respectivos responsáveis.

Caso existam usuários homologadores configurados para este sistema, garantir que existe um processo de homologação pendente para o mesmo.

Calcular versão

(Antes de alterar)
Incrementa o número da versão quando necessário. Isso é realizado sempre que a alteração do componente exigir a criação de um novo processo de homologação. Neste caso, homologações pendentes da versão antiga são automaticamente alteradas para a nova versão.

Excluir FKs para entidades excluídas

(Antes de excluir)
Quando excluir uma entidade, todas as FKs relacionadas a ela devem ser excluídas.

Calcular o hash da implementação

(Antes de inserir, Antes de alterar)
Caso o componente seja uma implementação, então o atributo VALOR é automaticamente preenchido com o SHA-1 da implementação.

Processar comportomentos BEHAVIOR

(Depois de inserir)
Quando o elemento inserido for um BEHAVIOR_USAGE, então todos os elementos do BEHAVIOR devem ser copiados.

Quando o elemento pai é ou está relacionado a um BEHAVIOR, então deve-se registrar o vínculo do elemento ao respectivo behavior.

Criar acesso para o usuário

(Depois de inserir)
Ao criar um sistema, é garantido o acesso de administrador ao usuário que o criou.

Atributos de VIEW são sempre opcionais

(Antes de inserir)
Garante que que atributos de uma entidade do tipo VIEW são sempre opcionais.

Só pode incluir/excluir filhos de componentes pendentes

(Antes de inserir, Antes de excluir)
Não é permitido incluir elementos abaixo de registros aprovados. O mesmo ocorre para a exclusão de componentes.

Componentes aprovados não podem ser alterados sem aprovação

(Antes de alterar, Antes de excluir)
Apenas o processo especial "Revisar" pode ser usado quando um componente estiver aprovado.

Set property value(propriedade, valor, tipo, per_user)

Define um valor para uma propriedade.
A propriedade será considerada de design.

Atualizar auditoria da estrutura em cascata subindo até a raiz

Atualizar os dados de auditoria de estrutura (usuário, data e hora) do registro e de seus elementos-pai até a raiz.

Criar PK

Se o componente for uma entidade, cria um atributo ID e a respectiva regra PK automaticamente.

Calcular dependências(mudou)

Rotina que revisa as dependências do sistema.
Se o componente não for um sistema, encerra sem fazer nada.

Consulta quais são as dependencias diretas do sistema que já estão cadastradas e completa com as dependencias indiretas.
Verifica se existem dependencias diretas que precisam ser excluídas.
Verifica se existem dependencias que precisam ser incluídas.
Se mudou alguma coisa, atualiza todos sistemas que são dependentes deste sistema.

Check user update(componente_id, usuario_id)

Verifica se o usuário da sessão corrente pode alterar este componente.
Caso não puder, gera uma exceção.

Clonar

Este procedimento duplica o componente atual junto com seus filhos.

As relações entre os componentes que pertencem à árvore clonada (através de domínios e referências) são devidamente traduzidas para os respectivos clones.

Toda nova estrutura entra em situação pendente.

Criar UK

Quando o componente é uma Entidade, cria um atributo e uma regra UK com o nome singular ele.

Del property(propriedade)

Remove uma propriedade do componente.

Expandir ID de macros(atributo)

Este método varre macros que fazem referencia ao ID de elementos do repositório inseridas na descrição, notas e/ou descrição curta do Telescope e substitui pelo respectivo nome global para facilitar a edição.
O método deve ser chamado pelas interfaces que possuem edição destes campos.

Find by pai nome(pai_id, nome)

Apenas para compatibilidade de versões anteriores.

Get Childs(force)

Retorna uma lista com todos os elementos filhos deste componente.

Get childs of type(tipo)

Retorna os filhos de um componente filtrando pelo tipo.

Get component property(propriedade)

Retorna uma propriedade do componente desconsiderando qualquer tipo de herança.
Caso não encontrado, retorna null.

Get propriedade do componente(id, property)

Retorna o valor de uma propriedade do componente
sem considerar a possibilidade de herança.

Get propriedade do domínio(property)

Retorna o valor de uma propriedade do componente
considerando a possibilidade de herança
através da hierarquia de domínios.
Caso não encontre, retorna NULL.

Get domain related component(tipo_componente_id)

Retorna um componente relacionado com o atual através do domínio e que seja de um tipo específico. Retorna NULO se não encontrar.

Pendências do componente

Verifica se o componente tem pendências de acordo com seu tipo.

Pendências do componente do tipo entidade

Verifica os seguintes ítens:

Get Property(property)

Retorna o valor de uma propriedade do componente.

Get property (com default)(name, default_value)

Mesmo que GET_PROPERTY mas aceita informar um default.

Get System

Retorna o componente que representa o sistema deste componente.

Nome global do sistema

Varre a árvore do componente e retorna o nome global do sistema onde ele está inserido.

Get Usages

Esta função retorna uma relação de componentes que referenciam este componente atravé dos atributos "Referência" ou "Domínio".

HTML homologações

Retorna um texto HTML contendo a situação do componente quanto às homologações.

HTML descrevendo parametros

Retorna um HTML descrevendo os parametros do componente.

Ler anexos

Retorna um

Salvar anexos(anexos)

Salva os anexos do componente. Esta rotina recebe um parâmetro com um campo de interface que pode ter vários arquivos anexos. Cada arquivo anexo será convertido em um componente do tipo ATTACHMENT_FILE abaixo deste componente.

Esta rotina é normalmente utilizada em conjunto com a rotina LER_ANEXOS que prepara um campo com os componentes do tipo ATTACHMENT_FILE.

Anexos excluídos na interface são automaticamente excluídos do repositório.

Salvar público alvo(publico_alvo)

Salva o público alvo do componente conforme informado no campo.

Set property(propriedade, valor)

Define uma propriedade de design para o componente.

URL para consulta

Retorna uma URL que pode ser utilizada para consultar o componente. Esta URL é montada de acordo com o que estiver configurado no atributo "URL do elemento" do respectivo tipo de componente.

Verifica se usuário pode alterar(componente_id, usuario_id)

Verifica se o usuário da sessão pode ou não alterar este componente.