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.
Visão geral do designer de Coach do Lombardi
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 complexa OrderDetail. 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 mais
tw.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
Iniciando o Script do Servidor de Saída
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 o Label 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ário OrderDetail ; 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ção productNumber
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 e
tw.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; |
Criando o Coach View Order Summary
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 para Order 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

Chang Hua Sun é engenheiro da equipe de software da equipe de otimização de serviço e desempenho dos negócios dentro do IBM Software Group, no qual ele desenvolve tecnologias e soluções de SOA e BPM.

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.