Postagem em destaque

Procurando Profissional em Análise de Processos de Negócios, BPM, BPMS e Melhoria de Processos, para atuar na Região Metropolitana de Belo Horizonte?

Marco Gandra Brasileiro – Casado 41 anos - CNH B Nascido em Belo Horizonte e-mail gandraribeiro@gmail.com ...

Pesquisar neste blog

10 de jun de 2013

Modelando seus processos de negócio com o IBM WebSphere Lombardi Edition, Parte 4: Desenvolvendo um serviço humano usando Coaches

Por: Chang Hua Sun 
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 
 
  1. Mostra todos os Coaches no serviço aberto atualmente. É possível alterar ou implementar a página de Coach clicando em um dos Coaches.
  2. 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.
  3. 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;
  4. 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.
  5. 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 orderHeadorderDate e orderTime são iniciados como mostra a Figura 4, e orderCloseDateorderCloseTime receberão valores no fechamento da ordem, você precisa apenas desenvolver entradas para orderHeadNamebuyersupplierNamesupplierContact 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áveisorderDetail 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 orderDetailTmpshipDate,productNumberquantity 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 deorderDetailTmp é 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.

Chang Hua Sun photo
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 photo
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 photo
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.
Xi Lin photo
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