|
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 |
| 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 (Conf) | 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}
O Sistema EMapping utiliza a modelagem Orientada a Objetos para suas entidades de negocio e dados. Os dados persistentes sao mapeados para banco de dados relacional utilizando o padrao JPA (JSR-317), com geracao automatizada das estruturas na base de dados atraves da implementacao Hibernate.
A responsabilidade das estruturas OO do sistema ficam a cargo do projetista do sistema, conforme necessidades de negocio elencadas pelo Product Owner e direcionamentos dos arquitetos.
O banco de dados padrao do sistema eh o Oracle, mas devido o uso de JPA, Postgres tambem deve ser suportado.
Todo e qualquer acesso a base de dados deve ser feito unica e exclusivamente atraves do objeto EntityManager que esta encapsulado nos EJBs do sistema. Excecoes a essa regra competem apenas ao arquiteto do sistema.
Abaixo, um exemplo de uso da camada de persistencia
@Stateless
public class ReferentialDomainService extends AbstractCoreService<AbstractNamedCoreModel> {
public void persist(ReferentialField field) {
ReferentialField fieldToPersist = field;
if (isUsed(fieldToPersist)) {
fieldToPersist = new ReferentialField(field);
}
super.persist(fieldToPersist); //persist eh um metodo implicito e disponivel para os EJBs de servico como este
}
}
|
Os servicos externos que acessam o EMapping poderao fazer isso atraves do padrao REST, podendo realizar leitura e escrita de informacoes desde que autenticados e conforme o nivel de permissao atribuido.
Os servidos REST disponiveis no EMapping sao implementados unica e exclusivamenete pelos EJB de fachada.
O formato padrao de dados REST no EMapping eh, primeiro XML, e opcionalmente JSON.
Detalhes e exemplos sobre essa parte serao disponibilizados quando necessario.
Os quatro vertices (Logico, Fisico, Processamento e Implantacao) da arquietetura sao dados pelo Diagrama 4+1 abaixo:
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