Informações sobre o Modelo Arquitetural da Aplicacao, conhecido como MAS.

CONTEUDO

Tecnologias

TecnologiaVersaoUsada para
Java1.6Linguagem utilizada no desenvolvimento de plugins Atlassian
Groovy        2.0.2Utilizada para criar diferentes renders de conteúdo baseado nas features de builders oferecidas pela linguagem
Jersey        1.0.2Implementação da JSR-311, criação de serviços REST
JAX-B2.1Marshalling e unmarshalling de JSON e XML
Atlassian SDK4.1.4SDK que expôe a API dos produtos Atlassian
Graphviz2.30Biblioteca para criar imagens de workflows
Wijmo         2.3.6Biblioteca JS de widgets

Ferramentas

FerramentaVersaoUtilizadoresUsada para
EclipseJuno Release - Build id: 20120614-1722DesenvolvedoresIDE de desenvolvimento
Balsamiq MockupsNext.558 - 03/14/2011 12:18Analistas, Projetistas, ArquitetosCriação de mockups

 

Camadas da Aplicacao

 Interface do Usuario

Consulte o projeto grafico para um detalhamento dos componentes internos, estrutura, aparecia e comportamento dessa camanda.

Camada de Servicos

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}

Modelo de Dados

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.

Servicos Externos

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.

Funcionamento

Os quatro vertices (Logico, Fisico, Processamento e Implantacao) da arquietetura sao dados pelo Diagrama 4+1 abaixo:

Logico

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.

 

Fisico

Processamento

O Diagrama de Atividades mostra o ciclo completo de processamento de negocio de um acao de usuario no sistema:

{mockup:diagramaDeSequencia|5}

Onde:

Implantacao

Anexos

Especificacao de plugins REST da Atlassian: https://developer.atlassian.com/display/REST/REST+Plugin+Module#RESTPluginModule-PurposeoftheRESTPluginModule