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 de
TypesOfRoomsAvailable
. 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 (Add, Up, Down, Remove) 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ável
TypesOfRoomsAvailable
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.
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.
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á:
- Adicionar um conector PostgreSQL à atividade
CheckRoomAvailability.
- Gravar uma consulta SQL usando a variável
requiredRoomType.
- 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
CustomerName
, PhoneNumber
e BookingDate
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ção | Nome | Tamanho | Método de download |
---|---|---|---|
BPMN, JRXML, and Readme.txt files for this article | j-bpm2.zip | 11KB | HTTP |
Aprender
- Grupo de Gerenciamento de Objetos/Iniciativa de Gerenciamento de Processos de Negócios: Consulte a especificação do BPMN e outros recursos de BPMN.
- Bonita Open Solution: Visite o Web site do Bonita.
- Building your BPM applications with Bonita Runtime - Part 1 e Building your BPM applications with Bonita Runtime - Part 2: Aprenda mais sobre o uso do mecanismo de tempo de execução do Bonita nesses tutoriais no site do Bonita.
- BPMN 2.0 new features: Assista a esse vídeo para ver alguns dos recursos do BPMN 2.0 disponíveis no Bonita.
- BPMN Modeling and Reference Guide: Understanding and Using BPMN (Stephen A. White e Derek Miers, Future Strategies, 2008): Este guia está disponível para compra em edições impressas e digitais.
- "JasperReports 3.6: Using Multiple Relational Databases to Generate a Report" (Bilal Siddiqui, Packt Publishing, junho de 2010): Aprenda mais sobre como usar o JasperReports com bancos de dados relacionais como o PostgreSQL. Além disso, este capítulo de amostra grátis do JasperReports 3.6 Development Cookbook (Bilal Siddiqui, Packt Publishing, 2010) explica o design JRXML.
- "Struts, an open-source MVC implementation" (Malcolm Davis, developerWorks, fevereiro de 2001): Aprenda como implementar o padrão de design MVC nos seus aplicativos da Web.
- Zona de tecnologia Java do developerWorks: Encontre centenas de artigos sobre cada aspecto da programação Java.
Obter produtos e tecnologias
- Bonita Open Solution: Faça o download do Bonita. O artigo usa a versão 5.2.2.
- PostgreSQL: Faça o download do PostgreSQL.
- JasperReports: Faça o download do JasperReports.
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