Pesquisar neste blog

17 de nov. de 2011

Bonita para Gerenciamento de Processos de Negócios, Parte 2: Configuração de Formulários e Variáveis

Por: Bilal Siddiqui
Em:http://www.ibm.com/developerworks/br/library/j-bpm2/index.html

Resumo:  O Bonita Open Solution, uma ferramenta de software livre de gerenciamento de processos de negócios (BPM) baseada em Java™, permite modelar, configurar e executar fluxos de trabalho de negócios sem escrever uma única linha de código Java. Este artigo conclui uma série com duas partes demonstrando o uso do Bonita para projetar um fluxo de trabalho para reserva de quartos de hotel. Continuando do ponto no qual a Parte 1 parou, você irá configurar variáveis e projetar formulários de interação com o usuário para o fluxo de trabalho e em seguida irá conectá-los a um banco de dados e a um mecanismo de relatório. Quando a configuração estiver concluída, será possível visualizar o processo de reserva de quartos em ação.


A Parte 1 deste artigo com duas partes apresentou o Business Process Modeling Notation (BPMN) e o Bonita Open Solution, uma ferramenta de fluxo de trabalho de software livre baseada em Java. Você usou o Bonita para iniciar um projeto para reserva de quartos de hotel. Agora na parte 2, você irá configurar variáveis para controlar os dados do fluxo de trabalho e irá projetar formulários no fluxo de trabalho de reserva de quartos para interação com o usuário. Em seguida você irá conectar o seu fluxo de trabalho com o banco de dados PostgreSQL e o mecanismo de relatório JasperReports, para que ele possa ler as informações de reserva do banco de dados e gerar relatórios. Por fim, você irá executar o fluxo de trabalho para visualizar o processo de reserva de quartos em ação.
Inicie o Bonita e abra o arquivo RoomBookingDiagram_1.0.proc salvo no final da Parte 1. (O arquivo também está disponível no código de origem deste artigo para download.) O fluxo de trabalho contém as atividades EnterRoomInformation,CheckRoomAvailability e BookRoom conforme mostrado na Figura 1:

Figura 1. O fluxo de trabalho de reserva de quartos no Bonita
 
A próxima etapa é projetar um formulário simples para a atividade EnterRoomInformation como a mostrada na Figura 2:

Figura 2. Um Formulário Simples de Entrada de Dados
 
O formulário na Figura 2 contém um título (EnterRoomInformation), uma lista suspensa com rótulo (Type of room required) e um botão chamado Check Room Availability. Ele também contém alguns outros elementos gráficos como o logotipo do Bonita, que faz parte do modelo padrão do Bonita. (O Bonita permite o uso de modelos customizados, mas para simplificar, este artigo usa o modelo padrão.)
Para iniciar a criação deste novo formulário para a atividade EnterRoomInformation, clique na atividade para exibir suas propriedades na janela de detalhes. Clique na guia Forms na janela de detalhes e clique no botão Add . Uma caixa de diálogo Create a new Form será exibida, conforme mostrado na Figura 3:

Figura 3. Caixa de diálogo para criação de novo formulário
 
Observe na Figura 3 que o Bonita preencheu EnterRoomInformation como o nome do novo formulário para você no campo Name. Também é possível visualizar uma caixa de texto Description na caixa de diálogo, na qual é possível inserir uma descrição para o formulário, como Um formulário mostrando uma lista suspensa de forma que o recepcionista possa escolher o tipo de quarto desejado pelo cliente.
Logo abaixo da caixa de texto Description, é possível visualizar o botão Add widgets based on... e dois botões chamados Select All eUnselect All. Abaixo dos botões está uma caixa de seleção com o rótulo isRequiredRoomTypeAvailable. Essa caixa de seleção, que é selecionada por padrão, representa a variável isRequiredRoomTypeAvailable configurada na seçãoIncluindo no fluxo de trabalho um sinalizador de disponibilidade de quarto da Parte 1.
Relembre da Parte 1 que a variável isRequiredRoomTypeAvailable é, na verdade, um sinalizador que a atividadeCheckRoomAvailability configura. O fluxo de trabalho usa esse sinalizador para decidir se a atividade BookRoom pode ocorrer ou se o controle deverá ser transferido de volta para a atividade EnterRoomInformation .
Como o formulário EnterRoomInformation que está sendo projetado possui somente um campo (Type of room required, que é uma lista suspensa), é possível deduzir que a variável (ou sinalizador) isRequiredRoomTypeAvailable não é necessária para projetar este formulário. Você deve estar pensando porque então a caixa de diálogo Create a new Form do formulário EnterRoomInformation mostra essa variável como uma caixa de seleção.
Normalmente, ao projetar e implementar formulários na linguagem Java, cada campo (como caixas de texto ou listas suspensas) no formulário é associado ao objeto Java que controla os dados do aplicativo. Normalmente chamados de model beans, tais objetos são geralmente usados na arquitetura Model-View-Controller (MVC) com a qual a maioria dos programadores Java é familiarizado (consulte a seção Recursos). O Bonita usa o mesmo conceito para associar os campos às variáveis de processo, permitindo a construção rápida de formulários diretamente das variáveis de processo. Isso cria de forma simples um formulário padrão que contém todos os campos correspondentes a cada variável escolhida. Essa é uma forma rápida de criar um formulário que pode ser editado e padronizado de acordo com os seus requisitos.
Como isRequiredRoomTypeAvailable é uma variável global, ela é válida no contexto do fluxo de trabalho completo de reserva de quartos assim como todas as atividades individuais do fluxo de trabalho. E nenhuma outra variável foi definida para o fluxo de trabalho até o momento. É por isso que essa é a única variável considerada pelo Bonita para uso na construção do formulário EnterRoomInformation. Ele simplesmente inclui a variável global isRequiredRoomTypeAvailable na lista de variáveis que podem ser usadas para projetar o formulário.
Ao clicar no botão Finish na parte inferior da caixa de diálogo Create a new Form agora, o Bonita criará um formulário que incluirá um campo correspondente à variável isRequiredRoomTypeAvailable . Mas, como você conhece a lógica de negócios do seu fluxo de trabalho de reserva de quartos, a variável isRequiredRoomTypeAvailable não será necessária para projetar o formulário EnterRoomInformation. Então, na caixa de diálogo Create a new Form, você deverá desmarcar a caixa ao lado da variável isRequiredRoomTypeAvailable e clicar em Finish. O Bonita irá configurar automaticamente um formulário EnterRoomInformation vazio, conforme mostrado na Figura 4:

Figura 4. Formulário vazio recém-configurado para a atividade EnterRoomInformation 
 
Agora você deve confirmar uma variável para o campo Type of room required. Essa variável irá controlar todos os tipos de quarto disponíveis, de forma que o recepcionista possa escolher o tipo desejado pelo cliente. Chame essa variável deTypesOfRoomsAvailable. O campo Type of room required no formulário EnterRoomInformation irá usar a variávelTypesOfRoomsAvailable para buscar os diferentes tipos de quarto disponíveis.
A variável TypesOfRoomsAvailable só é necessária no formulário EnterRoomInformation. Isso a torna uma variável local.
Para iniciar a criação da variável TypesOfRoomsAvailable, clique na atividade EnterRoomInformation no quadro branco do Bonita (visualização do design). Os detalhes da atividade EnterRoomInformation irão aparecer na janela de detalhes. Clique na guia Data na janela de detalhes e clique no botão Add . Uma caixa de diálogo Add a new variable, similar a da Figura 9 da Parte 1 (usada para configurar a variável global isRequiredRoomTypeAvailable ) será exibida. Ela inclui os campos Name (obrigatório), Description, Data type e Default value. Insira TypesOfRoomsAvailable no campo Name e Uma variável para controlar os diferentes tipos de quartos disponíveis no hotel na caixa de texto Description, conforme mostrado na Figura 5:

Figura 5. Caixa de diálogo para adicionar uma nova variável
 
Agora observe o campo Data type na Figura 5. Ao configurar a variável isRequiredRoomTypeAvailable na Figura 9 da Parte 1, você escolheu variáveis booleanas como o valor para o Data type, pois a variável isRequiredRoomTypeAvailable é um sinalizador que pode ser verdadeiro ou falso. A variável TypesOfRoomsAvailable precisa ser uma lista de opções — os tipos de quarto disponíveis — então selecione List of options na lista suspensa ao lado do campo Data type.
Ao selecionar List of options como o tipo de dado, um novo grupo de três campos (Name, Description e List) e quatro botões (AddUpDownRemove) aparecerá na parte inferior da caixa de diálogo Add a new variable, conforme mostrado na Figura 6:

Figura 6. Caixa de diálogo para adição de uma nova variável, com campos adicionais para o tipo de dado List of options
 
O Bonita mostra campos adicionais, pois precisa saber os tipos atuais de quartos que estão disponíveis para poder associar a lista de tipos com a variável TypesOfRoomsAvailable.
Como é possível ver na Figura 6, os campos Name e List são marcados com um asterisco para indicar que são obrigatórios. Este é um recurso de reutilização do Bonita que permite nomear uma lista de valores. Posteriormente, será possível reutilizar a mesma lista com alguma outra variável.
Digite ListOfRoomTypes no campo Name e Estes são os tipos de quartos disponíveis como a descrição. Em seguida, para inserir os valores atuais na lista, clique em Add . Uma caixa de diálogo Add an item será exibida, conforme mostrado na Figura 7, permitindo a inserção de diferentes tipos de quartos, um por um:

Figura 7. Caixa de diálogo para adição de valores no tipo de dado List of options
 
Insira somente dois valores na lista. Primeiro, digite Single no campo Item name da caixa de diálogo Add an item e clique emOK. O valor aparecerá na caixa de texto List da caixa de diálogo Add a new variable mostrada na Figura 6. Clique no botão Addnovamente, mas dessa vez digite Double no campo Item name e clique em OK. A caixa de diálogo Add a new variable foi concluída. Agora clique no botão OK destacado na Figura 8:

Figura 8. Configuração completa da variável TypesOfRoomsAvailable 
 
Clique no botão Finish na parte inferior da caixa de diálogo concluída Add a new variable. A caixa de diálogo desaparecerá e a variável TypesOfRoomsAvailable aparecerá na guia Data da atividade EnterRoomInformation , conforme mostrado na Figura 9:

Figura 9. A variável TypesOfRoomsAvailable adicionada à atividadeEnterRoomInformation 
 
Você configurou com sucesso a variável TypesOfRoomsAvailable, então agora é possível usar a variável para adicionar a lista suspensa Type of room required ao seu formulário EnterRoomInformation.
Enquanto a atividade EnterRoomInformation estiver selecionada no quadro branco, clique na guia Forms na janela de detalhes. Clique em EnterRoomInformation na lista de formulários e em seguida clique no botão Edit destacado na Figura 10:

Figura 10. Editando um formulário do Bonita
 
O formulário vazio EnterRoomInformation desenvolvido na seção Criando um Novo Formulário será exibido em uma janela de edição de formulário, que possui uma paleta de componentes à esquerda e a visualização do design do formulário à direita. A visualização do design do formulário mostra células retangulares. Clique no componente Select na paleta de componentes e arraste-o para a primeira célula do formulário, conforme mostrado na Figura 11:

Figura 11. Arrastando um componente da paleta para o seu formulário
 
Um novo campo com o rótulo Select1 é criado no formulário, conforme mostrado na Figura 12:

Figura 12. Um componente Select criado na visualização do design do formulário
 
Agora clique em Select1. A janela de detalhes exibirá as propriedades do componente, conforme mostrado na Figura 13:

Figura 13. Janela de detalhes mostrando as propriedades de um campo
 
Insira RequiredRoomType e Type of room required como valores nos campos Name e Show label respectivamente. O campo novo agora mostrará Type of room required como o seu rótulo, conforme mostrado na Figura 14:

Figura 14. Rótulo atualizado para o campo Type of room required
 
A lista suspensa do campo Type of room required deve mostrar os tipos de quartos disponíveis para escolha pelo recepcionista. Então a próxima etapa é preencher a lista suspensa com os tipos de quarto usando a variávelTypesOfRoomsAvailable configurada na seção Configurando uma Variável para Controlar uma Lista de Opções anterior.
Com o campo Type of room required selecionado na visualização do design do formulário, clique na guia Data na janela de detalhes. Observe que essa guia inclui quatro campos: Available Values, Initial value, Expression e save to, conforme mostrado na Figura 15. Esses campos de formulário permitem a associação de variáveis ao campo.

Figura 15. A guia Data mostrando as variáveis associadas ao campo
 
Clique na lista suspensa ao lado do campo Available Values e selecione a variável typesOfRoomsAvailable como o seu valor. Isso preenche os tipos de quartos na lista suspensa ao lado do campo Type of room required no formulário EnterRoomInformation.
Agora clique na lista suspensa ao lado do campo Initial value e selecione Single. Isso configurará Single como o valor inicial selecionado por padrão para o campo Type of room required quando o formulário EnterRoomInformation for apresentado ao usuário. Agora a guia Data deve estar igual a guia mostrada na Figura 16:

Figura 16. Guia Data do RequiredRoomType após a seleção do valor inicial padrão
 
O campo Expression da guia Data permite a gravação de uma expressão usada pelo Bonita para avaliar o valor de uma variável especificada pelo campo save to. Esse recurso será útil para processar a entrada do usuário antes de salvá-la na variável. No entanto, não será necessário executar nenhum processamento da entrada do usuário, então deixe o campo Expression com o seu valor padrão.
A próxima atividade do fluxo de trabalho, CheckRoomAvailability, precisa saber o tipo de quarto requerido para consultar a disponibilidade no banco de dados de reserva de quarto do hotel. É necessário definir uma variável do tipo texto no nível do fluxo de trabalho para armazenar a entrada do usuário. Então crie uma variável chamada requiredRoomType e configure o seu tipo de dado como Text, usando as etapas descritas na seção Configurando uma Variável para Controlar uma Lista de Opções.A variável requiredRoomType agora será listada na lista suspensa ao lado do campo save to. Ao selecionar esse valor na lista suspensa, a caixa de seleção à esquerda do campo save to também será selecionada, conforme mostrado na Figura 17. Isso porque agora o Bonita sabe que o campo save to tem o nome de uma variável para armazenar a entrada do usuário.

Figura 17. Campos Expression e save to da guia Data do campo RequiredRoomType
 
A configuração dos campos e variáveis do formulário EnterRoomInformation foi concluída. Agora é necessário configurar um botão no formulário para a recepcionista clicar após escolher o tipo de quarto requerido.

Os botões next e previous

Na Figura 18, o campo Field Type possui uma lista suspensa ao lado com o valor selecionado Submit Button. Os outros valores possíveis são Next Button e Previous Button. Os botões do tipo next e previous são usados quando for necessário reunir uma grande quantidade de dados do usuário que não couber dentro de um único formulário. Nesse caso, os dados são divididos em uma série de formulários e os botões next e previous são configurados em cada formulário da série. O Bonita gerencia internamente a navegação entre os formulários na série.
O Bonita fornece três tipos de botões: submit, next e previous. O botão do tipo submit envia os dados do formulário para processamento: quando um usuário clica no botão, os dados do formulário são enviados e a próxima atividade no fluxo de trabalho ocorre. Na visualização do design do formulário EnterRoomInformation, é possível visualizar um botão Submit na parte inferior do formulário. O Bonita colocou automaticamente esse botão durante a criação do novo formulário. É necessário somente alterar o rótulo do botão de Submit para Check Room Availability. O restante já foi configurado pelo Bonita.
Clique no botão Submit na visualização do design. A janela de detalhes exibirá as propriedades do botão, conforme mostrado na Figura 18:

Figura 18. Janela de detalhes mostrando as propriedades do botão Submit
 
Digite Check Room Availability no campo Show label na janela de detalhes. Isso irá alterar o rótulo do botão — e concluirá a configuração do formulário EnterRooomInformation.

Usando o PostgreSQL

O arquivo Readme.txt no download do código de origem deste artigo fornece instruções sobre como configurar uma instalação do PostgreSQL e preencher o banco de dados com dados de amostra para uso com o fluxo de trabalho de reserva de quartos.
A atividade CheckRoomAvailability irá consultar o banco de dados de reserva de quartos do hotel para obter a disponibilidade do tipo de quarto requerido. Vamos usar o PostgreSQL, um popular banco de dados de software livre, para controlar os dados de reserva de quartos. O Bonita fornece diversos conectores que podem ser configurados para conectá-lo aos aplicativos externos. Você irá configurar o conector PostgreSQL do Bonita para conectar a sua atividade CheckRoomAvailability ao banco de dados de reserva de quartos do hotel.
Para configurar o conector PostgreSQL do Bonita, você irá:
  1. Adicionar um conector PostgreSQL à atividade CheckRoomAvailability.
  2. Gravar uma consulta SQL usando a variável requiredRoomType.
  3. Armazenar a saída da consulta SQL na variável isRequiredRoomTypeAvailable no nível do fluxo de trabalho que será usada posteriormente por outros elementos de BPM para tomadas de decisão.
Selecione a atividade CheckRoomAvailability no quadro branco para exibir as suas propriedades na janela de detalhes. Clique na guia Connectors na janela de detalhes, conforme mostrado na Figura 19:

Figura 19. Guia Connectors da atividade CheckRoomAvailability
 
A guia Connectors ainda não possui conectores para a atividade CheckRoomAvailability. Para adicionar um conector para PostgreSQL, clique no botão Add para abrir a caixa de diálogo Select a connector, conforme mostrado na Figura 20:

Figura 20. Adicionado um conector PostgreSQL a uma atividade
 
O conector PostgreSQL está abaixo do item Database na lista de conectores. Clique duas vezes no item Database e em seguida selecione a opção PostgreSQL - Execute a query on a PostgreSQL DB e clique em Next, conforme mostrado na Figura 21:

Figura 21. Conector de banco de dados PostgreSQL selecionado dos conectores de banco de dados do Bonita
 
Em seguida você verá a caixa de diálogo Name the connector, mostrada na Figura 22, que solicita a inserção de um nome, uma descrição e um evento que ativará o conector:

Figura 22. Propriedades do conector PostgreSQL do banco de dados do hotel
 
Insira HotelDB e Conector PostgreSQL para a atividade CheckRoomAvailability nos campos Name e Description, respectivamente.
O campo Select event permite a escolha do conector no início ou no término da atividade CheckRoomAvailability. Como a atividade CheckRoomAvailability no seu fluxo de trabalho de reserva de quartos é somente uma consulta de banco de dados, não importa se o conector for ativado no início ou no término da atividade. Então deixe o campo Select event com o seu valor padrão.
O último campo na caixa de diálogo Name the connector é If connector fails.... Na lista suspensa ao lado do campo, é possível escolher entre duas opções caso ocorra um problema na comunicação com o banco de dados: gerar um erro ou ignorar. Para simplificar, deixe também o campo If connector fails... com o valor padrão, para gerar um erro se o conector com o banco de dados falhar.
Clique no botão Next. A próxima caixa de diálogo solicitará a inserção das informações de conexão ao banco de dados, incluindo o nome do banco de dados, o nome de usuário, a senha e o nome e a porta do servidor no qual o banco de dados está hospedado. Esses valores dependerão da configuração do seu banco de dados. A Figura 23 mostra os valores usados por mim:

Figura 23. Caixa de diálogo de conexão com o banco de dados PostgreSQL
 
Após inserir as informações de conexão com o banco de dados, clique no botão Next.
Agora é exibida uma caixa de diálogo de consulta, conforme mostrado na Figura 24, na qual é possível inserir uma consulta SQL para verificar a disponibilidade de quartos:

Figura 24. Inserindo uma consulta SQL
 
É sabido que a variável requiredRoomType controla a seleção feita pelo usuário. Então a consulta SQL deve verificar a disponibilidade desse tipo de quarto, usando a variável requiredRoomType. Insira a consulta a seguir na caixa de texto Query:
 Select "Availability" from "RoomInfo" WHERE "RoomType" =
                '${requiredRoomType}' AND "Availability" = TRUE

Essa consulta escolhe todos os registros cuja coluna de disponibilidade é igual a true da tabela RoomInfo no PostgreSQL.
O Bonita irá substituir ${requiredRoomType} pelo valor da variável requiredRoomType antes de executar a consulta. Então, se o recepcionista selecionar Single no formulário como o tipo de quarto requerido, a consulta SQL real que será executada será:
Select "Availability" from "RoomInfo" where "RoomType" = 'Single'
                AND "Availability" = TRUE

Dessa forma o Bonita permite a gravação de consultas SQL dinâmicas decididas no tempo de execução.
É necessário armazenar a consulta SQL na variável isRequiredRoomTypeAvailable configurada como uma variável global na Parte 1. Clique no botão Next e a caixa de diálogo Execute a query on a PostgreSQL DB será exibida, permitindo a associação da saída de uma consulta SQL a uma variável do Bonita. Digite rowSet.getValues().asBoolean() na caixa de combinação Connector output e selecione isRequiredRoomTypeAvailable na lista suspensa Destination variable, conforme mostrado na Figura 25:

Figura 25. Associando a saída de uma consulta SQL a uma variável do Bonita
 
O método rowSet.getValues().asBoolean() irá inserir true como o valor da variável isRequiredRoomTypeAvailable se o tipo de quarto requerido estiver disponível para reserva.
O seu fluxo de trabalho foi conectado ao banco de dados. Agora é necessário executar a última etapa da configuração do fluxo de trabalho: projetar o formulário de reserva de quartos para reunir as informações do cliente e reservar o quarto. Nesta etapa, defina as variáveis locais CustomerNamePhoneNumberBookingDate para controlar as informações do cliente. Em seguida, use a tela Create a new form (consulte a Figura 3) para projetar o novo formulário. Por fim, configure um conector e grave uma consulta SQL para enviar as informações de reserva de quartos para o banco de dados. Como todos esses procedimentos já foram demonstrados, a criação desse formulário será um exercício para você. O arquivo RoomBookingDiagram_2.0.proc nocódigo de origem deste artigo contém a iteração final do fluxo de trabalho de reserva de quartos.
A configuração do fluxo de trabalho completo de reserva de quartos foi concluída. Antes de demonstrar a execução desse fluxo de trabalho, vou mostrar como integrar o JasperReports na atividade EnterRoomInformation. A integração Bonita-JasperReports é útil em aplicativos de BPM, pois os recursos de relatório são frequentemente necessários em cenários reais, como em processos de reserva de quartos de hotel. E o JasperReports é um dos mais populares mecanismo de relatório de software livre.
É necessário instalar o JasperReports antes de usá-lo com o Bonita. Acesse o Web site do JasperReports para fazer o download e obter instruções de instalação (consulte a seção Recursos).
O processo de configuração do JasperReports com a atividade EnterRoomInformation é similar às etapas executadas na seção Conectando o Bonita ao PostgreSQL. Selecione a atividade EnterRoomInformation no quadro branco, clique na guiaConnectors e clique em Add. A caixa de diálogo Name the connector será exibida. Em seguida selecione a opção Create report - Create a Jasper Report from a database no item Jasper na caixa de diálogo Select a connector. Na caixa de diálogo Name the connector, insira BookingSummaryReport como o nome do conector.
Em seguida, a caixa de diálogo Database access information será exibida, conforme mostrado na Figura 26, solicitando as informações necessárias para conexão do JasperReports com o seu banco de dados:

Figura 26. Inserindo as informações de acesso ao banco de dados para o JasperReports
 
Insira org.postgresql.Driver no campo Database driver. org.postgresql.Driver é o driver JDBC, necessário sempre que for utilizar o banco de dados PostgreSQL. Os valores dos outros bancos mostrados na Figura 26 são os valores que eu inseri na minha configuração: jdbc:postgresql://localhost:5432/hotelDB no campo JDBC URL e postgres nos campos User name e Password.
Consulte a seção Recursos para obter mais detalhes sobre a conexão do JasperReports com bancos de dados relacionais como o PostgreSQL.
Clique no botão Next e a caixa de diálogo Report Settings abrirá, conforme mostrado na Figura 27:

Figura 27. Configurações do relatório para o JasperReports
 
Essa caixa de diálogo solicita o caminho para o seu arquivo JasperReports XML (JRXML). Todos os relatórios do JasperReports são projetados como arquivos JRXML. O arquivo CurrentBookingSummaryReport.jrxml de relatório de resumo simples de reserva de quartos foi fornecido no código de origem deste artigo para download. Copie esse arquivo em um local a sua escolha e forneça o caminho do arquivo no campo JRXML file path.
No campo Output file path, especifique o local no qual deseja que o Bonita salve a versão PDF do relatório resumo de reserva de quartos. No campo Output format, selecione PDF. Clique em Finish e o seu relatório resumo de reserva de quartos estará completamente integrado ao Bonita.
O Bonita é fornecido com o pacote configurável Jetty, um popular servidor da Web de software livre. Isso facilita para os usuários o teste dos aplicativos de BPM configurados no Bonita.
Antes de testar o fluxo de trabalho de reserva de quartos, é necessário configurar o seu banco de dados PostgreSQL e preenchê-lo com dados de amostra, caso ainda não o tenha feito. Consulte o arquivo Readme.txt no download do código de origem para obter instruções sobre como configurar e preencher o PostgreSQL com os dados de amostras usados para testar o aplicativo.
O download também contém o RoomBookingDiagram_2.0.proc, que contém o fluxo de trabalho de reserva de quartos completo com todos os formulários e variáveis. Abra esse arquivo no menu de arquivo do Bonita e clique em Run na barra de ferramentas do Bonita para executar o fluxo de trabalho, conforme mostrado na Figura 28:

Figura 28. A barra de ferramentas do Bonita
 
Ao clicar no botão Run o Bonita empacotará automaticamente o fluxo de trabalho de reserva de quartos em um arquivo web archive (WAR) implementado e executado no Jetty. Em seguida, o Bonita abrirá o formulário EnterRoomInformation em um navegador da Web, conforme mostrado na Figura 29:

Figura 29. O formulário EnterRoomInformation
 
É possível ver que Single é o valor padrão selecionado na lista suspensa Type of room required. Selecione Double e clique no botão Check Room Availability. Você verá o mesmo formulário EnterRoomInformation novamente, pois o quarto duplo não está disponível para reserva nos dados de amostra.
Agora selecione Single e clique no botão Check Room Availability. Como existe um quarto simples disponível para reserva nos dados de amostra, o formulário BookRoom, mostrado na Figura 30, será exibido:

Figura 30. O formulário BookRoom
 
É possível observar também que a atividade EnterRoomInformation salvou uma versão PDF do relatório resumo de reserva de quartos do JasperReports no local especificado anteriormente.
Neste artigo dividido em duas partes você configurou e executou um fluxo de trabalho simples de reserva de quartos de hotel como um aplicativo de BPM no Bonita. Você também conectou por meio de interface seu fluxo de trabalho com dois aplicativos externos. Todas as configurações foram feitas usando os editores gráficos de fluxo de trabalho e de formulários do Bonita, sem escrever nenhum código Java.
A interface com os aplicativos externos é necessária na maioria dos aplicativos de BPM. A maioria dos aplicativos de BPM reais precisa de mais de um mecanismo de BPM e diversos aplicativos externos não BPM, trabalhando em conjunto. Por enquanto, não existe nenhuma API Java padrão para descrever como uma ferramenta de BPM pode fazer interface como aplicativos externos e como diferentes ferramentas de BPM podem fazer interface umas com as outras. Por essa razão, todas as ferramentas de BPM têm que criar algum tipo de mecanismos de interface, como o mecanismo do conector do Bonita. Essa interface pode se tornar transparente, se uma API BPM Java padrão for desenvolvida definindo como uma ferramenta de BPM ou outro aplicativo pode expor a sua funcionalidade para ser integrado em um fluxo de trabalho.

DescriçãoNomeTamanhoMétodo de download
BPMN, JRXML, and Readme.txt files for this articlej-bpm2.zip11KBHTTP

Aprender
Obter produtos e tecnologias
Discutir
  • Participe da comunidade do My developerWorks. Entre em contato com outros usuários do developerWorks e explore os blogs, fóruns, grupos e wikis voltados para desenvolvedores.
Bilal Siddiqui é engenheiro eletrônico, consultor de XML e cofundador da WaxSys, empresa concentrada em simplificação de e-business. Após se formar, em 1995, em engenharia eletrônica na Universidade de Engenharia e Tecnologia, em Lahore, Paquistão, ele começou a projetar soluções de software para sistemas de controle industrial. Depois, ele começou a trabalhar com o XML e usou sua experiência em programação em C++ para criar ferramentas de processamento XML baseadas na Web e em WAP, soluções de análise do lado do servidor e aplicativos de serviço. Bilal é divulgador da tecnologia e um autor técnico publicado com frequência.

Nenhum comentário:

Postar um comentário