Guia de Configuração e Administração
Guia de Configuração e Administração para o Red Hat JBoss BPM Suite
Kanchan Desai
kadesai@redhat.comDoug Hoffman
Eva Kopalova
Serviços do Conteúdo da Red Hat
Joshua Wulf
jwulf@redhat.comResumo
Parte I. Introdução
Capítulo 1. Business Process Model and Notation
1.1. Componentes
Execution Engine- fornece o ambiente de tempo de execução para as Regras e os Processos Empresariais. Engloba uma biblioteca de fluxo de trabalho que pode ser incorporada a um aplicativo web do usuário. O gerenciador do tempo de execução é o objeto raiz e contém os seguintes componentes:Runtime Engine- implementa o comportamento principal da linguagem do computador e é fornecido pelo gerenciador do tempo de execução.Process Engine- é o ambiente para a execução do modelo de processos empresariais.Task Service- controla os ciclos de vida das tarefas humanas.
Rule Engine- pode ser usado com o mecanismo de processos ou sozinho.Rules Evaluation- executa as regras empresariais no conjunto de fatos fornecido.Complex Event Processing- aplica as regras empresariais ao fluxo de eventos de entrada.
Business Central- aplicativo baseado na web que acomoda ferramentas para a criação, o gerenciamento e o monitoramento de ativos, fornecendo um ambiente web integrado.Asset Repository- é o local central de compartilhamento (Knowledge Store) para formulários, regras, processos, ativos empresariais e etc. Os usuários acessam esse repositório através do modo de exibição do Explorador de Projeto do Business Central via Criação → Criação de Projeto. O produto inicializa, por padrão, um repositório local GIT como o seu Repositório de Ativos. No entanto, outros repositórios podem ser adicionados ou removidos, conforme necessário.Artifact Repository- é um repositório baseado no Maven para o armazenamento dos artefatos jar dos projetos.Execution Server- fornece um ambiente de execução para as tarefas e instâncias dos processos empresariais.Business Activity Monitor- fornece uma visão personalizada do desempenho empresarial.
Nota
1.2. Projeto
pom.xml), com informações sobre como construir o artefato de saída. Ele também contém o arquivo Descritor do Módulo, kmodule.xml, que contém a configuração da Base KIE e da Sessão KIE para os ativos no projeto.
1.3. Criando um Projeto
- Abra a perspectiva Criação de Projetos: no menu principal, clique em Criação → Criação de Projeto.
- No Explorador de Projeto, selecione a unidade organizacional e o repositório onde você queira criar o projeto.
- No menu de perspectiva, vá até Novo Item → Projeto.
- Na janela de diálogo Criar Novo Projeto, defina os detalhes do projeto:
- Na caixa de texto Projeto, insira o nome do projeto.

- O explorador atualiza-se para apresentar uma janela pop-up Novo Assistente de Projeto.

- Defina os detalhes de Configuração Geral do Projeto e Grupo Artefato Versão para esse novo projeto. Esses parâmetros são armazenados dentro do arquivo de configuração do Maven
pom.xml.- Nome do Projeto: o nome para o projeto, por exemplo
MortgageProject - Descrição do Projeto: a descrição do projeto, que pode ser útil para a documentação do projeto.
- ID do Grupo: a identidade do grupo, por exemplo
org.mycompany.commons - ID do Artefato: a identidade do artefato exlusiva no grupo, por exemplo
myframework. Evite usar espaço ou caracteres especiais que possam gerar um nome inválido. - ID da Versão: a versão do projeto, por exemplo
2.1.1
O modo de exibição da Tela do Projeto é atualizado com os novos detalhes do projeto, como definidos no arquivo pom.xml. Observe que você pode trocar os arquivos descritores do projeto na caixa suspensa por Configurações do Projeto e Configurações da Base de Conhecimento e editar seus conteúdos.
1.4. Adicionando Dependências
- Abra o Editor de Projetos para o projeto fornecido:
- No modo de exibição do Explorador de Projeto da perspectiva
Criação de Projeto, abra o diretório do projeto. - Clique no botão
para abrir o modo de exibição do projeto.
- No modo de exibição da Tela do Projeto, selecione o item Dependências na caixa suspensa Configurações do Projeto.
- Na Tela do Projeto atualizada, clique no botão Adicionar para adicionar uma dependência maven ou clique no botão Adicionar a partir do repositório para adicionar uma dependência do Knowledge Store (repositório de artefatos):
- Ao adicionar uma dependência maven, o usuário precisa definir a ID do Grupo, a ID do Artefato e a ID da Versão na nova linha que foi criada na tabela de dependências.
- Ao adicionar uma dependência do Knowledge Store, selecione a dependência na caixa de diálogo exibida: a dependência será adicionada à tabela de dependências.
- Para aplicar as diversas alterações, as dependências devem ser salvas.
Atenção
Parte II. Configuração
Capítulo 2. Configuração do Business Central
DEPLOY_DIRECTORY/business-central.war/WEB-INF/web.xml e de seus arquivos referenciados, assim como do jboss-web.xml e jboss-deployment-structure.xml, caso sejam implantadas no Red Hat JBoss EAP 6.
2.1. Controle de Acesso
$JBOSS_HOME/standalone/deployments/business-central.war/WEB-INF/classes/userinfo.properties.
admin: administra o sistema JBoss BPM Suite e possui total direito de acesso para fazer quaisquer alterações necessárias, incluindo a habilidade de adicionar e remover os usuários do sistema.desenvolvedor: implementa os códigos necessários para os processos funcionarem e tem acesso a tudo, com exceção das tarefas de administração.analista: cria e projeta processos e formatos, instancia processos e implanta artefatos. Essa função é semelhante a do desenvolvedor, sem o acesso a repositórios de ativos e implantações.usuário: declara, desempenha e invoca outras ações (tais como, escalonamento, rejeição e etc.) nas tarefas atribuídas e não possui acesso às funções de criação.gerenciador: monitora o sistema e suas estatísticas e possui acesso somente ao painel.usuário de negócios: trabalha nas tarefas de negócios que são necessárias para dar continuidade aos processos. Trabalha principalmente com a lista de tarefas.
$JBOSS_HOME/add-user.sh e crie um Usário do Aplicativo em ApplicationRealm com as respectivas funções.
Configuração do Workbench
$JBOSS_HOME/standalone/deployments/business-central.war/WEB-INF/classes/workbench-policy.propeties.
standalone.xml no EAP.
Autenticação nas Tarefas Humanas
UserGroupCallback para atribuir tarefas ao usuário.
Atenção
2.2. Configuração do Perfil do Business Central
- Perfil completo - perfil padrão que é ativado sem necessitar de uma configuração adicional (IU e serviços remotos, ex. REST).
- Perfil do servidor de execução - desabilita completamente os componentes da IU do aplicativo e permite apenas o acesso remoto, ex. via a interface REST.
- Perfil do servidor da IU - desabilita os serviços remotos, ex. REST, e permite apenas o acesso à IU do aplicativo.
Procedimento 2.1. Configurando os Perfis do Business Central
- Selecione o
web.xmldesejado dentro do$BPMS_HOME/standalone/deployments/business-central.war/WEB-INF/. Os seguintes arquivos são fornecidos:web.xml(padrão) para perfil completoweb-exec-server.xmlpara o perfil do servidor de execuçãoweb-ui-server.xmlpara o perfil do servidor da IU
- Para ativar um perfil que não seja o perfil completo padrão, deve-se renomear o arquivo web-<PROFILE>.xml para
web.xml. Os passos a seguir demonstram uma maneira de habilitar o perfil do servidor de execução:- Faça o backup do arquivo
web.xmla partir do perfil completo:$ mv web.xml web-full.xml
- Renomeie o arquivo
web-exec-server.xml:$ mv web-exec-server.xml web.xml
- Inicie o servidor do aplicativo com a propriedade adicional do sistema, instruindo o gerenciador do perfil a ativar o perfil especificado:
Dorg.kie.active.profile=full- para ativar o perfil completo ou ignorar a propriedade por completoDorg.kie.active.profile=exec-server- para ativar o perfil do servidor de execuçãoDorg.kie.active.profile=ui-server- para ativar o perfil do servidor da IU
2.3. Criando uma Marca para o Aplicativo Business Central
- Tela de loginVocê pode personalizar os seguintes atributos da tela de login do Business Central:
- A imagem de plano de fundo
- O logotipo da empresa
- O logotipo do aplicativo
- O cabeçalho do aplicativoVocê pode personalizar os seguintes atributos do cabeçalho do aplicativo Business Central:
- O cabeçalho do Business Central contendo o título e o logotipo do banner
- Janelas pop-up de ajudaVocê pode personalizar os seguintes atributos das janelas de pop-up de ajuda da tela inicial:
- As imagens de ajuda da tela inicial
- O texto do rótulo
2.3.1. Personalizando a Página de Login do Business Central
Procedimento 2.2. Alterando a Imagem de Plano de Fundo da Página de Login do Business Central
- Inicie o servidor EAP e abra http://localhost:8080/business-central em um navegador da web.
- Copie a nova imagem de plano de fundo no diretório
$EAP_HOME/standalone/deployments/business-central.war/imagesna sua instalação do JBoss BPM Suite. - Navegue até o diretório
$EAP_HOME/standalone/deployments/business-central.war/stylese abra o arquivologin-screen.cssem um editor de texto. - No arquivo
login-screen.css, forneça o local da sua nova imagem de plano de fundo no seguinte atributobackground-image.background-image: url("../images/login-screen-background.jpg");O atributobackground-imageaponta para a imagem padrãologin-screen-background.jpg.Além da imagem de plano de fundo, você também pode modificar outros atributos, tais como: o tamanho da imagem, a posição e a cor do plano de fundo no arquivologin-screen.css.
Procedimento 2.3. Alterando o Logotipo da Empresa na Página de Login do Business Central e o Logotipo do Projeto
- Inicie o servidor EAP e abra http://localhost:8080/business-central em um navegador da web.
- Naveque até o diretório
$EAP_HOME/standalone/deployments/business-central.war/imagesna sua instalação do JBoss BPM Suite. - Substitua a imagem padrão
login-screen-logo.pngpor uma nova imagem. Esse é o logotipo da empresa que aparece no canto superior direito da página de login. - Substitua a imagem padrão
RH_JBoss_BPMS_Logo.pngRH_JBoss_BRMS_Logo.pngpor uma nova imagem. Esse é o logotipo do projeto que aparece no lado central esquerdo da página de login.
2.3.2. Personalizando o Cabeçalho do Aplicativo Business Central
Procedimento 2.4. Alterando o Cabeçalho (Banner) do Aplicativo Business Central
- Inicie o servidor EAP e abra http://localhost:8080/business-central em um navegador da web.
- Faça o login no aplicativo Business Central com as suas credenciais de usuário.
- Copie a sua nova imagem de cabeçalho do aplicativo no diretório
$EAP_HOME/standalone/deployments/business-central.war/bannerna sua instalação do JBoss BPM Suite. - Abra o arquivo
$EAP_HOME/standalone/deployments/business-central.war/banner/banner.htmlem um editor de texto. - No arquivo
banner.html, edite a seguinte tag <img> para fornecer o nome da sua nova imagem de cabeçalho:<img src="banner/logo.png"/>
A imagem padrão élogo.png.
2.3.3. Personalizando as Janelas de Ajuda da Tela Inicial
$EAP_HOME/standalone/deployments/business-central.war/plugins contém as páginas da tela inicial e seus arquivos html correspondentes. Cada página da tela inicial mantém o nome do arquivo html, o qual possui informações sobre a(s) imagem(s) e o texto a ser exibido. Por exemplo, a página da tela inicial authoring_perspective.splash.js aponta para o arquivo authoring_perspective.splash.html. authoring_perspective.splash.html contém os nomes e o local de todos os arquivos de imagem que aparecem na ajuda da tela inicial da Perspectiva de Criação, assim como as suas legendas. Você pode personalizar as imagens e as legendas correspondentes das janelas pop-up de ajuda da tela inicial existente.
Procedimento 2.5. Alterando as Legendas e as Imagens de Pop-Up de Ajuda da Tela Inicial
- Inicie o servidor EAP e abra http://localhost:8080/business-central em um navegador da web.
- Faça o login no aplicativo Business Central com as suas credenciais de usuário.
- Copie a(s) sua(s) nova(s) imagem(s) no diretório
$EAP_HOME/standalone/deployments/business-central.war/imagesna sua instalação do JBoss BPM Suite. - Abra o arquivo html correspondente a partir do diretório
$EAP_HOME/standalone/deployments/business-central.war/pluginsem um editor de texto. - Edite o arquivo html para apontar para a sua nova imagem de ajuda da tela inicial. Por exemplo, para alterar a primeira imagem que aparece na ajuda da tela inicial da Perspectiva de Criação, edite a seguinte tag <img> no arquivo
authoring_perspective.splash.htmlpara adicionar a sua nova imagem:<img src="images/authoring_perspective1.png" alt="">
A imagem padrão éauthoring_perspective1.png, a qual aparece na primeira página de ajuda da tela inicial da Perspectiva de Criação. - Para alterar a legenda da imagem que aparece na ajuda da tela inicial, edite os conteúdos de tag <h4> e <p> abaixo da tag <img>:
<h4>Authoring</h4> <p>Modularized and customizable workbench</p>
2.4. Descritores de Implantação
META-INF do kjar chamado kmodule.xml pode ser usado para definir as sessões e bases de conhecimento. Este arquivo kmodule.xml, por padrão, fica vazio.
kmodule.xml para construir a representação do tempo de execução.
kmodule.xml. A presença desses descritores é opcional e sua implantação procederá sem eles com êxito. As propriedades que você pode definir usando esses descritores são puramente técnicas, em natureza, e incluem valores meta, como persistência, auditoria e estratégia de tempo de execução.
kie-deployment-descriptor.xml e deixar esse arquivo próximo ao seu arquivo kmodule.xml na pasta META-INF. Você pode mudar esse local padrão (e o nome do arquivo) ao especificá-lo como um parâmetro de sistema:
-Dorg.kie.deployment.desc.location=file:/path/to/file/company-deployment-descriptor.xml
2.4.1. Configuração dos Descritores de Implantação
- nível de servidor: é o nível principal e é aquele que se aplica a todos kjars implantados no servidor.
- nível kjar: permite que você configure os descritores com base em kjar.
- nível de tempo de implantação: descritores que são aplicados durante a implantação de um kjar.
Nota
NONE (Nenhum), mas esse mesmo modo estiver especificado como JPA no nível kjar, o modo, na verdade, será JPA para aquele kjar. Caso nada esteja especificado para o modo de persistência no descritor de implantação para esse kjar (ou caso não haja descritor de implantação algum), ele retrocederá para a configuração do nível de servidor, a qual é, nesse caso, NONE (Nenhum) (ou para JPA, caso não haja descritor de implantação do nível de servidor).
É possível substituir esse comportamento de modo de mesclagem hierárquica?
MERGE_COLLECTIONS. Mas, você pode alterá-lo (Seção 2.4.2, “Gerenciando os Descritores de Implantação”) para um dos seguintes modos, caso não seja adequado para o seu ambiente:
- KEEP_ALL: nesse modo, todos os valores de nível superior substituem todos os valores de nível inferior (os valores do nível do servidor substituem os valores do nível kjar)
- OVERRIDE_ALL: nesse modo, todos os valores de nível inferior substituem todos os valores de nível superior (os valores kjar substituem os valores do nível do servidor)
- OVERRIDE_EMPTY: nesse modo, todos os itens de configuração não vazia de níveis inferiores substituem aqueles em níveis superiores, incluindo os itens que estão representados como coleções.
- MERGE_COLLECTIONS (PADRÃO): nesse modo, todos os itens de configuração não vazia de níveis inferiores substituem aqueles de níveis superiores (como em OVERRIDE_EMPTY), mas as propriedades de coleção são mescladas (combinadas).
Preciso fornecer um Descritor de Implantação completo para todos os kjars?
O que pode ser configurado?
Tabela 2.1. Descritores de Implantação
| Configuração | Entrada XML | Valores Permitidos | Valor Padrão |
|---|---|---|---|
| Nome da unidade de persistência para os dados de tempo de execução | persistence-unit | Qualquer nome de pacote de persistência válido | org.jbpm.domain |
| Nome da unidade de persistência para os dados de auditoria | audit-persistence-unit | Qualquer nome de pacote de persistência válido | org.jbpm.domain |
| Modo de persistência | persistence-mode | JPA, NENHUM | JPA |
| Mode de auditoria | audit-mode | JPA, JMS ou NENHUM | JPA |
| Estratégia de Tempo de Execução | runtime-strategy | SINGLETON, PER_REQUEST ou PER_PROCESS_INSTANCE | SINGLETON |
| Lista de Ouvintes de Evento a serem registrados | event-listeners | Nomes de classe de ouvintes válidos, como ObjectModel | Nenhum valor padrão |
| Lista de Ouvintes de Evento de Tarefa a serem registrados | task-event-listeners | Nomes de classe de ouvintes válidos, como ObjectModel | Nenhum valor padrão |
| Lista de Manipuladores de Itens de Trabalho a serem registrados | work-item-handlers | Classes de Manipuladores de Itens de Trabalho válidas fornecidas como NamedObjectHandler | Nenhum valor padrão |
| Lista de Globais a serem registradas | globals | Variáveis globais válidas fornecidas como NamedObjectModel | Nenhum valor padrão |
| Estratégias de marshalling a serem registradas (para persistências variáveis conectáveis) | marshalling-strategies | Classes ObjectModel válidas | Nenhum valor padrão |
| Funções necessárias que serão concedidas acesso aos recursos do kjar | required-roles | Nomes de funções de cadeia | Nenhum valor padrão |
| Entradas de Ambiente adicionais para a Sessão de Conhecimento | environment-entries | NamedObjectModel válido | Nenhum valor padrão |
| Opções de configuração adicionais da Sessão de Conhecimento | configurações | NamedObjectModel válido | Nenhum valor padrão |
Como fornecer valores para itens de configuração baseados em coleções?
ObjectModel ou NamedObjectModel. Ambos são semelhantes e fornecem uma definição do objeto a ser construído ou criado durante o tempo de execução, com exceção de que os detalhes do objeto NamedObjectModel nomeiam o objeto a ser observado. Esses dois tipos são definidos usando um identificador, parâmetros opcionais e um resolvedor (para resolver o objeto).
- identificador - define todas as informações sobre o objeto, tais como o nome de classe totalmente qualificado, a identidade Spring bean ou uma expressão MVEL.
- parâmetros - parâmetros opcionais que devem ser usados durante a criação de instâncias de objetos a partir deste modelo.
- resolvedor - identificador do resolvedor que será usado para criar instâncias de objetos a partir do modelo - (reflection, mvel ou Spring).
ObjectModel, com o identificador sendo com.mycompany.MyStrategy, o resolvedor sendo reflection (padrão e mais fácil) e quaisquer parâmetros necessários para a sua estratégia funcionar. O reflection será usado, então, para criar uma instância dessa estratégia usando o nome de classe totalmente qualificado que você forneceu como o identificador.
<marshalling-strategy>
<resolver>reflection</resolver>
<identifier>com.myCompany.MyStrategy</identifier>
<parameters>
<parameter xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema">
param
</parameter>
</parameters>
</marshalling-strategy>
<marshalling-strategy> <resolver>mvel</resolver> <identifier>new com.myCompany.CustomStrategy(runtimeManager)</identifier> </marshalling-strategy>
<marshalling-strategy> <resolver>spring</resolver> <identifier>customStrategy</identifier> </marshalling-strategy>
2.4.2. Gerenciando os Descritores de Implantação
META-INF no Explorador de Arquivo. Clique no arquivo kie-deployment-descriptor.xml para editá-lo manualmente.
kie-deployment-descriptor.xml é gerado com valores padrão como descritos anteriormente.
Substituindo o Comportamento de Modo de Mesclagem Hierárquica
- Defina a propriedade do sistema org.kie.dd.mergemode com um desses valores. Esse modo de mesclagem se tornará padrão para todos kjars implantados no sistema, ao menos que você o substitua em um nível kjar usando o próximo método.
- Quando implantando uma nova unidade de implantação através do Business Central (Implantar → Implantações), você pode selecionar o modo de mesclagem que deve ser usado para aquele kjar em particular.
- Quando estiver implantando via API REST, você pode adicionar o parâmetro de consulta mergemode ao comando URL para um desses modos e definir o modo de mesclagem para essa implantação.
Restringindo o acesso ao Mecanismo de Tempo de Execução
2.5. Gerenciando a Polícia de Substituição de Implantação
falsa por padrão. Altere-a para verdadeiro para habilitar a sobrescrição das implantações com o mesmo GAV durante o tempo de inicialização do seu servidor (-Dorg.kie.override.deploy.enabled=true).
2.6. Extendendo o Business Central
Gerenciamento de Plug-ins.
2.6.1. Gerenciamento de Plug-ins
Gerenciamento de Plug-ins clicando em Extensões → Gerenciamento de Plug-ins. Isso exibe a tela Plug-in Explorer que lista todos os plug-ins existentes sob suas perspectivas categorias: Plug-in de Perspectiva, Plug-in de Tela, Plug-in de Editor, Plug-in de Tela Inicial e Menu Dinâmico. Abra qualquer um desses plug-ins e você poderá ver os plug-ins existentes em cada categoria, incluindo os não editáveis gerados pelo sistema.
- Crie uma nova tela
- Crie uma nova perspectiva (e adicione a nova tela a ela)
- Crie um novo menu (e adicione uma nova perspectiva a ele)
- Aplicativos (opcional)
Adicionando uma nova tela
Nota
<div>My Hello World Screen</div>. Ele pode estar em qualquer código HTML e você pode usar as estruturas Angular e Knockout fornecidas. Para efeitos desse exemplo, não estamos usando nenhuma dessas estruturas, mas você pode escolher uma delas ao selecionar o menu suspenso na seção de Modelo.
main, on_close e on_open. Para essa demonstração, selecione on_open e insira o seguinte: function () { alert('Hello World'); }
Adicionando uma nova Perspectiva
6 6 no lado direito.
HelloWorldJS). Clique no botão OK e, então, clique no botão
para salvar essa perspectiva. Insira HelloWorldPerspective, insira Página Inicial no campo de nome da tag (e clique no botão Adicionar Tag) e clique no botão OK para concluir o que foi salvo.
e insira o nome da perspectiva.
Adicionando um novo menu
Hello World.
Trabalhando com Aplicativos (Opcional)
HelloWorldPerspective, você inseriu a tag Página Inicial. O diretório de Aplicativos contém um único diretório, por padrão, chamado Página Inicial, ao qual você associou a sua perspectiva. E é onde você a encontrará quando abrir o diretório de Aplicativos. Você pode clicar nele para executar a perspectiva agora.
2.6.2. API JavaScript (JS) para Extensões
plug-ins do webapp do Business Central (geralmente: {INSTALL_DIR}/business-central.war/plugins/), ou carregada através das chamadas regulares JavaScript.
- API Register Perspective: permite a criação dinâmica das perspectivas. O exemplo abaixo cria um painel usando o método
registerPerspective:$registerPerspective({ id: "Home", is_default: true, panel_type: "org.uberfire.client.workbench.panels.impl.MultiListWorkbenchPanelPresenter", view: { parts: [ { place: "welcome", min_height: 100, parameters: {} } ], panels: [ { width: 250, min_width: 200, position: "west", panel_type: "org.uberfire.client.workbench.panels.impl.MultiListWorkbenchPanelPresenter", parts: [ { place: "YouTubeVideos", parameters: {} } ] }, { position: "east", panel_type: "org.uberfire.client.workbench.panels.impl.MultiListWorkbenchPanelPresenter", parts: [ { place: "TodoListScreen", parameters: {} } ] }, { height: 400, position: "south", panel_type: "org.uberfire.client.workbench.panels.impl.MultiTabWorkbenchPanelPresenter", parts: [ { place: "YouTubeScreen", parameters: {} } ] } ] } }); - API Editor: permite que você crie dinamicamente editores e os associe com um tipo de arquivo. O exemplo abaixo cria um editor de amostra e o associa com um tipo de arquivo
filename.$registerEditor({ "id": "sample editor", "type": "editor", "templateUrl": "editor.html", "resourceType": "org.uberfire.client.workbench.type.AnyResourceType", "on_concurrent_update":function(){ alert('on_concurrent_update callback') $vfs_readAllString(document.getElementById('filename').innerHTML, function(a) { document.getElementById('editor').value= a; }); }, "on_startup": function (uri) { $vfs_readAllString(uri, function(a) { alert('sample on_startup callback') }); }, "on_open":function(uri){ $vfs_readAllString(uri, function(a) { document.getElementById('editor').value=a; }); document.getElementById('filename').innerHTML = uri; } });Além dos métodoson_startupeon_openapresentados no exemplo anterior, a API expõe os seguintes eventos de retorno de chamada para o gerenciamento do ciclo de vida do editor:Você pode exibir esse editor através de um modelo html:- on_concurrent_update;
- on_concurrent_delete;
- on_concurrent_rename;
- on_concurrent_copy;
- on_rename;
- on_delete;
- on_copy;
- on_update;
- on_open;
- on_close;
- on_focus;
- on_lost_focus;
- on_may_close;
- on_startup;
- on_shutdown;
<div id="sampleEditor"> <p>Sample JS editor (generated by editor-sample.js)</p> <textarea id="editor"></textarea> <p>Current file:</p><span id="filename"></span> <button id="save" type="button" onclick="$vfs_write(document.getElementById('filename').innerHTML, document.getElementById('editor').value, function(a) {});">Save</button> <br> <p>This button change the file content, and uberfire send a callback to the editor:</p> <button id="reset" type="button" onclick="$vfs_write(document.getElementById('filename').innerHTML, 'Something else', function(a) {});">Reset File</button> </div> - API PlaceManager: os métodos dessa API permitem que você solicite ao Business Central a exibição de um componente em particular associado ao destino:
$goToPlace("componentIdentifier"); - API Register plu-in: os métodos dessa API permitem que você crie plug-ins dinâmicos (que serão transformados em telas do Business Central) via a API JS.
$registerPlugin( { id: "my_angular_js", type: "angularjs", templateUrl: "angular.sample.html", title: function () { return "angular " + Math.floor(Math.random() * 10); }, on_close: function () { alert("this is a pure JS alert!"); } });O plug-in faz referência ao modeloangular.sample.html:<div ng-controller="TodoCtrl"> <span>{{remaining()}} of {{todos.length}} remaining</span> [ <a href="" ng-click="archive()">archive</a> ] <ul class="unstyled"> <li ng-repeat="todo in todos"> <input type="checkbox" ng-model="todo.done"> <span class="done-{{todo.done}}">{{todo.text}}</span> </li> </ul> <form ng-submit="addTodo()"> <input type="text" ng-model="todoText" size="30" placeholder="add new todo here"> <input class="btn-primary" type="submit" value="add"> </form> <form ng-submit="goto()"> <input type="text" ng-model="placeText" size="30" placeholder="place to go"> <input class="btn-primary" type="submit" value="goTo"> </form> </div>Um plug-in pode ser associado a eventos do Business Central através de uma série de chamadas de retorno JavaScript:- on_concurrent_update;
- on_concurrent_delete;
- on_concurrent_rename;
- on_concurrent_copy;
- on_rename;
- on_delete;
- on_copy;
- on_update;
- on_open;
- on_close;
- on_focus;
- on_lost_focus;
- on_may_close;
- on_startup;
- on_shutdown;
- API Register splash screens: usa os métodos nessa API para criar telas iniciais
$registerSplashScreen({ id: "home.splash", templateUrl: "home.splash.html", body_height: 325, title: function () { return "Cool Home Splash " + Math.floor(Math.random() * 10); }, display_next_time: true, interception_points: ["Home"] }); - API Virtual File System (VFS): com essa API, você pode ler e gravar um arquivo salvo no sistema de arquivos usando uma chamada assíncrona.
$vfs_readAllString(uri, function(a) { //callback logic }); $vfs_write(uri,content, function(a) { //callback logic })
2.7. Configurando Colunas de Tabela
Adicionando e Removendo Colunas
no canto superior direito. Ao clicar nesse botão, uma lista das colunas que podem ser adicionadas ou removidas da atual tabela abrirá com uma caixa de verificação próxima a cada coluna:
Redimensionando Colunas
Movendo Colunas
.
.
Classificando Colunas
Capítulo 3. Configuração da Linha de Comando
kie-config-cli é uma ferramenta de configuração da linha de comando que fornece as capacidades para gerenciar o repositório do sistema a partir da linha de comando e pode ser usada em modo online ou offline.
Modo Online(padrão e recomendado) - mediante inicialização, a ferramenta conecta-se a um repositório Git usando um servidor Git fornecido porkie-wb. Todas as alterações são feitas localmente e enviadas para o upstream somente após a execução explícita do comando push-changes. Use o comando exit para publicar as alterações locais. Para descartar as alterações locais ao sair, use o comando discard.Modo Offline(um estilo de instalador) - cria e manipula o repositório do sistema diretamente no servidor (não há opção discard).
- Vá até o Portal do Consumidor Red Hat e faça o log in.
- Clique em Downloads → Downloads de Produtos.
- Na página Downloads de Produtos que abrir, clique em Red Hat JBoss BPM Suite.
- A partir do menu suspenso Versão, selecione a versão 6.1.
- Na tabela exibida, navegue até a linha Ferramentas Suplementares e depois clique em Download.
kie-config-cli-6.MINOR_VERSION-redhat-x-dist com o arquivo kie-config-cli.sh.
3.1. Iniciando a Ferramenta kie-config-cli no Modo Online
- Para iniciar a ferramenta kie-config-cli no modo online, navegue até o diretório
kie-config-cli-6.MINOR_VERSION-redhat-x-distonde você instalou a ferramenta e, então, execute o comando a seguir. - Em um ambiente Unix, execute:
./kie-config-cli.sh
Em um ambiente Windows, execute:./kie-config-cli.bat
git://kie-wb-host:9148/system
3.2. Iniciando a Ferramenta kie-config-cli no Modo Offline
- Navegue até o diretório
kie-config-cli-6.MINOR_VERSION-redhat-x-distonde você instalou a ferramenta. - Em um ambiente Unix, execute:
./kie-config-cli.sh offline
Em um ambiente Windows, execute:./kie-config-cli.bat offline
.niogit) está localizado. Caso .niogit ainda não exista, o valor da pasta pode ser deixado vazio e uma nova configuração é criada.
3.3. Comandos Disponíveis para a Ferramenta kie-config-cli
add-deployment- adiciona uma nova unidade de implantaçãoadd-repo-org-unit- adiciona um repositório à unidade organizacionaladd-role-org-unit- adiciona funções a uma nova unidade organizacionaladd-role-project- adiciona funções a um projetoadd-role-repo- adiciona funções a um repositóriocreate-org-unit- cria uma nova unidade organizacionalcreate-repo- cria um novo repositório gitdiscard-não publica alterações locais, limpa diretórios temporários e fecha a ferramentaexit- publica o trabalho, limpa os diretórios temporários e fecha a ferramentafetch-changes- busca alterações a partir do repositório upstreamhelp- imprime os comandos disponíveis com descriçõeslist-deployment- lista as implantações disponíveislist-org-units- lista as unidades organizações disponíveislist-repo- lista os repositórios disponíveispush-changes- envia alterações por push para o repositório upstream (em modo online apenas)remove-deployment- remove implantações existentesremove-org-unit- remove unidades organizacionais existentesremove-repo- remove um repositório existente da config apenasremove-repo-org-unit- remove um repositório da unidade organizacionalremove-role-org-unit- remove funções de uma unidade organizacionalremove-role-project- remove funções de um projetoremove-role-repo- remove funções de um repositório
Capítulo 4. Migração
- Migrar primeiro os dados: eles são os seus ativos empresariais.
- Migrar, em seguida, os processos do tempo de execução.
- E, por fim, converter as chamadas API antigas em novas, uma por uma.
4.1. Migração dos Dados
- Baixe a ferramenta de migração fazendo o login no Portal do Consumidor Red Hat e, depois, navegue até a seção de Downloads de Software do Red Hat JBoss BPM Suite. Clique em Red Hat JBoss BPM Suite Migration Tool para baixar o arquivo zip.
- Descomprima o arquivo zip baixado em um diretório de sua escolha e navegue até esse diretório em um prompt de comando. Esse diretório contém quatro pastas:
bin- contém os scripts de inicializaçãojcr-exporter-libs- contém as bibliotecas específicas à parteexport-from-JCRda migração.vfs-importer-libs- contém as bibliotecas específicas à parteimport-into-Gitda migração.conf- contém a configuração global da ferramenta de migração.
- Para os bancos de dados de produção, copie o driver JDBC no banco de dados utilizado pelo repositório JCR no diretório
jcr-exporter-libsda ferramenta de migração. - Execute os seguintes comandos:
./bin/runMigration.sh -i <source-path> -o <destination-path> -r <repository-name>
- <source-path> é um caminho para um repositório JCR fonte.
- <desintation-path> é um caminho para um destino GIT VFS. Essa pasta não deve existir ainda.
- <repository-name> é um nome arbitrário para o novo repositório.
-i, você também pode usar -h, para imprimir uma mensagem de ajuda, e -f, para forçar a substituição do diretório de saída, eliminando, assim, a necessidade de excluir manualmente esse diretório.
Importando o repositório no Business Central
Nota
Importando o repositório no JBDS
- Inicie o JBoss Developer Studio.
- Inicie o Red Hat JBoss BPM Suite Server (caso não esteja em execução ainda) selecionando o servidor através da guia servidor e clique no ícone iniciar.
- Selecione Arquivo → Importar... e navegue até a pasta Git. Abra a pasta Git para selecionar os Projetos do Git e clique em avançar.
- Selecione a origem do repositório como Repositório local existente e clique em avançar.
- Selecione o repositório a ser configurado a partir da lista dos repositórios disponíveis.
- Importe o projeto como um projeto geral na próxima janela e clique em avançar. Nomeie este projeto e clique em Concluir.
4.2. Migração do Tempo de Execução
- Defina a propriedade do sistema
jbpm.v5.id.strategycomo verdadeira no arquivostandalone.xmldo JBoss BPM Suite:<property name="jbpm.v5.id.strategy" value="true"/>
- Carregue KieSession como demonstrado aqui:
KieSession ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionID, kbase, sessionConf, env);
- Continue a execução normal do processo usando métodos KieSession:
ksession.signalEvent("SomeEvent", null);
4.3. Compatibilidade com Versões Anteriores e API
Migrando para a Versão 6.1
knowledge-api JAR não possui mais suporte na versão 6.1 e foi substituído pelas APIs contidas no arquivo kie-api JAR que foram introduzidas no JBoss BPM Suite 6.0.
knowledge-api.jar), por favor migre (reescreva) as chamadas da API para a nova APIKIE . Por favor, esteja ciente de que outras APIs foram alteradas entre o JBoss BRMS 5.x e o JBoss BPM Suite 6.x, como a API de serviço de tarefas e a API REST.
Migrando para a Versão 6.0
knowledge-api criado especificamente para o código de compatibilidade retroativa. Essa API é uma interface pública, capaz de funcionar com o JBoss BPM Suite e o JBoss BRMS e é compatível com versões anteriores.
4.4. Migrando o Serviço de Tarefas
LocalHTWorkItemHandler.
Capítulo 5. Gerenciamento de Dados
5.1. Backup de dados
- quaisquer descritores de implantação personalizados (tais como,
web.xml,jboss-web.xml,jboss.xml) - quaisquer arquivos de propriedades personalizadas
Nota
Considere fazer o backup completo dos arquivosbusiness-central.waredashbuilder.war
5.2. Configuração de Índices
Configure os índices de chaves estrangeiras
Configure os índices para o Painel de Tarefas e de Processos
processinstancelog e bamtasksummary.
5.3. Configurando o Banco de Dados
- Postgres
- A frase sql a seguir é usada para criar um banco de dados Postgres:
CREATE DATABASE dashbuilder WITH ENCODING='UTF8' OWNER=dashbuilder CONNECTION LIMIT=-1Nota
A codificação do banco de dados deve ser UTF8 - DB2
- O banco de dados DB2 pode ser criado usando a frase sql a seguir:
CREATE DATABASE dashb PAGESIZE 16384
Nota
O tamanho da página (pagesize) padrão para os sistemas DB2 é 4k, o que não é suficiente para o tamanho das colunas da tabela do Dashbuilder. O tamanho da página deve ser forçado para 16384, como apresentado na frase acima.
<datasource jndi-name="java:jboss/datasources/jbpmDS" enabled="true" use-java-context="true" pool-name="postgresqlDS">
<connection-url>jdbc:postgresql://localhost/test</connection-url>
<driver>postgresql</driver>
<pool></pool>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>5.4. Editando o Banco de Dados
java:jboss/datasources/ExampleDS
standalone.xml.
Nota
Procedimento 5.1. Alterando o Banco de Dados
- Instale o driver do banco de dados no JBoss (consulte a documentação do driver JBoss).
- Crie um banco de dados e uma fonte de dados JBoss que conecta-se ao driver do banco de dados.
- Modifique o arquivo
dashbuilder.war/WEB-INF/jboss-web.xml:<jboss-web> <context-root>/dashbuilder</context-root> <resource-ref> <res-ref-name>jdbc/dashbuilder</res-ref-name> <res-type>javax.sql.DataSource</res-type> <jndi-name>java:jboss/datasources/myDataSource</jndi-name> </resource-ref> ... - Substitua o valor do parâmetro jndi-name pelo caminho JNDI da fonte de dados JBoss que você criou.
- Modifique o arquivo
dashbuilder.war/WEB-INF/jboss-deployment-structure.xml - Adicione o seguinte trecho de configuração à tag
deployment, ondejdbcDriverModuleNameé o nome do módulo do driver JBoss JDBC:<dependencies> <module name="jdbcDriverModuleName" /> </dependencies>
5.5. Scripts DDL
ddl-scripts. Os scripts do banco de dados são fornecidos para DB2, H2, MySQL5, Oracle, PostgreSQL e SQLServer.
Capítulo 6. Repositório de Ativos
Explorador de Projeto do ambiente unificado do Red Hat JBoss BPM Suite.
6.1. Criando um Repositório
Importante
ADMIN pode criar um repositório.
Procedimento 6.1. Criando um novo repositório
- Abra a perspectiva Administração: no menu principal, clique em Criação → Administração.
- No menu de perspectiva, clique em Repositórios → Novo Repositório.
- A janela pop-up Criar Repositório é exibida.

Figura 6.1. Janela Pop-up Criar Repositório
- Insira os detalhes mandatórios:
- Nome do repositório.
Nota
Observe que o nome do repositório deve ser um nome de arquivo válido. Evite usar espaço ou caracteres especiais que possam gerar um nome de pasta inválido. - Selecione a unidade organizacional na qual o repositório será criado a partir da opção suspensa Unidade Organizacional.
- Clique em Concluir
6.2. Clonando um Repositório
Importante
ADMIN pode clonar um repositório.
Procedimento 6.2. Clonando um Repositório
- Abra a perspectiva Administração.
- No menu Repositórios, selecione Clonar repositório.
- A janela pop-up Clonar Repositório é exibida.

Figura 6.2. Janela Pop-up Clonar Repositório
- Na janela de diálogo Clonar Repositório, insira os detalhes do repositório:
- Insira o Nome do Repositório a ser usado como o identificador do repositório no Repositório de Ativos e selecione a Unidade Organizacional onde ele deve ser adicionado.
- Insira o URL do repositório GIT:
- Para um Repositório Local:
file:///path-to-repository/reponame - Para um Repositório remoto ou preexistente:
git://hostname/reponame
Nota
O protocolo do arquivo possui suporte somente para as operações de 'LEITURA'. As operações de 'GRAVAÇÃO' não possuem suporte. - Se necessário, insira o Nome do Usuário e a Senha usados para autenticação, quando clonando o repositório.
- Clique em Clonar.
- Um prompt de confirmação com o botão OK será exibido, notificando o usuário de que o repositório foi criado com êxito. Clique em OK. O repositório será indexado. Alguns recursos do workbench estarão indisponíveis até que a indexação esteja completa.
6.3. Removendo um Repositório
Removendo um Repositório do Business Central
Procedimento 6.3. Usando o Business Central para Remover um Repositório
- Acesse o RepositoryEditor no Business Central Criação → Administração.
- Selecione Repositórios do menu de árvore à esquerda.
- No RepositoryEditor à direita, localize o repositório a ser excluído da lista dos repositórios disponíveis.
- Selecione mestre do menu suspenso e clique no botão Excluir.
- A seguinte mensagem aparecerá:
Você tem certeza que deseja remover o Repositório "<$RepositoryName>"? Alguns editores podem tornar-se inoperáveis caso seus conteúdos estejam inacessíveis.
Pressione Ok para excluir.
Removendo um Repositório Usando a Ferramenta kie-config-cli
kie-config-cli através do comando remove-repo.
kie-config-cli, consulte Capítulo 3, Configuração da Linha de Comando .
Removendo um Repositório Usando API REST
DELETE REST API. Esse chamado baseia-se na criação de uma sessão HTTP autenticada pelo usuário antes de emitir esse comando.
Exemplo 6.1. Removendo um repositório usando curl
curl -H 'Accept: application/json' -H 'Content-Type: application/json' -X DELETE 'localhost:8080/business-central/rest/repositories/REPOSITORY_NAME'
6.4. Gerenciando Ativos
Nota
kiemgmt.
Repositórios Gerenciados e Não Gerenciados


Ramificações Gerenciadas


Estrutura do Repositório


kiemgmt, terá uma tarefa de usuário aparecendo nessa lista de tarefas para revisar os ativos sendo promovidos. Esse usuário pode declarar essa tarefa e decidir por promover todos, alguns ou nenhum ativo. O processo subjacente irá promover um cherry-pick das confirmações selecionadas pelo usuário para uma ramificação de lançamento. Esse usuário também pode solicitar uma outra revisão desses ativos e esse processo pode ser repetido múltiplas vezes até que todos os ativos estejam prontos para o lançamento. O fluxo desse processo é apresentado abaixo:

Atenção
lançar (release)

6.5. Repositório do Maven
- Compilações
- Documentações
- Notificações
- Dependências
- Lançamentos
- SCMs
- Distribuições
- Local: refere-se a um repositório local onde todas as dependências do projeto são armazenadas e está localizado junto à instalação atual na pasta padrão como "m2". Trata-se de um cache de downloads remotos que também possui os artefatos de compilação temporária, os quais não foram ainda lançados.
- Remoto: refere-se a qualquer outro tipo de repositório que possa ser acessado por uma variedade de protocolos, tais como file:// or http://. Esses repositórios podem estar em um local remoto, configurados por terceiros, para o download de artefatos, ou em um repositório interno configurado em um arquivo ou servidor HTTP, usado para compartilhar artefatos privados entre as equipes de desenvolvimento para o gerenciamento de lançamentos internos.
6.6. Configurando Implantações em um Repositório Remoto Nexus
distributionManagement ao arquivo pom.xml do seu projeto, como demonstrado no exemplo de código abaixo.
<distributionManagement>
<repository>
<id>deployment</id>
<name>Internal Releases</name>
<url>http://your_nexus_host:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>deployment</id>
<name>Internal Releases</name>
<url>http://your_nexus_host:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>snapshotRepository é usado quando o qualificador -SNAPSHOT é anexado ao número da versão atual do projeto. Em outras situações, o repositório especificado no elemento repository é usado.
settings-security.xml, usando uma senha mestra. Por padrão, esse arquivo fica na pasta ~/.m2, a menos que você tenha mudado a sua localização ao alterar as propriedades do sistema kie.maven.settings.custom.
<servers>
<server>
<id>deployment</id>
<username>admin</username>
<password>admin.123</password>
</server>
</servers>pom.xml.
6.7. Configuração do Sistema
Procedimento 6.4. Alterando as Propriedades do Sistema
- Edite o arquivo
$JBOSS_HOME/domain/configuration/host.xml - Localize o servidor dos elementos XML que pertencem a main-server-group e adicione as propriedades do sistema. Por exemplo:
<system-properties> <property name="org.uberfire.nio.git.dir" value="..." boot-time="false"/> ... </system-properties>
org.uberfire.nio.git.dir: Local do diretório .niogit. Padrão: diretório de trabalhoorg.uberfire.nio.git.daemon.enabled: Habilita/desabilita GIT daemon. Padrão: verdadeiroorg.uberfire.nio.git.daemon.host: Caso GIT daemon seja habilitado, use essa propriedade como o identificador localhost. Padrão: localhostorg.uberfire.nio.git.daemon.port: Caso GIT daemon seja habilitado, use essa propriedade como o número da porta. Padrão: 9418org.uberfire.nio.git.ssh.enabled: Habilita/Desabilita SSH daemon. Padrão: verdadeiroorg.uberfire.nio.git.ssh.host: Caso SSH daemon seja habilitado, use essa propriedade como o identificador localhost. Padrão: localhostorg.uberfire.nio.git.ssh.port: Caso SSH daemon seja habilitado, use essa propriedade como o número da porta. Padrão: 8001org.uberfire.nio.git.ssh.cert.dir: Local do diretório.securityonde os certificados locais serão armazenados. Padrão: diretório de trabalhoorg.uberfire.metadata.index.dir: Local da pasta.indexpara Lucene. Padrão: diretório de trabalhoorg.uberfire.cluster.id: Nome do cluster Helix, por exemplo: kie-clusterorg.uberfire.cluster.zk: Cadeia de caracteres de conexão ao Zookeeper. Está no formato dehost1:port1,host2:port2,host3:port3. Por exemplo:localhost:2188.org.uberfire.cluster.local.id: Id exclusiva do nó do cluster Helix. Observe que ':' é substituído por '_'. Por exemplo: node1_12345.org.uberfire.cluster.vfs.lock: Nome do recurso definido no cluster Helix, por exemplo: kie-vfsorg.uberfire.cluster.autostart: Atrasa a clusterização VFS até que o aplicativo seja totalmente iniciado, evitando conflitos quando todos os membros do cluster criam clones locais. Padrão: falsoorg.uberfire.sys.repo.monitor.disabled: Desabilita o monitor de configuração (por favor, não desabilite, ao menos que tenha certeza do está fazendo). Padrão: falso.org.uberfire.secure.key: Senha secreta usada pela criptografia de senha. Padrão: org.uberfire.adminorg.uberfire.secure.alg: Algoritmo criptografado usado pela criptografia de senha. Padrão: PBEWithMD5AndDESorg.guvnor.m2repo.dir: Lugar onde a pasta do repositório do Maven será armazenada. Padrão: working-directory/repositories/kieorg.kie.example.repositories: Pasta de onde os repositórios de demonstração serão clonados. Os repositórios de demonstração precisam ser obtidos e colocados nessa pasta. Essa propriedade do sistema tem prioridade sobre as propriedades org.kie.demo e org.kie.example. Padrão: não usado.org.kie.demo: Habilita os clones externos de um aplicativo de demonstração do GitHub. Essa propriedade do sistema tem prioridade sobre org.kie.example. Padrão: verdadeiro.org.kie.example: Habilita a estrutura de exemplo composta pelo Repositório, pela Unidade de Organização e pelo Projeto. Padrão: falso.
Capítulo 7. Importação e Exportação de Processos
7.1. Criando uma Definição de Processo
- Abra a perspectiva Criação de Projeto (Criação → Criação de Projeto).
- No
Explorador de Projeto(Criação de Projeto → Explorador de Projeto), navegue até o projeto onde você deseja criar a definição do processo (no modo de exibição do Projeto, selecione o respectivo repositório e projeto nas listas suspensas; no modo de exibição do Repositório, navegue até o diretórioREPOSITORY/PROJECT/src/main/resources/).Nota
É recomendável criar os seus recursos, incluindo as suas definições de processos, em um pacote de um projeto para permitir a importação dos recursos e de suas referências. Para criar um pacote, siga as instruções a seguir:- No modo de exibição do Repositório do Explorador de Projeto, navegue até o diretório
REPOSITORY/PROJECT/src/main/resources/. - Vá até Novo Item → Pacote.
- Na caixa de diálogo Novo recurso, defina o nome do pacote e verifique o local do pacote no repositório.
- A partir do menu de perspectiva, vá até Novo Item → Processos Empresariais.
- Na caixa de diálogo Novos Processos, insira o nome do processo e clique em OK. Aguarde até que o Editor do Processo apareça com o diagrama do processo.
7.2. Importando uma Definição de Processo
- No Explorador de Projeto, selecione um projeto e o respectivo pacote para o qual você deseja importar a definição do processo.
- Crie um novo Processo Empresarial para trabalhar indo até Novo Item → Processo Empresarial.
- Na barra de ferramentas do Designer de Processos, clique no ícone Importar
na barra de ferramentas do editor e selecione o formato da definição do processo importado. Observe que você deve optar por sobrescrever a definição do processo existente para poder importar.
- A partir da janela Importar, localize o arquivo do processo e clique em Importar.

Figura 7.1. Importar Janela
7.3. Importando jPDL 3.2 para BPMN2

Figura 7.2. Migrar jPDL 3.2 para BPMN2

Figura 7.3. Caixa de diálogo Migrar para BPMN2
Importante
7.4. Exportando um Processo
Procedimento 7.1. Exportando um processo empresarial
- Abra a perspectiva Criação de Projetos: no menu principal, clique em Criação → Criação de Projeto.
- Selecione o processo empresarial a ser exportado para visualizá-lo no Designer de Processos.
- Clique no botão (
) da barra de ferramentas do designer de processos e selecione Exibir as Fontes do Processo a partir das opções suspensas.
- A janela Fontes do Processo é exibida.
- Clique no botão Baixar BPMN2 e salve o processo empresarial no local desejado.
Parte III. Integração
Capítulo 8. Implantando os Artefatos do Red Hat JBoss BPM Suite no Repositório S-RAMP (SOA Repository Artifact Model and Protocol)
8.1. Implantando os Artefatos do Red Hat JBoss BPM Suite no Repositório S-RAMP Usando Maven
pom.xml, como apresentado abaixo:
<build>
<extensions>
<extension>
<groupId>org.overlord.sramp</groupId>
<artifactId>s-ramp-wagon</artifactId>
<version>${s-ramp-wagon.version}</version>
</extension>
</extensions>
</build>- Clone o repositório git onde você salvou o projeto BPM Suite executando o seguinte comando:
git clone http://localhost:8001/REPOSITORY_NAME
- Na linha de comando, mova para a pasta que contém o projeto.
- Siga as instruções em Red Hat JBoss Fuse Service Works 6 Development Guide, Volume 3: Governance, na seção Implantando no S-RAMP (Deploying to S-RAM). Use o URL do exemplo abaixo:
<distributionManagement> <repository> <id>local-sramp-repo</id> <name>S-RAMP Releases Repository</name> <url>sramp://S-RAMP_SERVER_URL/s-ramp-server/</url> </repository> <snapshotRepository> <id>local-sramp-repo-snapshots</id> <name>S-RAMP Snapshots Repository</name> <url>sramp://S-RAMP_SERVER_URL/s-ramp-server/</url> </snapshotRepository> </distributionManagement>Com esses parâmetros de configuração, as implantações do Maven são enviadas diretamente para o repositório S-RAM, usando o API S-RAMP. Observe que os artefatos são adicionados ao repositório S-RAM com um tipo de artefato baseado no tipo Maven do projeto. Você pode substituir esse comportamente ao adicionar um parâmtero de consulta ao repositório URL no arquivopom.xml. Por exemplo:<distributionManagement> <repository> <id>local-sramp-repo</id> <name>S-RAMP Releases Repository</name> <url>sramp://S-RAMP_SERVER_URL/s-ramp-server/?artifactType=KieJarArchive</url> </repository> </distributionManagement>O exemplo acima faz com que o artefato do Maven seja carregado com um tipo de artefato S-RAMP de KieJarArchive. - Corrija o plug-in do maven no arquivo
pom.xmle adicione a ele uma dependência como a seguir, no caso do projeto não conter as tabelas de decisão:<plugins> <plugin> <groupId>org.kie</groupId> <artifactId>kie-maven-plugin</artifactId> <version>6.0.2-redhat-6</version> <extensions>true</extensions> <dependencies> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-bpmn2</artifactId> <version>6.0.2-redhat-6</version> </dependency> </dependencies> </plugin> </plugins>Caso o projeto contenha tabelas de decisão, use essa dependência para o kie-maven-plugin:<plugins> <plugin> <groupId>org.kie</groupId> <artifactId>kie-maven-plugin</artifactId> <version>6.0.2-redhat-6</version> <extensions>true</extensions> <dependencies> <dependency> <groupId>org.drools</groupId> <artifactId>drools-decisiontables</artifactId> <version>6.0.2-redhat-6</version> </dependency> </dependencies> </plugin> </plugins> - Execute uma implantação limpa do maven usando o seguinte comando:
mvn -s sramp-settings.xml deploy
.
Nota
settings.xml. Para mais detalhes sobre credenciais, consulte a documentação sobre Autenticação em Red Hat JBoss Fuse Service Works (FSW).
8.2. Implantando os Artefatos do Red Hat JBoss BPM Suite no Repositório S-RAMP Usando a Interface Gráfica do Usuário (GUI)
- Em um navegador da web, navegue até http://localhost:8080/s-ramp-ui/. Se a interface do usuário tiver sido configurada para executar a partir de um nome de domíno, substitua
localhostpelo nome de domínio. Por exemplo, http://www.example.com:8080/s-ramp-ui/. - Clique em Artefatos.
- Na seção Gerenciar Artefatos, selecione Importar.
- Localize o arquivo kie que você queira implantar. Na caixa de diálogo que abrir, preencha
KieJarArchivecomo o tipo e selecione Importar. - A implantação, então, cria estas entradas no repositório S-RAMP:
KieJarArchive, da qual derivam-se:KieXmlDocument(caso o arquivo contenhakmodule.xml)BpmnDocument(caso o arquivo contenha definiçõesbpmn)DroolsDocument(caso o arquivo contenha definiçõesdrl)
Capítulo 9. Integrando o Red Hat JBoss BPM Suite ao Red Hat JBoss Fuse
features.xml: um fornecendo os recursos principais do JBoss BPM Suite e JBoss BRMS, o qual define os recursos OSGi que podem ser implantados no JBoss Fuse, e o outro fornecendo um suporte adicional à integração ao SwitchYard e Camel.
Nota
Importante
drools-karaf-features-6.2.0.Final-redhat-6-BZ1232486-features.xml:
- drools-common
- drools-module
- drools-templates
- drools-decisiontable
- drools-jpa
- kie
- kie-ci
- kie-spring
- kie-aries-blueprint
- jbpm-commons
- jbpm-human-task
- jbpm
- droolsjbpm-hibernate
- h2
Tabela 9.1. Exemplos de Casos de Uso e Recursos
| Recurso | Caso de Uso |
|---|---|
drools-module | Usa o mecanismo JBoss BRMS para a avaliação de regras, sem necessidade de persistências, processos ou tabelas de decisão. |
drools-jpa | Usa o mecanismo JBoss BRMS para a avaliação de regras com persistências e transações mas, sem necessidade de processos ou tabelas de decisão. O recurso drools-jpa já inclui drools-module, no entanto você também pode precisar de instalar o recurso droolsjbpm-hibernate ou verificar se um pacote Hibernate compatível foi instalado. |
drools-decisiontable | Usa o mecanismo JBoss BRMS com tabelas de decisão. |
jbpm | Usa o JBoss BPM Suite (ou o mecanismo JBoss BRMS com processos). O recurso jbpm já inclui drools-module e drools-jpa. Você também pode precisar de instalar o recurso droolsjbpm-hibernate ou verificar se um pacote Hibernate compatível foi instalado. |
jbpm e jbpm-human-task | Usa o JBoss BPM Suite (ou o mecanismo JBoss BRMS com processos) com Tarefas Humanas. |
mecanismos principais jars e kie-ci. | Usa o JBoss BRMS ou JBoss BPM Suite com KieScanner (KIE-CI) para baixar kJARs de um repositório do Maven. |
kie-spring | Usa a integração do KIE-Spring. |
kie-spring e kie-aries-blueprint. | Usa a integração do KIE-Aries-Blueprint. |
org/jboss/integration/fuse/karaf-features/1.0.0.redhat-620137/karaf-features-1.0.0.redhat-620137-features.xml:
- fuse-bxms-switchyard-common-knowledge
- fuse-bxms-switchyard-rules
- fuse-bxms-switchyard-bpm
- kie-camel
- jbpm-workitems-camel
installDir/etc/org.ops4j.pax.url.mvn.cfg.
9.1. Instale/ Atualize os Recursos Principais de Integração
drools-karaf-features-6.2.0.Final-redhat-6-features.xml), você precisará removê-los assim como todos os seus arquivos associados antes de instalar o arquivo mais recente features.xml.
Procedimento 9.1. Removendo uma Instalação drools-karaf-features Existente
- Inicie o console Fuse usando:
$ ./installDir/bin/fuse
- Desinstale recursos/ aplicativos antigos que usavam o arquivo
features.xmlanterior. Por exemplo:JBossFuse:karaf@root> features:uninstall drools-module JBossFuse:karaf@root> features:uninstall jbpm JBossFuse:karaf@root> features:uninstall kie-ci
- Pesquise por referências de pacotes usando drools/kie/jbpm e remova-as:
list -t 0 -s | grep drools list -t 0 -s | grep kie list -t 0 -s | grep jbpm
Para remover os pacotes:karaf@root> osgi:uninstall <BUNDLE_ID>
- Remova o url drools-karaf-features antigo:
karaf@root> features:removeurl mvn:org.drools/drools-karaf-features/6.2.0.Final-redhat-<VERSION>/xml/features
- Reinicie Fuse
- Adicione o novo arquivo de recursos:
karaf@root> features:addurl mvn:org.drools/drools-karaf-features/6.2.0.Final-redhat-6-BZ1232486/xml/features
- Instale os recursos:
karaf@root> features:install ...
drools-karaf-features:
Procedimento 9.2. Instale os recursos principais do JBoss BPM Suite e JBoss BRMS
- Baixe e instale a correção.
- Baixe
jboss-brms-6.1.1-BZ-1232486.zip. - Descompacte-o.
- Navegue até o diretório
BZ-1232486descompactado. - Execute o seguinte comando de console:
$ mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=drools-karaf-features-6.2.0.Final-redhat-6-BZ1232486-features.xml -DgroupId=org.drools -DartifactId=drools-karaf-features -Dversion=6.2.0.Final-redhat-6-BZ1232486 -Dpackaging=xml -Dclassifier=features
- Configure os repositórios necessários:
- Edite o arquivo
installDir/etc/org.ops4j.pax.url.mvn.cfgna sua instalação do JBoss Fuse e adicione a seguinte entrada à variávelorg.ops4j.pax.url.mvn.repositories, observe que as entradas são separadas por ‘, \’:- http://maven.repository.redhat.com/techpreview/all/@id=bxms-product-repo
- Inicie o JBoss Fuse:
$ ./installDir/bin/fuse
- Adicione uma referência ao arquivo dos recursos principais executando o seguinte comando de console:
JBossFuse:karaf@root> features:addurl mvn:org.drools/drools-karaf-features/6.2.0.Final-redhat-6-BZ1232486/xml/features
- Você pode instalar, agora, os recursos fornecidos por este arquivo executando, por exemplo, o seguinte comando de console:
JBossFuse:karaf@root> features:install drools-module
9.2. Instale os Recursos Adicionais de Integração
Importante
Procedimento 9.3. Integração do SwitchYard e Camel
- Adicione uma referência ao arquivo dos recursos para uma integração adicional com o SwitchYard e Camel executando o seguinte comando de console:
JBossFuse:karaf@root> features:addurl mvn:org.jboss.integration.fuse/karaf-features/1.0.0.redhat-620137/xml/features
- Você pode instalar, agora, os recursos fornecidos pela integração do SwitchYard e Camel executando, por exemplo, o seguinte comando de console:
JBossFuse:karaf@root> features:install fuse-bxms-switchyard-rules
9.3. Instale os Aplicativos de Início Rápido de Integração do JBoss Fuse
org/jboss/integration/fuse/quickstarts/karaf-features/1.0.0.redhat-620137/karaf-features-1.0.0.redhat-620137-features.xml:
- fuse-bxms-switchyard-quickstart-bpm-service
- fuse-bxms-switchyard-quickstart-remote-invoker
- fuse-bxms-switchyard-quickstart-rules-camel-cbr
- fuse-bxms-switchyard-quickstart-rules-interview
- fuse-bxms-switchyard-quickstart-rules-interview-container
- fuse-bxms-switchyard-quickstart-rules-interview-dtable
- fuse-bxms-switchyard-demo-library
- fuse-bxms-switchyard-demo-helpdesk
installDir/etc/org.ops4j.pax.url.mvn.cfg.
Procedimento 9.4. Instalando o Aplicativo de Início Rápido
- Adicione uma referência ao arquivo dos recursos executando o seguinte comando de console:
JBossFuse:karaf@root> features:addurl mvn:org.jboss.integration.fuse.quickstarts/karaf-features/1.0.0.redhat-620137/xml/features
- Você pode instalar, agora, os aplicativos de início rápido fornecidos por este arquivo de recursos executando, por exemplo, o seguinte comando de console:
JBossFuse:karaf@root> features:install fuse-bxms-switchyard-quickstart-bpm-service
Procedimento 9.5. Baixando e Instalando os Arquivos ZIP de Início Rápido
- Baixe o arquivo ZIP do aplicativo de início rápido.
- Desempacote os conteúdos do diretório de início rápido no seu diretório existente
installDir/quickstarts. - Desempacote os conteúdos do diretório do sistema no seu diretório existente
installDir/system.
9.3.1. Testando o seu Primeiro Aplicativo de Início Rápido
Procedimento 9.6. Testando o Aplicativo de Início Rápido
- Inicie o JBoss Fuse:
$ ./installDir/bin/fuse
- Instale e inicie switchyard-bpm-service executando o seguinte comando de console:
JBossFuse:karaf@root> features:install fuse-bxms-switchyard-quickstart-bpm-service
Nota
Todos os recursos dependentes especificados pelo arquivo de recursos do aplicativo serão instalados automaticamente. - Envie uma solicitação de serviço web para invocar o gateway SOAP.
- Abra uma janela do terminal e navegue até o diretório de início rápido associado que foi desempacotado do arquivo ZIP do aplicativo de início rápido (nesse caso, switchyard-bpm-service).
- Execute o seguinte comando:
$ mvn clean install
Nota
Você precisará dos seguintes repositórios configurados no seu arquivosettings.xml:- http://maven.repository.redhat.com/techpreview/all/
- http://repository.jboss.org/nexus/content/repositories/public/
- Execute o seguinte comando:
$ mvn exec:java -Pkaraf
- Você receberá a seguinte resposta:
SOAP Reply: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/><soap:Body><ns2:submitOrderResponse xmlns:ns2="urn:switchyard-quickstart:bpm-service:1.0"> <orderId>test1</orderId> <accepted>true</accepted> <status>Thanks for your order, it has been shipped!</status> </ns2:submitOrderResponse></soap:Body></soap:Envelope>
Capítulo 10. Integrando ao Spring
10.1. Configurando o Red Hat JBoss BPM Suite com Spring
jboss-bpms-engine.zip e é chamado de kie-spring-VERSION-redhat-MINORVERSION.jar.
Como um Mecanismo de Processos Autogerenciados
RuntimeManager, uma sincronização perfeita entre o mecanismo de processos e o serviço de tarefas é gerenciada internamente e o usuário final não precisa lidar com o código interno para fazer os dois funcionarem juntos.
Como um Serviço de Tarefas Compartilhado
TaskService, você obtém mais flexibilidade na configuração da instância do serviço de tarefas, já que é independente do RuntimeManager. Depois de configurado, ele é, então, usado pelo RuntimeManager quando solicitado.
org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean. Essa classe de fábrica é responsável pela produção de instâncias do RuntimeEnvironment que são consumidas pelo RuntimeManager mediante criação. Segue abaixo um RuntimeEnvironment configurado com o gerenciador de entidade, gerenciador de transação e recursos para a classe org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean:
<bean id="runtimeEnvironment" class="org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean">
<property name="type" value="DEFAULT"/>
<property name="entityManagerFactory" ref="jbpmEMF"/>
<property name="transactionManager" ref="jbpmTxManager"/>
<property name="assets">
<map>
<entry key-ref="process"><util:constant static-field="org.kie.api.io.ResourceType.BPMN2"/></entry>
</map>
</property>
</bean>
- DEFAULT - configuração padrão (mais comum) para o RuntimeManager
- EMPTY - ambiente completamente vazio para ser populado manualmente
- DEFAULT_IN_MEMORY - o mesmo que DEFAULT, mas sem persistências do mecanismo de tempo de execução
- DEFAULT_KJAR - o mesmo que DEFAULT, mas os ativos de conhecimento são tomados do KJAR identificado por releaseid ou GAV
- DEFAULT_KJAR_CL - construído diretamente a partir do caminho de classe que consiste no descritor kmodule.xml
- knowledgeBase
- assets
- releaseId
- groupId, artifactId, version
entity manager factory e transaction manager. Segue abaixo um exemplo de RuntimeManager para org.kie.spring.factorybeans.RuntimeManagerFactoryBean:
<bean id="runtimeManager" class="org.kie.spring.factorybeans.RuntimeManagerFactoryBean" destroy-method="close"> <property name="identifier" value="spring-rm"/> <property name="runtimeEnvironment" ref="runtimeEnvironment"/> </bean>
Capítulo 11. Integração CDI
11.1. Integração CDI
- gerenciador de entidades e fábrica de gerenciador de entidades
- retorno de chamadas de grupos de usuários para tarefas humanas
- provedor de identidade para passar informações sobre o usuário para os serviços
public class EnvironmentProducer {
@PersistenceUnit(unitName = "org.jbpm.domain")
private EntityManagerFactory emf;
@Inject
@Selectable
private UserGroupCallback userGroupCallback;
@Produces
public EntityManagerFactory getEntityManagerFactory() {
return this.emf;
}
@Produces
@RequestScoped
public EntityManager getEntityManager() {
EntityManager em = emf.createEntityManager();
return em;
}
public void close(@Disposes EntityManager em) {
em.close();
}
@Produces
public UserGroupCallback produceSelectedUserGroupCalback() {
return userGroupCallback;
}
@Produces
public IdentityProvider produceIdentityProvider {
return new IdentityProvider() {
// implement IdentityProvider
};
}
}
deployments/business-central.war/WEB-INF/beans.xml pode ser configurado para alterar os parâmetros de configuração atuais da nova implementação usergroupcallback.
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd"> <alternatives> <class>org.jbpm.services.task.identity.JAASUserGroupCallbackImpl</class> </alternatives> </beans>
Nota
org.jbpm.services.task.identity.JAASUserGroupCallbackImpl é apenas um exemplo dado aqui para demonstrar as configurações do servidor do aplicativo, independente do que ele seja na verdade (LDAP, DB, etc).
Capítulo 12. Persistência
Nota
- Estado da sessão: inclui a id da sessão, a data da última modificação, os dados da sessão que as regras empresariais precisariam para avaliação, o estado dos trabalhos do temporizador.
- Estado da instância do processo: inclui a id da instância do processo, a id do processo, a data da última modificação, a data do último acesso de leitura, a data de início da instância do processo, os dados do tempo de execução (o status da execução, incluindo o nó sendo executado, os valores da variável e etc.) e os tipos de eventos.
- Estado do tempo de execução do item de trabalho: inclui a id do item de trabalho, a data de criação, o nome, a id da instância do processo e o estado do item de trabalho propriamente dito.
12.1. Sessão
SessionInfo. Elas persistem o estado da sessão KIE do tempo de execução e armazenam os seguintes dados:
Tabela 12.1.
| Campo | Descrição | Anulável |
|---|---|---|
|
id
|
chave primária
|
falso
|
|
lastmodificationdate
|
última vez salvo no armazenamento de dados
|
N/A
|
|
rulesbytearray
|
conjunto de dados binário com estado de sessão (blob binário)
|
falso
|
|
startdate
|
início da sessão
| |
|
optlock
|
número da versão usado para bloquear o valor para o bloqueio otimista.
| |
12.2. Instâncias do Processo
ProcessInstanceInfo, que persistem o estado de uma instância do processo em tempo de execução e armazenam os seguintes dados:
Tabela 12.2.
| Campo | Descrição | Anulável |
|---|---|---|
|
instanceid
|
chave primária
|
falso
|
|
lastmodificationdate
|
última vez salvo no armazenamento de dados
|
N/A
|
|
lastreaddate
|
última leitura do armazenamento de dados
|
N/A
|
|
processid
|
Id do processo em que a instância se baseia
|
falso
|
|
processinstancebytearray
|
conjunto de dados binário com o estado de instância do processo (blob binário)
|
falso
|
|
startdate
|
data de início da instância do processo
| |
|
optlock
|
número da versão usado para bloquear o valor para o bloqueio otimista.
| |
|
state
|
estado da instância do processo
|
falso
|
ProcessInstanceInfo possui uma relação 1:N com a entidade EventTypes.
EventTypes contém os seguintes dados:
Tabela 12.3.
| Campo | Descrição | Anulável |
|---|---|---|
|
instanceid
|
referência à Instância do Processo (chave estrangeira para
processinstanceinfo)
|
falso
|
|
element
|
campo de texto relacionado a um evento ao qual a Instância do processo foi submetida
| |
Suporte de Bloqueio Pessimista
import org.kie.api.runtime.Environment; import org.kie.api.runtime.EnvironmentName; import org.kie.api.runtime.manager.RuntimeManager; import org.kie.api.runtime.manager.RuntimeManagerFactory; ... // here env is an instance of org.kie.api.runtime.Environment env.set(EnvironmentName.USE_PESSIMISTIC_LOCKING, true); // now create your Runtime Manager using this enviornment RuntimeManager manager = RuntimeManagerFactory.Factory.get().newPerRequestRuntimeManager(environment);
12.3. Itens de Trabalho
workiteminfo, as quais persistem o estado da instância do item de trabalho em particular durante o tempo de execução e armazenam os seguintes dados:
Tabela 12.4.
| Campo | Descrição | Anulável |
|---|---|---|
|
workitemid
|
chave primária
|
falso
|
|
name
|
nome do item de trabalho
| |
|
processinstanceid
|
id da instância do processo pai
|
falso
|
|
state
|
número inteiro representando o estado do item de trabalho
|
falso
|
|
optlock
|
número da versão usado para bloquear o valor para o bloqueio otimista.
| |
|
workitembytearray
|
conjunto de dados binário com o estado do item de trabalho (blob binário
)
|
falso
|
|
creationDate
|
carimbo de data/hora de criação do item de trabalho
|
falso
|
12.4. Configuração da Persistência
12.4.1. Configuração da Persistência
JBPMHelper, depois que você criar uma sessão, ou usando JPAKnowledgeService, para a criação da sua sessão. A última opção proporciona mais flexibilidade, enquanto JBPMHelper possui um método próprio para criar uma sessão e utiliza um arquivo de configuração para configurar essa sessão.
12.4.2. Configurando a Persistência Usando JBPMHelper
- Defina o seu aplicativo para usar um construtor de sessão JBPMHelper adequado:
KieSession ksession = JBPMHelper.newKieSession(kbase);KieSession ksession = JBPMHelper.loadKieSession(kbase, sessionId);
- Configure a persistência no arquivo
jBPM.properties.Exemplo 12.1. Arquivo jBPM.properties de exemplo com persistência para o banco de dados H2 em memória
# for creating a datasource persistence.datasource.name=jdbc/jbpm-ds persistence.datasource.user=sa persistence.datasource.password= persistence.datasource.url=jdbc:h2:tcp://localhost/~/jbpm-db persistence.datasource.driverClassName=org.h2.Driver # for configuring persistence of the session persistence.enabled=true persistence.persistenceunit.name=org.jbpm.persistence.jpa persistence.persistenceunit.dialect=org.hibernate.dialect.H2Dialect # for configuring the human task service taskservice.enabled=true taskservice.datasource.name=org.jbpm.task taskservice.transport=mina taskservice.usergroupcallback=org.jbpm.task.service.DefaultUserGroupCallbackImpl
JBPMHelper.startH2Server(); e registrá-lo com o mecanismo usando a chamada de método JBPMHelper.setupDataSource();.
12.4.3. Configurando a Persistência Usando JPAKnowledgeService
- Defina o seu aplicativo para usar a sessão de conhecimento criada pelo JPAKnowledgeService:
- Defina a sessão baseada em um banco de dados de conhecimento, uma configuração da sessão de conhecimento e um ambiente. O ambiente deve conter uma referência à sua Fábrica de Gerenciador de Entidades:
// create the entity manager factory and register it in the environment EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.jbpm.persistence.jpa" ); Environment env = KnowledgeBaseFactory.newEnvironment(); env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf ); // create a new knowledge session that uses JPA to store the runtime state KieSession ksession = JPAKnowledgeService.newKieSession( kbase, null, env ); int sessionId = ksession.getId(); // invoke methods on your method here ksession.startProcess( "MyProcess" ); ksession.dispose();
- Defina a sessão baseada em uma id de sessão específica.
// recreate the session from database using the sessionId ksession = JPAKnowledgeService.loadKieSession(sessionId, kbase, null, env );
- Configure a persistência no arquivo
META-INF/persistence.xml: configure JPA para usar o Hibernate e o banco de dados respectivo.As informações sobre como configurar a fonte de dados no servidor do seu aplicativo devem estar disponíveis na documentação enviada com o servidor do aplicativo. Para esse tipo de informação para o JBoss Enterprise Application Platform, consulte o guia Administration and Configuration Guide deste produto.Exemplo 12.2. Arquivo persistence.xml de exemplo com persistência para uma fonte de dados H2
jdbc/jbpm-ds<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <persistence version="1.0" xsi:schemaLocation= "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="org.jbpm.persistence.jpa" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/jbpm-ds</jta-data-source> <mapping-file>META-INF/JBPMorm.xml</mapping-file> <class>org.drools.persistence.info.SessionInfo</class> <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class> <class>org.drools.persistence.info.WorkItemInfo</class> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <property name="hibernate.max_fetch_depth" value="3"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup"/> </properties> </persistence-unit> </persistence>
JBPMHelper.startH2Server(); e registrá-lo com o mecanismo usando a chamada de método JBPMHelper.setupDataSource();.
Nota
PoolingDataSource ds = new PoolingDataSource();
ds.setUniqueName("jdbc/jbpm-ds");
ds.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");
ds.setMaxPoolSize(3);
ds.setAllowLocalTransactions(true);
ds.getDriverProperties().put("user", "sa");
ds.getDriverProperties().put("password", "sasa");
ds.getDriverProperties().put("URL", "jdbc:h2:tcp://localhost/~/jbpm-db");
ds.getDriverProperties().put("driverClassName", "org.h2.Driver");
ds.init();Capítulo 13. Transações
13.1. Transações
13.2. Definindo as Transações
- Registre um gerenciador de transação no seu ambiente.
Exemplo 13.1. Codifique com o registro do gerenciador de transação
// create the entity manager factory EntityManagerFactory emf = EntityManagerFactoryManager.get().getOrCreate("org.jbpm.persistence.jpa"); TransactionManager tm = TransactionManagerServices.getTransactionManager(); Environment env = EnvironmentFactory.newEnvironment(); env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf); env.set(EnvironmentName.TRANSACTION_MANAGER, tm); // setup the runtime environment RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .addAsset(ResourceFactory.newClassPathResource("MyProcessDefinition.bpmn2"), ResourceType.BPMN2) .addEnvironmentEntry(EnvironmentName.TRANSACTION_MANAGER, tm) .addEnvironmentEntry(EnvironmentName.PERSISTENCE_CONTEXT_MANAGER, new JpaProcessPersistenceContextManager(env)) .addEnvironmentEntry(EnvironmentName.TASK_PERSISTENCE_CONTEXT_MANAGER, new JPATaskPersistenceContextManager(env)) .get(); - Inicialize a KieSession:
// get the KieSession RuntimeManager manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession = runtime.getKieSession();
- Defina o gerenciador de transação em
jndi.properties.Exemplo 13.2. Definição do gerenciador de transação Bitronix em jndi.properties
java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory
Nota
Para usar um gerenciador de transação JTA, edite hibernate.transaction.manager_lookup_class, a propriedade do gerenciador de transação, no arquivopersistence.xmlpara carregar o seu gerenciador de transação.Exemplo 13.3. Gerenciador de Transação JBoss definido como gerenciador de transações
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
- Defina o início e o fim da transação.
// start the transaction UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); // perform multiple commands inside one transaction ksession.insert( new Person( "John Doe" ) ); ksession.startProcess("MyProcess"); // commit the transaction ut.commit();
13.3. Transações Gerenciadas por Contêiner
org.jbpm.persistence.jta.ContainerManagerTransactionManager. Isto é devido à implementação padrão do gerenciador de transação no JBoss BPM Suite ser baseada na classe UserTransaction que obtém o status de transação. No entanto, alguns servidores do aplicativo no modo CMT não permitem o acesso à instância UserTransaction a partir do JNDI.
ContainerManagedTransactionManager espera que a transação esteja sempre ativa (retornando ACTIVE para o método getStatus()).
Nota
Configurando o Gerenciador de Transação
ContainerManagedTransactionManager, é preciso que ele seja inserido no ambiente antes que você crie ou carregue uma sessão:
Environment env = EnvironmentFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
env.set(EnvironmentName.TRANSACTION_MANAGER, new ContainerManagedTransactionManager());
env.set(EnvironmentName.PERSISTENCE_CONTEXT_MANAGER, new JpaProcessPersistenceContextManager(env));
persistence.xml. Por exemplo, se estiver usando IBM WebSphere:
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.CMTTransactionFactory"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/>
Descartando a KSession em uma CMT
dispose()). Essa ação causa exceções na conclusão da transação, já que o Mecanismo de Processo precisa limpar o estado depois que a invocação tiver terminado.
execute() da classe especializada org.jbpm.persistence.jta.ContainerManagedTransactionDisposeCommand. O uso desse comando garante que a ksession seja descartada quando a transação estiver, de fato, concluída.
afterDisposal da transação, ao invés de executá-lo diretamente. Caso não haja nenhuma transação ativa, a ksession é descartada imediatamente.
Capítulo 14. Registro em Log
- Instância de processo, como
processinstancelog - Instância de elemento, como
nodeinstancelog - Instância de variável, como
variableinstancelog
Tabela 14.1. Campos da Tabela ProcessInstanceLog
| Campo | Descrição | Anulável |
|---|---|---|
|
id
|
Chave primária da entidade de log
|
Não
|
|
end_date
|
Data de término da instância do processo
|
Sim
|
|
processid
|
Nome (id) do processo subjacente
|
Sim
|
|
processinstanceid
|
Id da instância do processo
|
Não
|
|
start_date
|
Data de início da instância do processo
|
Sim
|
|
status
|
Status da instância do processo
|
Sim
|
|
parentProcessInstanceId
|
Id da instância do processo da instância do processo pai, caso aplicável
|
Sim
|
|
outcome
|
Resultado da instância do processo (detalhes sobre a conclusão do processo, como código de erro)
|
Sim
|
Tabela 14.2. Campos da Tabela NodeInstanceLog
| Campo | Descrição | Anulável |
|---|---|---|
|
id
|
Chave primária da entidade de log
|
Não
|
|
log_date
|
Data do evento
|
Sim
|
|
nodeid
|
Id do nó do elemento de processo subjacente
|
Sim
|
|
nodeinstanceid
|
Id da instância do nó
|
Sim
|
|
nodename
|
Nome do nó subjacente
|
Sim
|
|
processid
|
Id do processo subjacente
|
Sim
|
|
processinstanceid
|
Id da instância do processo pai
|
Não
|
|
type
|
Tipo de evento (
0 = evento de entrada, 1 = evento de saída)
|
Não
|
Tabela 14.3. Campos da Tabela VariableInstanceLog
| Campo | Descrição | Anulável |
|---|---|---|
|
id
|
Chave primária da entidade de log
|
Não
|
|
log_date
|
Data do evento
|
Sim
|
|
processid
|
Nome (id) do processo subjacente
|
Sim
|
|
processinstanceid
|
Id da instância do processo
|
Não
|
|
value
|
Valor da variável na hora do log
|
Sim
|
|
variableid
|
Id da variável estabelecida na definição do processo
|
Sim
|
|
variableinstanceid
|
Id da instância da variável
|
Sim
|
|
outcome
|
Resultado da instância do processo (detalhes sobre a conclusão do processo, como código de erro)
|
Sim
|
14.1. Registrando Eventos no Log do Banco de Dados
- Mapeie as classes de log na fonte de dados para que a fonte de dados fornecida aceite as entradas de log. No Red Hat JBoss EAP, edite as propriedades da fonte de dados no arquivo
persistence.xml.Exemplo 14.1. Classes ProcessInstanceLog, NodeInstanceLog e VariableInstanceLog habilitadas por processInstanceDS
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <persistence version="1.0" xsi:schemaLocation= "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="org.jbpm.persistence.jpa"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/processInstanceDS</jta-data-source> <class>org.drools.persistence.info.SessionInfo</class> <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class> <class>org.drools.persistence.info.WorkItemInfo</class> <class>org.jbpm.process.audit.ProcessInstanceLog</class> <class>org.jbpm.process.audit.NodeInstanceLog</class> <class>org.jbpm.process.audit.VariableInstanceLog</class> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <property name="hibernate.max_fetch_depth" value="3"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup"/> </properties> </persistence-unit> </persistence> - Registre um agente na sua Sessão Kie.
Exemplo 14.2. Importando os Agentes
import org.jbpm.process.audit.AuditLogService; import org.jbpm.process.audit.AuditLoggerFactory; import org.jbpm.process.audit.AuditLoggerFactory.Type; import org.jbpm.process.audit.JPAAuditLogService; ...
Exemplo 14.3. Registrando um Agente a uma Sessão Kie
@PersistenceUnit(unitName = PERSISTENCE_UNIT_NAME) private EntityManagerFactory emf; private AuditLogService auditLogService; @PostConstruct public void configure() { auditLogService = new JPAAuditLogService(emf); ((JPAAuditLogService) auditLogService).setPersistenceUnitName(PERSISTENCE_UNIT_NAME); if( emf == null ) { ((JPAAuditLogService) auditLogService).setPersistenceUnitName(PERSISTENCE_UNIT_NAME); } RuntimeEngine runtime = singletonManager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); AuditLoggerFactory.newInstance(Type.JPA, ksession, null); } - Facultativamente, chame o método
addFilterno agente para remover as informações irrelevantes. Apenas as informações aceitas por todos os filtros aparecem no banco de dados. - As classes do agente podem ser exibidas no Modo de Exibição de Auditoria:
<dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-audit</artifactId> <version>6.0.1.Final</version> </dependency>
14.2. Funcionalidade Logback
logback para a configuração de registro em log.
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.x</version>
</dependency>Nota
slf4j-nop e slf4j-simple são ideais para um ambiente leve.
14.3. Configurando o Registro em Log
logback.xml em business-central.war/WEB-INF/classes/logback.xml. Para definir o nível de log do pacote org.drools para a "depuração" do registro extenso, você deve adicionar ao arquivo a linha a seguir:
<configuration>
<logger name="org.drools" level="debug"/>
...
<configuration>- org.guvnor
- org.jbpm
- org.kie
- org.slf4j
- org.dashbuilder
- org.uberfire
- org.errai
- etc...
log4j, log4j.xml pode ser localizado em business-central.war/WEB-INF/classes/log4j.xml e pode ser configurado da seguinte forma:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<category name="org.drools">
<priority value="debug" />
</category>
...
</log4j:configuration>Nota
Capítulo 15. Localização e Personalização
15.1. Idiomas Disponíveis
- Inglês dos Estados Unidos (
en_US) - Espanhol (
es_ES) - Japônes (
ja_JP) - Chinês (
zh_CN) - Português (
pt_BR) - Francês (
fr_CA) - Alemão (
de_DE)
Nota
15.2. Alterando os Parâmetros de Idiomas
Alterando o Idioma da Interface do Usuário no Business Central
http://localhost:8080/business-central/?locale=pt_BR
Alterando o Idioma da Interface do Usuário no Dashbuilder
- Faça o login no Dashbuilder, depois que o servidor foi iniciado com êxito, e navegue até http://localhost:8080/dashbuilder em um navegador da web.
- Selecione o idioma de sua escolha clicando nas localidades disponíveis na parte superior central da interface do usuário do Dashbuilder para alterar o idioma.
Configurando o Idioma Padrão da Interface do Usuário no Dashbuilder
Procedimento 15.1. Configurando o idioma padrão como francês
- Navegue até
jboss-eap-6.1/standalone/configuratione defina o seguinte no arquivostandalone.xml.<system-properties> <property name="org.jboss.dashboard.LocaleManager.installedLocaleIds" value="en,es,de,fr,ja,pt,zh"/> <property name="org.jboss.dashboard.LocaleManager.defaultLocaleId" value="fr"/> </system-properties> - O idioma padrão da interface do usuário do Dashbuilder está definido agora como francês.
Definindo as Localidades Instaladas no Dashbuilder
Procedimento 15.2. Definindo as localidades instaladas
- Navegue até
jboss-eap-6.1/standalone/configuratione defina o seguinte no arquivostandalone.xml.<system-properties> <property name="org.jboss.dashboard.LocaleManager.installedLocaleIds" value="en,es,de,fr,ja,pt"/> <property name="org.jboss.dashboard.LocaleManager.defaultLocaleId" value="fr"/> </system-properties>
Nota
15.3. Executando JVM com a Codificação UTF-8
Parte IV. Execução
Capítulo 16. Servidor de Execução
16.1. Regras de Atribuição
16.1.1. Definindo as Regras de Atribuição
- Crie um arquivo que contenha a definição de regra no caminho de classe do Business Central (o local recomendado é
$DEPLOY_DIR/standalone/deployments/business-central.war/WEB-INF/classes/):default-add-task.drlcom as regras a serem verificadas quando a Tarefa Humana é criadadefault-complete-task.drlcom as regras a serem verificadas quando a Tarefa Humana é concluída
- Defina as regras no arquivo.
Exemplo 16.1. Conteúdo default-add-task.drl
package defaultPackage
import org.kie.api.task.model.Task;
import org.kie.api.task.model.User;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.PeopleAssignments;
import org.jbpm.services.task.rule.TaskServiceRequest;
import org.jbpm.services.task.exception.PermissionDeniedException;
import org.jbpm.services.task.impl.model.*;
import java.util.HashMap;
import java.util.List;
global TaskServiceRequest request;
rule "Don't allow Mary to complete task when rejected"
when
$task : Task()
$actualOwner : User( id == 'mary') from $task.getTaskData().getActualOwner()
$params : HashMap(this["approved"] == false)
then
request.setAllowed(false);
request.setExceptionClass(PermissionDeniedException.class);
request.addReason("Mary is not allowed to complete task with approved false");
endMary, a tarefa será atribuída automaticamente ao usuário mary.
Exemplo 16.2. Conteúdo default-complete-task.drl
package defaultPackage
import org.kie.api.task.model.Task;
import org.kie.api.task.model.User;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.PeopleAssignments;
import org.jbpm.services.task.rule.TaskServiceRequest;
import org.jbpm.services.task.exception.PermissionDeniedException;
import org.jbpm.services.task.impl.model.*;
import java.util.HashMap;
import java.util.List;
global TaskServiceRequest request;
rule "Don't allow Mary to complete task when rejected"
when
$task : Task()
$actualOwner : User( id == 'mary') from $task.getTaskData().getActualOwner()
$params : HashMap(this["approved"] == false)
then
request.setAllowed(false);
request.setExceptionClass(PermissionDeniedException.class);
request.addReason("Mary is not allowed to complete task without approval.");
endMary, a tarefa será atribuída automaticamente ao usuário mary.
16.2. Sessão de Email
16.2.1. Configurando a sessão de email
- Abra o respectivo arquivo de configuração do perfil (
standalone.xmlorhost.xml) para edição. - Adicione a sessão de email ao subsistema
urn:jboss:domain:mail:1.1.Exemplo 16.3. Nova sessão de email no localhost
<subsystem xmlns="urn:jboss:domain:mail:1.1"> <!-- omitted code --> <mail-session jndi-name="java:/mail/bpmsMailSession" debug="true" from="bpms@company.com"> <smtp-server outbound-socket-binding-ref="bpmsMail"/> </mail-session> </subsystem> - Defina o soquete de saída da sessão no arquivo de configuração do perfil.
Exemplo 16.4. Definição do soquete de saída
<outbound-socket-binding name="bpmsMail"> <remote-destination host="localhost" port="12345"/> </outbound-socket-binding>
Capítulo 17. Plug-in para o Red Hat JBoss Developer Studio
17.1. Plug-in
Parte V. Monitoramento
Capítulo 18. Monitoramento de Processos
18.1. JBoss Operations Network
com.sun.management.jmxremote.* devem ser transferidos para o aplicativo JBoss através do arquivo de configuração pom.xml.
18.2. Instalando o Plug-in do JBoss BRMS no JBoss ON
Procedimento 18.1. Copiando os arquivos JAR do plug-in do JBoss BRMS
- Extraia o pacote de plug-ins do JBoss BRMS colocando-o em um local temporário. Essa ação cria um subdiretório com o nome de jon-plugin-pack-brms-bpms-3.3.0.GA. Por exemplo:
[root@server rhq-agent]# unzip jon-plugin-pack-brms-bpms-3.3.0.GA.zip -d /tmp
- Copie os arquivos JAR do plug-in do JBoss BRMS a partir do diretório jon-plugin-pack-brms-bpms-3.2.0.GA/ no diretório do plug-in do servidor JBoss ON. Por exemplo:
[root@server rhq-agent]# cp /tmp/jon-plugin-pack-brms-bpms-3.3.0.GA/*.jar /opt/jon/jon-server-3.3.0.GA1/plugins
- Inicie o servidor do JBoss Operations Network para atualizar o plug-in do JBoss BRMS.
Procedimento 18.2. Carregando o plug-in do JBoss BRMS através da GUI
- Inicie o servidor do JBoss Operations Network e Faça o Login para acessar a GUI.
- Na navegação superior da GUI, abra o menu Administração.
- Na área de Configuração à esquerda, selecione o link Plug-ins do Servidor.
- No fim da lista dos plug-ins carregados do servidor, clique no botão Carregar um plug-in e selecione o plug-in do BRMS.
- O plug-in do JBoss BRMS para o JBoss Operations Network está agora carregado.
18.3. Monitorando as Bases Kie e Sessões Kie
-kie.mbeans = enabled
KieBaseConfiguration kbconf = KieServices.Factory.get().newKieBaseConfiguration();
kbconf.setOption(MBeansOption.ENABLED);Nota
Kie Services foi implementado para o JBoss BRMS 6; já para o JBoss BRMS 5, a convenção de nomenclatura Drools Services foi usada e ela tinha diferentes medidas sobre as sessões. Por exemplo, a renomeação de ativação → correspondência ocorreu na versão atualizada.
Capítulo 19. Gerenciando Segurança para o Dashbuilder do Red Hat JBoss BPM Suite
19.1. Acessando o Dashbuilder do Red Hat BPM Suite
19.2. Gerenciando Segurança
- admin - administra o sistema Red Hat JBoss BPM Suite e possui total direito de acesso para fazer quaisquer alterações necessárias. Também possui a habilidade de adicionar e remover os usuários do sistema.
- desenvolvedor - implementa os códigos necessários para os processos funcionarem. Usa, na maioria das vezes, a conexão JBDS para exibir os processos, mas também pode usar ocasionalmente a ferramenta web.
- analista - responsável pela criação e pelo planejamento dos processos no sistema. Cria fluxos de processos e lida com os pedidos de alteração dos processos. Os processos criados devem ser testados. Também cria formulários e painéis.
- usuário - usuário diário do sistema que trabalha nas tarefas de negócios que são necessárias para dar continuidade aos processos. Trabalha principalmente com as listas de tarefas.
- gerenciador - visualizador do sistema que está interessado nas estatísticas referentes aos processos empresariais e seus desempenhos, indicadores de negócios e outros tipos de notificação do sistema, assim como às pessoas que interagem com o sistema.
19.3. Permissões do Espaço de Trabalho
Procedimento 19.1. Acessando as Permissões do Espaço de Trabalho
- Faça o login nos Painéis de Negócios a partir do Business Central (como descrito no tópico Acessando o Dashbuilder do Red Hat BPM Suite)
- Selecione o Painel apropriado a partir do menu suspenso do espaço de trabalho.

Figura 19.1. Espaço de Trabalho do Dashbuilder
- Clique no botão Editar propriedades do espaço de trabalho selecionado
para acessar o Painel do Espaço de Trabalho.
- Clique no rótulo Permissões para exibir a tela de gerenciamento das permissões.

Figura 19.2. Tela de Permissões
- Acessar: permissão para fazer o login no aplicativo.
- Administrar: permissão para acessar a barra de ferramentas e os recursos de configuração do sistema.
- Criar páginas: habilidade para criar novas páginas de projetos.
- Editar: permissão para alterar as propriedades do espaço de trabalho.
- Limpar: habilidade para limpar o espaço de trabalho.
- Editar permissões: habilidade para conceder/ negar permissões.
- Alterar painéis permitidos: permissão para restringir os tipos de painéis que podem ser usados nesse espaço de trabalho.

Figura 19.3. Designação de Permissões
- Funções de destino (quem): quais usuários terão as permissões definidas concedidas/ negadas.
- Ações permitidas: dependendo do tipo de recurso, é possível habilitar/desabilitar o que o usuário pode fazer com esse recurso.
- Reverter (opcional): quando existe um conjunto de funções e há o interesse em conceder/negar uma permissão a todas as funções, com exceção de uma.
Nota
19.4. Permissões de Páginas
- Para acessar as Permissões de Páginas, localize o menu suspenso Páginas sob o Painel jBPM (ou sob qualquer outro Painel que desejar).
- Após expandir Páginas, expanda a opção Painel de processos.
- Selecione a opção Permissões de Páginas.

Figura 19.4. Permissões de Páginas
- Visualizar: permissão para deixar a página visível.
- Editar: habilidade para alterar as propriedades de uma página.
- Limpar: habilidade para excluir uma página.
- Editar permissões: habilidade para conceder/ negar permissões a uma página.
19.5. Permissões de Painel
- Para acessar a página Permissões de Painel, expanda a opção Instâncias de painel sob o Painel jBPM (ou sob qualquer outro Painel que estiver usando).
- Expanda a opção Painel e, então, expanda o Painel de processos.
- Expanda a opção Panéis e selecione o processo adequado.
- Abra a página Permissões de Painel.

Figura 19.5. Tela de configuração das permissões do painel
- Visualizar: deixar o painel visível.
- Editar: alterar as propriedades do painel.
- Editar permissões: habilidade para conceder/ negar permissões para o painel.
Apêndice A. Histórico de Revisões
| Histórico de Revisões | |||
|---|---|---|---|
| Revisão 1.0.0-1.1 | Tue Jan 5 2016 | Red Hat Localization Services | |
| |||
| Revisão 1.0.0-1 | Wed Aug 05 2015 | Petr Penicka | |
| |||