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 2: Usando BPD e serviços de integração, regra e humanos

Por: Xi Ning Wang 
Em: http://www.ibm.com/developerworks/br/websphere/library/techarticles/1106_liang/

A Parte 2 descreve como usar os recursos mais comuns do WebSphere Lombardi V7.1 (a partir de agora chamado de Lombardi) para modelar o processo de amostra. Vamos orientá-lo pela modelagem básica do processo do cenário de negócio, incluindo os seguintes recursos:
  • Processo da modelagem usando uma definição de processo de negócio (BPD)
  • Serviço de Integração
  • Serviço Humano
  • Serviço de Regra
No processo de amostra, o comprador envia uma ordem de compra usando a interface com o usuário baseada na web (web UI) e o sistema de gerenciamento de relacionamento com o cliente (CRM) envia automaticamente uma notificação ao fornecedor. Os fornecedores podem confirmar a ordem usando uma web UI com as seguintes opções: aceitar a ordem sem qualquer alteração, aceitar a ordem com alterações ou rejeitar a ordem.
No caso de aceitar a ordem, se o fornecedor elevar o preço unitário das mercadorias, o sistema precisará notificar o comprador para reconfirmar a ordem atualizada. O comprador tem as seguintes opções:
  • Se o comprador aceitar a ordem atualizada, o sistema irá gerar automaticamente a ordem de compra final.
  • Se o comprador não aceitar a ordem atualizada, o sistema enviará a notificação ao fornecedor e o processo de ordem de compra será interrompido.
Se o comprador não confirmar a ordem, o sistema gerará automaticamente a ordem de compra formal.
Um processo de negócio é uma coleção de atividades desenvolvidas para produzir um resultado específico para um objetivo específico, envolvendo interações humanas e do sistema. O processo pode incluir não apenas serviços de gerais de integração, atividades, gateways e serviços de regra, mas também usar eventos de timer, mensagem e exceção.
Ao modelar um processo, você está criando uma definição de processo de negócio (BPD) reutilizável. Uma BPD permite que você defina o fluxo de trabalho do processo para usuários finais criando uma lógica dentro de um processo e integrando com outros aplicativos e origens de dados.
Você pode executar as etapas abaixo para criar o aplicativo de processo de amostra desde o início, ou importar o aplicativo de processo pronto para uso fornecido para download com este artigo.
Para criar o aplicativo de processo de amostra, complete as seguintes etapas:
  1. Clique na guia Process Apps e clique em Create New Process App e forneça o Process App Name (por exemplo,Purchase Order Process), Acronym (por exemplo, POP. O acrônimo precisa ser exclusivo dentro de seu ambiente do Lombardi.) e, como opção, uma Description (por exemplo, Isso apresenta um exemplo de um processo para manipular uma ordem de compra.).
  2. Abra o Designer e selecione Create Business Process Definition (BPD).
  3. Clique na guia Process App e selecione Purchase Order Process na lista Process App para abrir o processo no Designer.
  4. No Designer, selecione Processes => Create New => Business Process Definition.
  5. Crie a BPD com o nome Purchase Order Process.
  6. Em seguida, você precisa criar linhas. As BPDs precisam incluir uma linha para cada sistema ou grupo de usuários que participa de um processo. Uma linha é o contêiner de todas as atividades a serem executadas por um sistema ou grupo de usuários específicos.
    Adicione linhas ao seu diagrama de processo para armazenar as atividades e eventos que ocorrem durante a execução do processo. Quando uma nova BPD é criada, ela contém duas linhas por padrão. Arraste o lado direito do ícone da linha no painel de detalhes até a linha existente para criar duas novas linhas. É possível especificar um nome e cor opcional para cada linha selecionando a linha e especificando o nome e a cor de apresentação da seção de propriedades.
    Em nosso exemplo, há quatro linhas no processo principal: Buyer, Supplier, CRM e ERP.
  7. Agora, você precisa criar grupos de participação. Esses grupos normalmente representam os grupos de usuário ou departamentos em uma organização de negócios. Na visualização Designer, clique no sinal de adição (+) ao lado deProcesses, selecione Participant Group e insira o nome do grupo de participantes.
    Em nosso exemplo, há quatro grupos de participantes: Buyer, Supplier, CRM e ERP.
  8. Em seguida, você criará as atividades e um gateway de decisão. Para fazer isso, arraste o elemento Activity na paleta direita até uma das linhas apropriadas do diagrama de processo para criar as atividades. Em seguida, arraste o elemento Decision Gateway até o diagrama e especifique Accept Order? como seu nome. Se o status da ordem for especificado como Accepted by supplier, o gateway de decisão irá para a atividade Need Buyer's Reconfirm? ; caso contrário, irá para a atividade Send Reject Notification to Buyer .
  9. Usando o mesmo processo, crie dois outros gateways de decisão: Need Confirm? (usando a variávelneedBuyerConfirm para descrever seu valor) e Buyer Accept? (usando o status da ordem para descrever seu valor). Se o status da ordem for especificado como Accepted by buyer, o gateway de decisão irá para a atividade Generate Order ; caso contrário, irá para a atividade Send Reject Notification to Supplier .
  10. Para cada BPD criada, é necessário declarar variáveis para capturar os dados do negócio passados de etapa a etapa em seu processo. Para fazer isso, na guia Variables , clique em Add private para adicionar uma variável privada chamada Order com um tipo de Order e uma variável privada chamada needReconfirm com um tipo de Boolean.
Você criou o aplicativo de processo de amostra. O processo de negócio resultante é exibido na Figura 1.

Figura 1. Processo de ordem de compra
 
Um serviço de integração é normalmente usado quando você deseja integrar com um sistema externo para completar uma tarefa. Por exemplo, é possível desenvolver um serviço de integração que chama um serviço da web para executar alguma lógica de negócio. Os serviços de integração são os únicos serviços que podem incluir integração de serviço da web e componentes de integração Java™ .
Em nosso exemplo, usamos uma integração de serviço da web para implementar a função de notificação invocada no processo. Para criar esse serviço, faça o seguinte:
  1. Selecione Implementation => Integration Service e crie um serviço de integração chamado SendNotification.
  2. No diagrama do novo serviço de integração SendNotification, arraste Web Service Integration da paleta direita e o renomeie como Send Notification by Email. Em seguida, use o fluxo de sequência para vinculá-lo ao início e ao término do diagrama do serviço de integração.
  3. Para descobrir o serviço da web, na guia Implementation da visualização de propriedade, especifique o URI WSDL do serviço da web e clique em Discover, conforme mostra a Figura 2.
    É possível obter os arquivos WSDL e XSD da seção Downloads deste artigo e desenvolver seus serviços da web customizados com base nesses arquivos WSDL e XSD. Em seguida, é possível implementar esses serviços da web em seu servidor de aplicativo.


    Figura 2. Descubra o serviço da web

  4. Clique em Generate Types, aceite as opções padrão para gerar os tipos de variável. Isso gera tipos de variável, conforme mostra a Figura 3.

    Figura 3. Tipos de variável gerados fornecidos pelo serviço da web

  5. Selecione a integração de serviço da web Send Notification by Email e, na visualização de propriedades, selecioneNotify Supplier na lista de operação descoberta.
  6. Na guia Variable , clique em Add Input para criar uma variável de entrada. Especifique o nome da variável comoinputOrder e mude o Variable Type para Order.
  7. Repita a etapa anterior para criar uma variável de saída chamada outputResult com um tipo de String.
  8. Na propriedade Data Mapping do serviço de integração SendNotification, mapeie inputOrder para order eoutputResult para result.
Em nosso exemplo, usamos o componente de integração Java para integrar a classe Java externa, a fim de implementar o cálculo do preço e a função de pagamento invocados no processo.
  1. Antes de criar o serviço de integração, adicione o arquivo JAR que contém as classes clicando no sinal de adição (+) ao lado de Files na biblioteca na visualização Designer e selecione Server File. Na caixa de diálogo New File, clique emBrowse e selecione o arquivo payment.jar fornecido na seção Downloads .
  2. Crie um serviço de integração, arraste um componente de integração Java da paleta até o diagrama de serviço e use as linhas sequenciais para conectar o componente com os eventos Start e End.
  3. Clique no componente de integração Java no diagrama e clique em Definition nas propriedades. Clique em Select ao lado de Java Class e escolha o arquivo JAR e a classe, como mostra a Figura 4.

    Figura 4. Integração Java 

Um serviço humano é o único tipo de serviço que pode conter coaches e interação com o usuário. Desenvolva um serviço humano quando quiser uma etapa em sua BPD para a criação de uma tarefa interativa que possa ser executada pelos participantes do processo em uma web UI. Quando você desenvolve serviços humanos, inclui coaches, que são os formulários baseados na web que fornecem dados relacionados ao processo aos usuários finais, além de coletar dados desses usuários. Coaches permitem que você adicione facilmente campos e controles padrão, como botões de opção, menus suspensos e muito mais.
Crie um serviço humano chamado Submit Purchase Order executando as etapas abaixo:
  1. Abra a BPD Purchase Order Process, clique com o botão direito do mouse na atividade Submit Purchase Order e selecione Activity Wizard na lista de opções.
  2. Na caixa de diálogo Set Up Activity, especifique Human Service (Service with human interaction) como o tipo de serviço e crie um novo serviço chamado Submit Purchase Order e, em seguida, clique em Next.
  3. Na caixa de diálogo Parameters, selecione a ordem de variável do processo existente para usar como entrada e saída para o novo serviço e clique em Finish. O novo serviço é criado e anexado automaticamente à atividade.
  4. O novo serviço inclui um único coach. Clique na guia Coaches e clique no componente de coach listado para abrir o Coach Designer.
  5. Arraste as variáveis orderHead e orderDetail para a página de formulário do coach, como mostra a Figura 5.

    Figura 5. Coach para Submit Purchase Order


    Em geral, os coaches são altamente customizados para renderizar uma aparência específica em uma implementação típica do Lombardi. Por exemplo, talvez você queira customizar os coaches para usar os logotipos e cores corporativas. Em muitos casos, é possível atender aos seus requisitos de customização configurando as propriedades de apresentação e visibilidade disponíveis na interface do Designer. Na Parte 3 desta série, você aprenderá sobre os recursos avançados dos coaches.
Use um serviço de regra quando quiser uma condição para determinar o caminho de execução ou fazer designações de variáveis com base em possíveis valores de outras variáveis. Por exemple, quando uma determinada condição é avaliada como verdadeira, a expressão JavaScript fornecida como a ação é executada. A ação de um serviço de regra não pode invocar diretamente integrações Java ou de serviço da web. É possível chamar um serviço de regra a partir de qualquer tipo de serviço e um serviço de regra pode chamar outros serviços aninhados.
Em nosso cenário, se o fornecedor mudar a quantidade ou o preço das mercadorias, o serviço de regra validará a mudança na ordem seguindo as regras de negócio abaixo:
  • Se a taxa de quantidade adicionada for menor ou igual a 10%, e o preço atualizado não for superior ao preço original, o comprador não precisará reconfirmar.
  • Se a taxa de quantidade adicionada for menor ou igual a 10%, mas o preço atualizado for superior ao preço original, o comprador precisará reconfirmar.
  • Caso contrário, se a taxa de quantidade adicionada for superior a 10%, o comprador também precisará reconfirmar.
Como há diversos itens dentro de uma ordem, o serviço de regra precisa ser executado repetidamente. Para conseguir isso, selecione a atividade Need Buyer's Reconfirm? e clique em Step nas propriedades. Em seguida, selecione a opção Simple Loop na lista suspensa Loop Type em Behavior. Em Simple Looping, especifique o tamanho dos itens da ordem como o valor máximo de loop, como mostra a Figura 6.

Figura 6. Loop simples
 
Crie o serviço de regra chamado Need Buyer's Reconfirm? executando as seguintes etapas:
  1. Abra a BPD Purchase Order Process, clique com o botão direito do mouse na atividade Need Buyer's Reconfirm? e selecione Activity Wizard.
  1. Na caixa de diálogo Set Up do Activity Wizard, especifique Rule Service (Rule based service without human interaction)como o tipo de serviço e crie um novo serviço chamado NeedReconfirm? e, em seguida, clique em Next.
  2. Na caixa de diálogo Parameters, especifique a variável de processo existente needReconfirm como a saída para esse novo serviço e clique em Finish. O novo serviço de regra é criado e automaticamente anexado à atividade.
  3. Crie uma variável de entrada com o nome de orderDetail e um tipo de variável de OrderDetail. Em seguida, crie duas variáveis privadas chamadas updatedQuantityPercent e updatedUnitPricePercent usando o mesmo tipo decimal.
  4. Adicione uma atividade de script de serviço antes da atividade de script de regra e implemente essa atividade usando a expressão JavaScript, como mostra a Listagem 1.

Listagem 1. Inicialização para o serviço de regra
if(tw.local.orderDetail.quantity == 0 ){
  tw.local.updatedQuantityPercent = 1;
}else{
  tw.local.updatedQuantityPercent = (tw.local.orderDetail.updatedQuantity -
tw.local.orderDetail.quantity)*1.00/tw.local.orderDetail.quantity;
}

if(tw.local.orderDetail.unitPrice == 0 ){
  tw.local.updatedUnitPricePercent = 1;
}else{
  tw.local.updatedUnitPricePercent = (tw.local.orderDetail.updatedUnitPrice -
tw.local.orderDetail.unitPrice)*1.00/tw.local.orderDetail.unitPrice;
}

  1. Clique duas vezes no script de regra para abri-lo para edição. Clique na guia Rule e clique no ícone Add a variable (column) to the rule (o sinal de adição verde no lado superior esquerdo) para adicionar as variáveisupdatedQuantityPercent e updatedUnitPricePercent.
  2. Especifique o valor de cada célula de acordo com a regra de negócio descrita na seção anterior. O resultado deve parecer com a Figura 7.

    Figura 7. Script de regra 

  3. Finalmente, é necessário especificar o mapeamento de entrada entre a atividade Need Buyer's Reconfirm? e o serviço de regra. Neste exemplo, o valor para a entrada é: tw.local.order.orderDetail[tw.system.step.counter].
O Lombardi Authoring Environment Inspector é fundamental para uma abordagem iterativa do desenvolvimento de processo. Com o Inspector, os desenvolvedores podem executar processos e serviços no servidor do Process Center ou em servidores remotos de processo de tempo de execução. Toda uma equipe de desenvolvimento pode usar o Inspector para executar e testar o processo.
Para executar um processo e gerenciar as instância em execução e concluídas desse processo no Inspector, faça o seguinte:
  1. Abra o Purchase Order Process e clique no ícone Run Process no lado superior direito. Ao ser questionado se deseja alterar a interface do Inspector, clique em Yes.
  2. Na guia Process Instances , é possível ver todas as instâncias de processo atualmente ativas e concluídas. Para controlar as instâncias, selecione uma instância na lista e clique na opção da barra de ferramentas que você deseja. Por exemplo, para interromper uma instância iniciada anteriormente, clique na instância e clique no ícone para encerrá-la.
  3. Clique na tarefa nova ou recebida e clique no ícone Run task no lado superior direito, como mostra a Figura 8. Em alguns casos, talvez seja necessário selecionar uma conta de usuário e senha para executar uma tarefa. Isso é controlado por designações e roteamento de linha para atividades.

    Figura 8. Execute a tarefa Submit Purchase Order

  4. Selecione Task:Submit Purchase Order e clique em Runs the selected task. Na BPD da ordem de compra, o coach para a tarefa Submit Purchase Order é aberto em um navegador, como mostra a Figura 9.
  5. Preencha os campos e clique no botão OK . A BPD continua na próxima etapa. O Inspector mostra o progresso movendo o token para a próxima etapa no diagrama de BPD e na visualização de árvore.

    Figura 9. Envie a interface com o usuário do coach Purchase Order

Este artigo mostrou como usar alguns dos recursos mais comuns do WebSphere Lombardi Edition V7.1 para modelar um processo de negócio. Esses recursos comuns incluem BPD, serviços de integração, serviços humanos e serviços de regra. Na Parte 3, você aprenderá a usar alguns dos recursos avançados do WebSphere Lombardi Edition V7.1 a fim de enriquecer o processo de amostra para atender aos requisitos e mais complexos e à interação com o usuário.

Shuang Liang photo
Shuang Liang é engenheiro da equipe de software da equipe de Otimização de serviço e desempenho dos negócios dentro do IBM Software Group e possui experiência no desenvolvimento de tecnologias e soluções de SOA e BPM.
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.

Nenhum comentário:

Postar um comentário