Em:http://www.ibm.com/developerworks/br/websphere/library/techarticles/1112_wang2/
A Parte 1 desta série forneceu uma visão geral dos recursos e arquitetura do WebSphere Lombardi V7.1 (a partir de agora chamado de Lombardi). Na Parte 2 você aprendeu como usar os recursos mais comuns do Lombardi, incluindo a definição de processo de negócios (BPD), integração e serviços humanos e de regra para modelar o processo de amostra. Na Parte 3 você aprendeu como usar alguns recursos avançados do Lombardi para atender aos requisitos mais complexos, incluindo processos aninhados, marcos, mecanismos de evento, manipulação de exceção e exposição dos serviços da web do Lombardi.
Na Parte 4, você aprenderá a usar os Coaches do Lombardi para desenvolver serviços humanos. Continuaremos a usar o cenário de negócio típico de um processo de ordem de compra como nossa amostra.
Os Coaches do Lombardi fornecem a interface para interação com o usuário final e são normalmente usados para desenvolver serviços humanos. A Figura 1 mostra o layout do designer de Coach do Lombardi.
Figura 1. O designer de Coach
- Mostra todos os Coaches no serviço aberto atualmente. É possível alterar ou implementar a página de Coach clicando em um dos Coaches.
- Mostra o design e a implementação do Coach selecionado na guia Design . É possível clicar na guia Preview para ver qual será aparência do Coach para os usuários finais quando o serviço for executado.
- Use os três primeiros ícones para: (1) mostrar o design do Coach; (2) mostrar o design e o código do Coach; (3) mostrar somente o código do Coach, respectivamente;
- Lista as seções, controles e variáveis que podem ser incluídos no Coach. Arraste uma seção ou controle da paleta para a guia Design para adicioná-lo ao Coach. Para criar um controle para uma variável incluída no serviço, arraste uma variável da paleta para a guia Design . O tipo de controle criado depende da variável. Por exemplo, uma variável de entrada que é uma cadeia de caractere cria um campo de texto de entrada.
- Mostra as propriedades do controle selecionado na guia Design .A Figura 1 mostra as propriedades de Order Name no Order Head Coach.
Neste artigo, iremos desenvolver um serviço humano Submit Purchase Order na amostra de processo de Ordem de compra usando Coaches. Para a amostra e processo de Ordem de compra, o comprador precisa enviar uma ordem de compra para iniciar o processo. O serviço humano Submit Purchase Order que iremos desenvolver precisa coletar a entrada do comprador como o valor para a variável complexa
order
.
A Figura 2 ilustra a estrutura de dados da estrutura complexa
Order
. A variável order
é uma instância de Order
e inclui duas variáveis complexas: orderHead
e orderDetail
. Além disso, orderDetail
é uma lista, ou array, da estrutura complexaOrderDetail
. Portanto, um order
incluirá um orderHead
e uma ou mais variáveis orderDetail
.
O serviço humano Submit Purchase Order fornecerá uma interface com o usuário para coletar informações do usuário a fim de preencher a variável
order
.Figura 2. a estrutura de dados de Order
A Figura 3 ilustra o design geral de Coach para o serviço humano Submit Purchase Order. Primeiro, é necessário iniciar a variável complexa
tw.local.order
. Uma vez que um tw.local.order
tem um tw.object.OrderHead
e um ou maistw.object.OrderDetail
, desenvolveremos Coaches separados para Order Head e Order Detail. Finalmente, desenvolveremos um coach para mostrar o resumo da ordem para o usuário.Figura 3. O coach geral para Submit Purchase Order
Como
Order
é uma variável complexa, primeiro é necessário inicializá-lo. A Figura 4 ilustra a implementação da inicialização. Você pode usar new tw.object.objectType
para inicializar a variável com o tipo objectType
e usar new tw.object.listof.objectType
para iniciar uma variável de lista com um tipo objectType
. Use um elemento Server Script
para executar a inicialização.
Algumas das propriedades de
Order
podem ser receber valores padrão; por exemplo, o identificador de orderHead
pode ser inicializado como o ID de instância do processo (tw.system.currentProcessInstanceID
) e a data e hora da ordem podem ser inicializadas como a data e hora do sistema atual, como mostra a Figura 4.Figura 4. Iniciando o script do servidor de saída
Como mostrou a Figura 4, uma ordem incluirá um
orderHead
e uma ou mais variáveis orderDetail
. Para preencher a variável order
, é necessário fornecer uma interface para coletar informações de orderHead
e orderDetail
. Como há apenas um orderHead
para uma ordem, primeiro é necessário criar um Coach para orderHead
.Figura 5. O Coach Create Order Head
A Figura 5 ilustra a implementação do coach Create Order Head. Como
orderHead
, orderDate
e orderTime
são iniciados como mostra a Figura 4, e orderCloseDate
, orderCloseTime
receberão valores no fechamento da ordem, você precisa apenas desenvolver entradas para orderHeadName
, buyer
, supplierName
, supplierContact
e needBuyerConfirm
.
Para a entrada do tipo
String
, arraste e solte Text ou Text Area (para entrada de diversas linhas) da paleta à direita e mude oLabel e selecione Binding para o texto de entrada, como mostra a Figura 6.
Para a entrada do tipo
Boolean
(needBuyerConfirm
), é possível arrastar e soltar Check Box da paleta e configurar as propriedades Label e Binding , da mesma forma que fez com o texto de entrada.Figura 6. Configure as propriedades de Input Text
Após coletar a entrada do usuário, você precisa de pelo menos um botão para enviar os valores do formulário para o backend. A Figura 7 mostra as propriedades de Button Group. Nas propriedades de Presentation , é possível configurar o Label e até mesmo adicionar alguns scripts em Validation Script para executar alguma validação.
Figura 7. Configure as propriedades de Button Group
O Coach Create Order Detail é mais complicado do que o Coach Create Order Head, pois é um número incerto de variáveis
orderDetail
ou orderDetail
pode ser uma lista. Como o número de instâncias de orderDetail
em uma ordem é determinado pelo usuário, é possível desenvolver o Coach com uma página e executar o loopback para a página. As Figuras 8 e 9 ilustram as variáveis e a implementação do Coach Create Order Detail.Figura 8. As variáveis do Coach Create Order Detail
Figura 9. A implementação do Coach Create Order Detail
É possível definir duas variáveis privadas:
orderDetailNum (Integer)
para registrar o número atual de entradas do usuárioOrderDetail
; e orderDetailTmp (OrderDetail)
para registrar o valor de entradas de usuário OrderDetail
na página do Coach.
Na página do Coach Order Detail, desenvolveremos as quatro propriedades a seguir para
orderDetailTmp
: shipDate
,productNumber
, quantity
e unitprice
. Outras propriedades serão geradas automaticamente ou definidas em um estágio posterior. As quatro propriedades têm três entradas de texto, que podem ser configuradas conforme exibido na Figura 6.productNumber
é um controle Single Select. A Figura 10 mostra as propriedades de apresentação de um Single Select. Os dados de um controle de seleção única podem ser manuais ou dinâmicos. Manual data tem duas colunas: Value é o valor real ao enviar o formulário para o backend, Display Text é o texto exibido na página. Neste exemplo, desenvolveremos a seleçãoproductNumber
usando manual data. Você aprenderá como usar dynamic data na Parte 5.
Dois botões na página do Coach Create Order Detail controlam a lógica. Quando um dos botões é clicado, o valor de
orderDetailTmp
é adicionado à lista tw.local.order.orderDetail
. Se o botão Save & Create Another Order Detail for clicado, o usuário será redirecionado à página do Coach Create Order Detail. Se o botão Next for clicado, a etapa Create Order Detail será concluída.Figura 10. Propriedades de Single Select
A Figura 11 mostra a implementação da lógica. No início,
orderDetailNum
tem um valor padrão de zero etw.local.orderDetailTmp
é instanciado como um novo tw.object.OrderDetail
.Figura 11. As designações anteriores e posteriores para Create Order Detail
Após o usuário enviar a página do Coach,
tw.local.orderDetailTmp
é adicionado à lista tw.local.order.orderDetail
, como mostra a Listagem 1.Listagem 1. Designações posteriores à execução
tw.local.order.orderDetail[tw.local.orderDetailNum] = new tw.object.OrderDetail(); tw.local.order.orderDetail[tw.local.orderDetailNum].shipDate = tw.local.orderDetailTmp.shipDate; tw.local.order.orderDetail[tw.local.orderDetailNum].productNumber = tw.local.orderDetailTmp.productNumber; tw.local.order.orderDetail[tw.local.orderDetailNum].quantity = tw.local.orderDetailTmp.quantity; tw.local.order.orderDetail[tw.local.orderDetailNum].unitPrice = tw.local.orderDetailTmp.unitPrice; tw.local.order.orderDetail[tw.local.orderDetailNum].orderDetailCode = tw.system.currentProcessInstanceID + tw.local.orderDetailTmp.productNumber; tw.local.order.orderDetail[tw.local.orderDetailNum].orderNumber = "ORDER_" + tw.system.currentProcessInstanceID + tw.local.orderDetailTmp.productNumber; tw.local.order.orderDetail[tw.local.orderDetailNum].updatedQuantity = tw.local.orderDetailTmp.quantity; tw.local.order.orderDetail[tw.local.orderDetailNum].updatedUnitPrice = tw.local.orderDetailTmp.unitPrice; tw.local.orderDetailNum = tw.local.orderDetailNum + 1; |
Após a conclusão dos Coaches Create Order Head e Create Order Detail, a ordem estará preenchida e o trabalho do Human Service Submit Purchase Order estará concluído. No entanto, é uma boa ideia mostrar um resumo da ordem para o usuário. A Figura 12 ilustra a implementação de um Coach View Order Summary.
A seção Order Head mostra o valor de
tw.local.order.orderHead
como o texto de saída. A seção Order Detail mostra o valor de tw.local.order.orderDetail
como um controle de tabela. O controle de tabela exibe o orderDetail
e é necessário apenas para configurar a propriedade Binding, parecida com a propriedade Text Input.Figura 12. Implementação do Coach View Order Summary
As Figuras 13, 14 e 15 ilustram o serviço humano Submit Purchase Order concluído. Quando o usuário inserir os valores paraOrder Head e clica em Next, a página Create Order Detail é exibida. O usuário pode criar quantos detalhes da ordem quiser, clicando no botão Save & Create Another Order Detail . Finalmente, o usuário recebe um resumo da ordem.
Figura 13. Coach Submit Purchase Order
Figura 14. Detalhes da ordem
Figura 15. Resumo da ordem
Neste documento, você aprendeu como usar os Coaches do Lombardi para desenvolver serviços humanos. Os recursos do Coach enriquecem a experiência do usuário em nossa amostra de processo de ordem de compra.
Na Parte 5, cobriremos recursos mais avançados do Coach, incluindo ligação de dados dinâmicos, o mecanismo de renderização em tempo de execução do Coach e como customizar o Coach.
- Centro de informações do IBM WebSphere Lombardi Edition 7.1.0
- WebSphere Lombardi edition
- Website do Business Process Modeling Notation (BPMN)
- Introdução ao BPMN (PDF)
- BPMN e Gerenciamento de processos de negócios
- Zona de BPM do developerWorks
- IBM BPM Journal
Xiao Xing Liang é engenheiro de software e trabalha para o Centro de Design SOA no Laboratório de Desenvolvimento na China. Ele é um desenvolvedor certificado pela IBM para o WebSphere Enterprise Developer e para o SOA Solution Designer. Seu foco atual está no controle SOA e em tópicos relacionados, incluindo WebSphere Service Registry and Repository, Rational Asset Manager, Tivoli Application Dependency Discovery Manager e Tivoli Change and Configuration Management Database.
Xi Ning Wang é engenheiro de equipe de software e líder de desenvolvimento de infraestrutura em nuvem, IBM SOA Advanced Technologies, IBM Software Group. Ele já projetou e desenvolveu tecnologias de SOA e soluções em projetos importantes. Atualmente, está focado nas áreas de computação em nuvem e solução de segmento de mercado. Ele foi designado como um autor contribuinte para o IBM developerWorks em 2009.
Xin Li é engenheiro de software no Laboratório de desenvolvimento da IBM China, onde se concentra no design e desenvolvimento relacionado ao SOA. Li Xin tem bastante experiência em integração de sistema de domínio de telecomunicações e também muito conhecimento sobre normas e tecnologias de telecomunicações.
Nenhum comentário:
Postar um comentário