|
CONTEUDO |
| Tecnologia | Versao | Usada para |
|---|---|---|
| Java | 1.6 | Linguagem utilizada no desenvolvimento de plugins Atlassian |
| Groovy | 2.0.2 | Utilizada para criar diferentes renders de conteúdo baseado nas features de builders oferecidas pela linguagem |
| Jersey | 1.0.2 | Implementação da JSR-311, criação de serviços REST |
| JAX-B | 2.1 | Marshalling e unmarshalling de JSON e XML |
| Atlassian SDK | 4.1.4 | SDK que expôe a API dos produtos Atlassian |
| Graphviz | 2.30 | Biblioteca para criar imagens de workflows |
| Wijmo | 2.3.6 | Biblioteca JS de widgets |
| Ferramenta | Versao | Utilizadores | Usada para |
|---|---|---|---|
| Eclipse | Juno Release - Build id: 20120614-1722 | Desenvolvedores | IDE de desenvolvimento |
| Balsamiq Mockups | Next.558 - 03/14/2011 12:18 | Analistas, Projetistas, Arquitetos | Criação de mockups |
Consulte o projeto grafico para um detalhamento dos componentes internos, estrutura, aparecia e comportamento dessa camanda.
Todos os serviços disponiveis sao implementados utilizando o padrao de REST da Atlassian. Esta camada oferece uma forma de comunicação entre as diferentes partes do plugin. Desta forma, a parte do Jira (o plugin que sera desenvolvido para o Jira) podera realizar operacoes para remover, atualizar, inserir e editar conteudos no Confluence.
Modelo de URI utilizado pela API REST da Atlassian e suas extensoes:
http://{host}:{port}/{context}/rest/autodoc/{operation}/{version}
Atualmente a API disponibilizada pelo plugin do lado do Confluence aborda apenas a comunicacao utilizando JSON. Para ilustrar o modelo de dados, abaixo segue um exemplo de uma requisicao JSON.
{
"workflow":{
"name":"",
"description":"",
"steps":[
{
"name":"",
"description":"",
"transitions":[
{
"name":"",
"description":"",
"outboundStep":"",
"conditions":[
{
"name":"",
"description":""
}
],
"validators":[
{
"name":"",
"description":""
}
],
"postfunctions":[
{
"name":"",
"description":""
}
]
}
]
}
]
}
} |
Esta requisicao eh apenas um exemplo, este modelo pode mudar devido as diferentes operacoes disponiveis pela API REST. |
Google Translate
A lingua padrao para descricoes de Validators, Conditions e Post Functions eh Ingles. Sabendo disso a API pode enviar requisicoes para servicos online de traducao (como Google Translate) para realizar as traducoes da forma que seja possivel disponibilizar a documentacao em diferentes linguas.
Se esta feature for implementada utilizando este tipo de abordagem o plugin desenvolvido necessariamente deve ter acesso a web.
Os quatro vertices (Logico, Fisico, Processamento e Implantacao) da arquietetura sao dados pelo Diagrama 4+1 abaixo:
Para o usuario final, o plugin realiza a tarefa de documentar as mudanças feitas nos workflows cadastrados no JIRA de forma automatica. No momento da mudança o plugin ira perceber esta mudança e alterar a documentacao disponivel no Confluence. Esta documentacao eh uma pagina que ate o presente momento (em proximas versoes poderemos ter novas features) tem um layout estatico por padrao. Classificamos por estatico porque o usuario nao ira alterar o layout do documento em si.
Segue abaixo um diagrama de sequencia para ilustrar esta funcionalidade.
![]()
O Diagrama de Atividades mostra o ciclo completo de processamento de negocio de um acao de usuario no sistema:
{mockup:diagramaDeSequencia|5} |
Onde:
Facade) e Servicos (pelo sufixo Service). EJBs de fachada encapsulam todas as operacoes de um modulo do sistema. Em outras palavras, um modulo nao deve ser acessado de outra forma que nao pelo seu EJB de Fachada. EJBs de fachada nao contem regras de negocio, eles apenas delegam a execucao das opeeracoes para os EJBs de servico. EJBs de fachada sao sem estado por natureza (@Stateles), e elegiveis para oferecer servicos REST. Todos metodos nos EJBs de Fachada sao transacionais por natureza. Ja os EJBs de servico sao os responsaveis pela implementacao das regras de negocio do sistema. Eles somente podem ser acessados por EJBs de fachada (qualquer EJB de fachada) ou entao por outros EJBs de servico dentro do mesmo modulo. EJBs de servico podem acessar a camada de persistencia ou invocar operacoes em classes utilitarias ou sistemas externos. EJBs de servico nao devem realizar acesso direto ao banco de dados, exceto metodos marcados explicitamente pelos arquitetos da aplicacao. EJBs de servico sao por natureza sem estado (@Stateles). Todos os componentes Laranja executam dentro do servidor de aplicacao, e contam com recursos implicitos para log, persistencia, transacionamento, seguranca e escalabilidade.Especificacao de plugins REST da Atlassian: https://developer.atlassian.com/display/REST/REST+Plugin+Module#RESTPluginModule-PurposeoftheRESTPluginModule