Fernando Alencar

Subscribe

Building Your First Process with Oracle BPM 11g

Março 16, 2012 By: fernando Category: BPM/SOA

Excelente artigo de como construir a primeira aplicação em BPM.

http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/obpm/11g/r1/firstProcess/firstprocess_obpm11g.htm#top

Oracle BPM com JSP e Ajax

Março 15, 2012 By: fernando Category: BPM/SOA

Oracle BPM com JSP e Ajax

Nos projetos de BPM que tenho participado utilizando o Oracle BPM como solução BPMS, dificilmente faço o uso de presentations, é muito mais comum eu optar em utilizar páginas JSP como camada de apresentação dos meus processos. Isso se dá pelo fato de que as presentations são bastante limitadas, e quando se faz por necessário ter interfaces mais elaboradas e customizadas, o JSP passa a ser a melhor opção.

Usando JSP, um novo leque de opções passou a existir e uma dessas opções passou a ser a possibilidade de usar Ajax. Ajax, para quem nunca ouviu falar, não é uma linguagem, uma API, tão pouco um framework, Ajax é o acrônimo de Asynchronous Javascript And XML e nada mais é que um conjunto de técnicas usadas para criar aplicações web interativas (RIA). Um dos pilares do Ajax é permitir comunicação assíncrona entre cliente e servidor utilizando requisições HTTP.

O Oracle BPM oferece uma maneira bem interessante de usar Ajax nas páginas JSP, mesmo não sendo nativa e também não tendo nada a respeito dizendo na documentação, é possível fazer a integração da camada de apresentação de um processo BPM com o próprio processo de uma maneira bem tranquila.

Para exemplificar isso melhor, criei um projeto bem simples no Oracle BPM, que na verdade só serve para mostrar como funciona essa integração entre páginas JSP e métodos dentro de um BPM Object através de Ajax.

Primeiros passos

Para começar, criei um BPM Object bem simples, que possui 3 atributos: name (String), mail (String), documents (String[]). Os dois primeiros atributos, que representam o nome e o email de alguém, são do tipo String e o terceiro atributo, que no caso representa os documentos de uma pessoa, é do tipo Array de String. Chamei esse objeto de: BpmObject.

Nesse mesmo objeto (BpmObject), criei ainda um método, esse método será responsável por retornar os documentos de um usuário. Na verdade esse é o método que irei chamar via requisição Ajax através de uma página JSP. O nome desse método ficou definido como getDocuments().

No futuro precisarei alterar esse objeto, mas eu explico depois.

Criando a página JSP

No Oracle BPM, para informar que a apresentação de determinado BPM Object deva se dar por meio de uma página JSP, se faz por necessário a utilização de Screenflows. Screenflow é um fluxo semelhante ao de um processo normal, mas a principal diferença é que o mesmo é executado por um participante único, ou seja, dentro de um Screenflow não existem lanes.

Após ter criado um processo normal, apenas com uma atividade do tipo Global Creation (para criar uma instância do processo) e também com uma Interactive Activity (para apontar para o Screenflow), parti para criação do Screenflow de fato. O Screenflow em questão, será tão simples quanto o processo no qual ele está associado, no caso contará apenas com uma única atividade do tipo Interactive Component Call, que será a responsável por “chamar” uma página JSP associando-a ao BPM Object criado no passo anterior.

Para chamar uma página JSP, se faz por necessária associar um BPM Object a mesma, então nesse caso criei um váriavel de instância do tipo BpmObject (o mesmo criado no primeiro passo) e dei o seu nome de bpmObject. Após isso, criei uma página JSP dentro de: /projetoBPM/webRoot/customJSP/ajaxPage.jsp.

O nome da página em questão é ajaxPage.jsp, e por enquanto ela irá possuir o seguinte código:

  1. <%@ page session=“true”%>
  2. <%@ taglib uri=“http://java.sun.com/jstl/core” prefix=“c”%>
  3. <%@ taglib uri=“http://fuego.com/jsp/ftl” prefix=“f”%>
  4. 
    
  5. 
    
  6. <html xmlns=“http://www.w3.org/1999/xhtml”>
  7.     <head>
  8.         <title>Teste Ajax/title>
  9.         <script type=“text/javascript” src=“<f:webResources relativePath=’js/prototype-1.6.0.3.js’/>”></script>
  10.     </head>
  11.     <body leftmargin=“0″ topmargin=“0″>
  12. 
    
  13.     Teste Ajax
  14.     <br/><br/>
  15.     Nome: <c:out value=“${bpmObject.nome}” />
  16.     <br/><br/>
  17. 
    
  18.     <div id=“teste”></div>
  19. 
    
  20.     </body>
  21. 
    
  22. </html>

Então, relembrando os passos até aqui:

1) Criação de BPM Object com 3 atributos e um método;
2) Criação de processo com uma atividade do tipo Global Creation e outra do tipo Interactive Activity;
3) Criação de Screenflow;
4) Associação (Implementation Type) da Interactive Activity do processo ao Screenflow criado;
5) Criação de atividade do tipo Interactive Component Call no Screenflow;
6) Criação de váriavel de instância no Screenflow com o tipo sendo o mesmo do BPM Object que foi criado no primeiro passo;
7) Definição do Implementation Type da Interactive Component Call como BPM Object Interactive Call;
8) Associação do BPM Object criado como váriavel de instância da Interactive Component Call do Screenflow;
9) Definição da página ajaxPage.jsp como JSP Presentation da Interactive Component Call do Screenflow.

Feito os passos acima, a estrutura do processo está pronta para criação da página JSP que irá fazer a requisição via Ajax a um método do BPM Object que foi criado no primeiro passo.

Fazendo a requisição Ajax e explicando alguns components da taglib do Oracle BPM

Para criação do mecanismo que irá fazer a requisição Ajax, se faz por necessário a utilização da taglib do Oracle BPM, sem ela não seria possível usar Ajax, ou então seria bastante árduo fazer tal integração.

Por exemplo, para incluir a biblioteca Prototype, que no caso será a responsável por fazer o “trabalho sujo” e criar o objeto XMLHttpRequest para fazer a requisição assíncrona, utilizei a tag f:webResources (linha 10). Esta tag inclui os resources inclusos no projeto BPM, sem que seja necessário informar explicitamente o context path da aplicação para inclusão de imagens, CSS ou Javascripts.

Outra tag importante é a f:invokeUrl, que no caso irá gerar a URL para execução de um método dentro de um BPM Object. Dessa forma, a página JSP precisa ser alterada, pois agora irá contar com uma função Javascript que irá fazer a chamada via Ajax ao método getDocuments() do BPM Object criado no primeiro passo, retornando o output do método para div teste.

Página JSP alterada:

  1. <%@ page session=“true”%>
  2. <%@ taglib uri=“http://java.sun.com/jstl/core” prefix=“c”%>
  3. <%@ taglib uri=“http://fuego.com/jsp/ftl” prefix=“f”%>
  4. 
    
  5. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
  6. <html xmlns=“http://www.w3.org/1999/xhtml”>
  7.     <head>
  8.         <title>Teste Ajax/title>
  9.         <script type=“text/javascript” src=“<f:webResources relativePath=’js/prototype-1.6.0.3.js’/>”></script>
  10.         <script>
  11.         function callAjaxMethod () {
  12. 		var bpmUrl	=‘<f:invokeUrl var=”bpmObject” methodName=”getDocuments” />’;
  13. 		return bpmUrl;
  14. 	}
  15. 
    
  16. 	new Ajax.Updater(‘teste’, callAjaxMethod());
  17.         </script>
  18.     </head>
  19.     <body leftmargin=“0″ topmargin=“0″>
  20. 
    
  21.     Teste Ajax
  22.     <br/><br/>
  23.     Nome: <c:out value=“${bpmObject.nome}” />
  24.     <br/><br/>
  25. 
    
  26.     <div id=“teste”></div>
  27. 
    
  28.     </body>
  29. 
    
  30. </html>

Repare que foi criada a função JS callAjaxMethod. Abaixo dessa função existe ainda a função JS Ajax.Updater, que no caso é uma função da biblioteca Prototype que irá fazer a chamada ao método do BPM Object, retornando seu output para a div teste.

Criando um output para o método getDocuments do BPM Object

Finalmente essa é a última parte desse pequeno tutorial. Agora a única coisa que falta é criar um output para o método do BPM Object que irá ser chamado via requisição Ajax.

Antes de mais nada, preciso dizer algo a respeito da tag f:invokeUrl, pois para ela funcionar corretamente existem algumas peculiariades.

Para um método de um BPM Object ser reconhecido por esta tag, ele deve ter uma das quatro assinaturas abaixo:

  • methodName(Fuego.Net.HttpRequest request, Fuego.Net.HttpResponse response)
  • methodName(java.util.Map requestParameters, java.util.Map requestHeaders)
  • methodName(java.util.Map requestParameters)
  • methodName()

No caso, eu optei por utilizar a primeira opção, pois para usar a função Ajax.Updater da Prototype, eu preciso escrever diretamente no output do método, ao invés de setar as informações necessárias através dos seus atributos.

Em virtude disso, o método getDocuments do objeto BpmObject agora passará a ter a seguinte assinatura:

getDocuments(Fuego.Net.HttpRequest request, Fuego.Net.HttpResponse response)

Agora, finalmente o código do método getDocuments, que ficará da seguinte maneira:

  1. for (String doc : documents) {
  2.     response.bodyTextContent(arg1 : doc);
  3. }

No código acima, estou percorrendo o atributo documents (array) e imprimindo no output todos os documentos definidos para aquele atributo, dessa forma, quando a função callAjaxMethod é chamada na página JSP, ela automaticamente chama (assincronamente) este método contido dentro do BPM Object, imprimindo todos os documentos definidos para dentro da div com o ID teste.

Conclusão

Utilizando os recursos corretos do Oracle BPM, como sua taglib e seus componentes, não é muito difícil fazer uma tela de apresentação mais interativa usando Ajax. No exemplo acima, foi criado um projeto bem simples, apenas para ilustrar, com o intuito de mostrar a atualização do conteúdo de uma div feita assincronamente através de uma requisição Ajax.

por http://www.marcuscavalcanti.net/blog/2009/03/23/oraclebpm-com-jsp-e-ajax/

Oracle BPM Human Task Management : Using Human Task Events to Invoke Microsoft Exchange Web Services

Março 15, 2012 By: fernando Category: BPM/SOA

Recently while working on a specific use case for an enterprise where I had to develop a mechanism of notifying organizational users in case a human workflow task is assigned to them. The enterprise in consideration here had a need to create an Microsoft Exchange Task for the user once he is assigned with a BPM Human Task and need to act on it.

In this blog post I would be covering as how we can achieve this. This may also be useful in case you are required to use Exchange Web Services in Oracle SOA Suite. Before i begin I would like to cover a little bit of rationale behind this approach.

The Rationale to this Approach

Oracle Human Workflow Tasks allow us to configure Notification settings through which we can can Email/SMS notifications through the Notification service. For a human task we can choose to set reminders at preset intervals, send actionable links in notification emails, attach task attachments, add custom headers etc.

image

However our need was quite simple. What we needed was to simply create a Outlook Task for the assigned user that will take care of Reminders. Imagine a task in which we have some bulky attachments. Retrying from the Notification Service by leveraging the Oracle Taskflow Messaging mechanism is quite expensive as this leads to multiple emails being sent.

Creating a Recurring Task saves us from repetitive emails. We can use recurring Outlook Task for reminders.

image

Readying the Backbone

A bit about Exchange Web Service APIs

Microsoft provides a very rich and exhaustive set of API as well as Developer SDK’s for Exchange web services.

You can see the whole list of operations provided by the API in the link below

http://msdn.microsoft.com/en-us/library/bb409286%28v=EXCHG.140%29.aspx

In this post however i will be demonstrating how to invoke the “CreateItem” operation to create a user Task in outlook.

The WSDL for the exchange web services can be obtained at by typing the following in your browser.

https://exchangeServerURL/EWS/Services.wsdl

image

You can obtain the Exchange Service URL by opening Outlook->File->Account Settings

image

I was able to get this web service running from a web service client like SOAPUI to see it in action.

The Exchange Web Services are on HTTPS and require HTTP Basic Authentication credential to invoke the caller. They are no different from your NT Credentials.

image

However Off course we would need to invoke this service from within our SOA Suite domain. But this gives us a heads up about the working of Exchange web services.

Oracle Service Bus Plumbing to Invoke The Exchange Web Services

This part is somehow tricky. We would need to invoke the Exchange service from the Human Task Service. Since Oracle Service Bus is the place where we organize our enterprise wide reusable services i choose to implement the service call to the Exchange endpoint from within the bus.

That shouldn’t be difficult.

Create a  Proxy Service in OSB based on the Exchange service WSDL. Also copy the dependent XSD’s in the service bus project.

image

This is the place I had hit my first roadblock. The Exchange Web Services need a NTLM Authentication mechanism where as OSB doesn’t support NTLM out of the box. The workaround for this is that we have to create a custom Java class for doing this which can be invoked from OSB by a Java Callout action.

Create a simple Java Project in Eclipse and use the Java Class below. It works like a treat to get this thing done.

 

 

01 package blog.soatech;

02 import java.io.IOException;</pre>

03 import org.apache.commons.httpclient.HttpClient;

04 import org.apache.commons.httpclient.HttpException;

05 import org.apache.commons.httpclient.HttpStatus;

06 import org.apache.commons.httpclient.NTCredentials;

07 import org.apache.commons.httpclient.auth.AuthScope;

08 import org.apache.commons.httpclient.methods.PostMethod;

09 import org.apache.commons.httpclient.methods.StringRequestEntity;

10  

11 public class ExchangeServices {

12 private static final String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";

13 @SuppressWarnings("unused")

14 public static String invokeExService(String endPoint, String messageHeader, String messageBody, String userName, String password, String operation) throws HttpException, IOException

15 {

16 StringBuffer soapMessage = new StringBuffer();

17 soapMessage.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");

18 soapMessage.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\” xmlns:typ=\”http://schemas.microsoft.com/exchange/services/2006/types\” xmlns:mes=\”http://schemas.microsoft.com/exchange/services/2006/messages\”>\n”);

19 soapMessage.append(messageHeader);

20 soapMessage.append(messageBody);

21 soapMessage.append("</soapenv:Envelope>\n");

22 //System.out.print("Request : " + soapMessage.toString());

23 HttpClient client = new HttpClient();

24 String soapAction ="http://schemas.microsoft.com/exchange/services/2006/messages/+operation;</a>

25 PostMethod postMethod = new PostMethod(endPoint.trim());

26 postMethod.setRequestHeader("SOAPAction", soapAction);

27 postMethod.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");

28 postMethod.setRequestHeader("SOAPAction", soapAction);

29 postMethod.setRequestHeader("User-Agent", userAgent);

30 postMethod.setRequestEntity(new StringRequestEntity(soapMessage.toString().trim(), "text/xml; charset=UTF-8", null));

31 String errorMessage ="";

32 String responseBodyString ="";

33 NTCredentials ntCredentials = new NTCredentials(userName, password, "hostName", "domainName");

34 client.getState().setCredentials(new AuthScope(null,-1,null), ntCredentials);

35 int status = client.executeMethod(postMethod);

36 if(status != HttpStatus.SC_OK)

37 {

38 errorMessage = "Method Failed :" + postMethod.getStatusLine();

39 // System.out.println(errorMessage);

40 }

41 responseBodyString= postMethod.getResponseBodyAsString();

42 //System.out.println("Response Message ;" +responseBodyString);

43 return responseBodyString;

44 }

45 }

The above class is needs a few Apache Jar’s as dependent jars in the build path.

image

Package this as a JAR file by exporting it as a JAR from eclipse. Next we will have to import this JAR in our OSB project so that the ExchangeService.class inside it can be used for Java Callout.

image

Add a line the setDomainEnv.cmd file in the OSB Domain so that it can locate these classpath entries at runtime.

set POST_CLASSPATH=%DOMAIN_HOME%\lib\commons-codec-1.5.jar;%DOMAIN_HOME%\lib\commons-httpclient-3.1.jar;%DOMAIN_HOME%\lib\commons-logging-1.1.1.jar;%POST_CLASSPATH%

The second thing that we need to do is add the Exchange service certificate to the Keystore of the OSB domain. Remember the Exchange services are https services.

Obtain the X.509 certificate from the exchange server and save it as a .pem file. Locate the location of the DemoKeyStore from the weblogic server console.

image

The X.509 certificate from the exchange server can be imported in the keystore by running the Keytool command below

keytool -import -trustcacerts -file <FileLoc>\cert.pem -keystore <KeyStoreLoc>\DemoTrust.jks

The default keystore password is DemoTrustKeyStorePassPhrase

Reboot the OSB Domain after applying these changes for them to take affect.

Lastly export the OSB Proxy Service as a WSDL so that it can be used in our BPM composite.

image

We can now move on to create the BPM process with a Human task that will invoke this OSB service.

Creating the BPM Composite with a Human Task

For the purpose of demonstration here I will be creating the most basic BPM process that has one message start event, one user task event (implemented as an Oracle Human Task) and an end event.

image

The process can be exposed as a web service since it has a Message Start event. This is a simple Card Approval Process in which a Credit Card Approver is presented with a Credit Card request that he has to either approve or reject.

The Task Activity is implemented as a Human Workflow Task. Open the .task for this task in JDeveloper.

We can enter additional task details from here like Task Title, Task Deadlines, Assignees, Notification Setting etc.

Add a Fixed Duration Deadline to this Task in the Deadlines tab.

image

This will set the expirationDate element in the task payload.

This is also where lies the crux of this article.

Since we want to create an Exchange Task for the assignee as soon as the Human Task is assigned to him we have to create and implement an onAssigned Event for this task.

image

You are allowed to create different events based on the task status from here. For now we are only interested in the first event i.e onAssigned event.

When a workflow event is triggered the in build EDN (Event Delivery Network) framework throws an event that contains the assigned Task Message payload containing the complete task information.

Learn more about EDN in Oracle SOA Suite here.

http://beatechnologies.wordpress.com/2011/06/14/lightweight-introduction-to-oracle-soa-suite-11g/

http://blogs.oracle.com/soabpm/entry/event_delivery_network_chapter

Creating a Mediator to Subscribe to Workflow Events

We have raised an event from the Human Task. We now have to implement a listener for this event that can listen to it and do something (calling the Exchange Service operations in this case).

Doing this couldn’t have been much simpler. What you need to do is create a composite application that has a Mediator component listening to this event.

image

The Event Definition File (EDL) for subscribing to Human Workflow events can be found in the MDS Repository under soa/shared/workflow/HumanTaskEvent.edl.

The mediator can subscribe to any one or all of the events and will fan out the process depending upon the event it receives.

image

Next create a Web service reference in the composite that is based on the Exchange Service OSB Proxy and wire the Mediator to Create Item of this service.

image

Open the Mediator Routing Definition to see that the a Static Routing Rule has been created for OnTaskAssigned event.

We can use the an XSL based Transformation to transform a task request to the CreateItemRequest message for the Exchange webservice.

image

Deploy the BPM Application for Card Approval Process and also the composite application containing the Event Subscribing Mediator component to a running soa server so see everything in action together.

Seeing Everything in Action

Go to the Enterprise Manager console where the Card Approval BPM composite is deployed.

Test the composite with a card approval request message from the composite. You will see that a running instance of the composite is created.

image

Looking at the Audit Trail of this instance will reveal an interesting thing. You will see that as soon as the the process flow reaches the ApproveCard user activity an OnTaskAssigned event is fired.

A WorkflowEventSubcriber Mediator Component that is listening to this type of event processes the event and calls the external web service. Opening the trace will further reveal that the service has returned a success response.

image

An outlook Task with a recurring reminder has now been created in the user inbox.

image

The Ending Conclusion

Another thing we did was to delete this Outlook task once a Human Workflow participant has acted on the it.

This is quite simple and achievable by raising an OnTaskCompleted event from the Human Task, extending the composite to subscribe to this type of event as well and call the DeleteItem operation on the Exchange web service.

por http://beatechnologies.wordpress.com/2011/09/09/oracle-bpm-human-task-management-using-human-task-events-to-invoke-microsoft-exchange-web-services/

Estudo de Caso – Parte 1 – Biblioteca Nínive – Criação do Projeto BPMN e Diagramação

Março 15, 2012 By: fernando Category: BPM/SOA

Neste estudo de caso veremos todo o ciclo de vida de um projeto BPM com o Oracle BPM Suite 11g. Dado o tamanho deste estudo de caso, o mesmo será dividido em várias partes, conforme o plano a seguir:

  • Parte I – Criação do Projeto no JDeveloper 11g e Diagramação do Processo de Negócio
  • Parte II – Criação das Estruturas de Dados a serem utilizadas no fluxo e definição das Human Tasks de cada atividade manual
  • Parte III – Implementação das Atividades Automatizadas do Processo com Oracle SOA Suite 11g
  • Parte IV – Implementação das Telas das tarefas manuais (human tasks)
  • Parte V – Simulação do Processo, Implantação e Execução Real do Processo de Negócio

Contextualização do Estudo de Caso da Biblioteca Nínive

  • O negócio: serviços de acesso à informação por meios físicos e digitais
  • Forma de operação: os associados pagam uma mensalidade e podem alugar livros, utilizar o ambiente da biblioteca para estudos dos conteúdos digitais, bibliotecários, além de acesso à internet
  • Outras informações: A Nínive também recebe doações de todos os tipos para se manter, visto o relevante acervo e também a grande conveniência e conforto do ambiente para estudos. A Nínive é uma ONG sem fins lucrativos, mas que precisa de dinheiro para continuar suas operações. A Nínive possui um grande acervo de livros e também de material digital, inclusive vários dos livros estão em formato digital também. Este acervo pode ser emprestado para seus associados via Internet. Se for físico, o associado retira na biblioteca, se for digital o mesmo é disponibilizado por download
  • Objetivo do Estudo de Caso: A Nínive está precisando criar um sistema para automatizar este seu processo de empréstimo de livros e mídias digitais

Criação da Aplicação e do Projeto

  1. Abra o JDeveloper 11g. Caso haja alguma aplicação aberta, vá no Menu Application > Close Application (repita isto até que não hajam mais projetos abertos).
  2. Vamos agora criar a aplicação. Vá em Application > New… Informe os seguintes valores na tela de criação da Aplicação:
    1. Application Name: NiniveApp
    2. Directory: escolha o diretório de sua preferência
    3. Application Template: BPM Application
  3. Clique em Next >. Agora vamos preencher as informações do Projeto que iremos criar dentro da aplicação para hospedar a implementação do nosso processo. Preencha a tela de criação do Projeto com os seguintes valores:
    1. Project Name: EmprestimoMidia
    2. Directory: aceite o valor sugerido
    3. Project Technologies: aceite os valores sugeridos (em selected devemos ter BPM e SOA)
  4. Clique em Next >. Agora vamos preencher a Configurações SOA com os seguintes valores para os campos:
    1. Composite Name: EmprestimoMidia
    2. Composite Template: Composite With BPMN Process
  5. Clique em Finish e aguarde a apresentação da próxima tela para preenchimento.
  6. Na tela de criação de Processo BPMN, preencha os campos com os seguintes valores:
    1. Name: EmprestimoMidia
    2. Description: Processo de Negócio de Empréstimo de Mídias Físicas e Digitais
    3. Type: Manual Process (esta opção é para quando temos projetos que envolvem telas que o usuário preenche)
  7. Clique em Next >. Agora temos a última tela, onde preencheremos o Namespace do Processo. O namespace é uma forma de organizar e de dar um nome único para o web service do processo de negócio, é como se fosse o que é o pacote para uma classe java, ou uma pasta para um arquivo. Preencha os seguintes valores:
    1. Process Sampling Points: Inherit project default. (Sampling Points são pontos onde é possível coletar métricas no processo)
    2. Service namespace: http://www.ninive.org/processos/EmprestimoMidia
  8. Clique em Finish e espere pela apresentação da tela do JDeveloper 11g com o seu novo processo.

Conhecendo Melhor sua Área de Trabalho do BPM Suite 11g

  1. Menu Principal: destacamos aqui o menu File, onde temos acesso a criação de arquivos e o menu Application, onde fechamos, abrimos e criamos Aplicações.
  2. Aba de Aplicação: ao clicar nesta aba, temos acesso a lista de projetos da nossa aplicação, bem como a todos os arquivos de projeto de forma geral
  3. Aba do BPM: utilizamos muito esta aba para incluir, alterar, configurar e excluir arquivos do projeto BPM
  4. Área de Edição do Processo: onde diagramamos nosso processo de negócio
  5. Paleta de Opções de Componentes do Processo: onde escolhemos um componente para colocar em nosso projeto

Elementos do Processo

Todo processo de negócio possui os seguintes elementos:

  1. Papéis (roles): são funções, áreas, cargos ou atribuições que desempenham atividades no processo. Exemplo: cliente, fornecedor, gerente, RH.
  2. Pessoas: são seres humanos que exercem um ou mais pápeis nos processos e que efetivamente recebem a atividade na sua caixa de entrada e a executam.
  3. Recursos: são as estruturas de dados, formulários, métricas e todo o tipo de informação do fluxo do processo
  4. Atividades: são as atividades executadas no processo bem como seus elementos de apoio, como elementos de decisão e as setas que coordenam as atividades

Criação dos Papéis

  1.   Vá na aba do BPM. Neste momento o processo EmprestimoMidia aparece. Expanda o mesmo. Clique 2 vezes no ícone Organization. Ao meio aparecerá o editor que permite dentre outras coisas cadastrar as roles (papéis)
  2. Clique na Aba Roles (se já não estiver nela). Teremos na lista dois papéis criados por padrão, Process Owner e Role. Vamos criar mais dois papéis: Associado e Atendente
  3. Vá no ícone de + que se encontra logo acima da lista de roles e informe o valor Associado no campo Name. Repita a operação para cadastrar o papel Atendente

Inclusão dos Papéis no Processo

  1. Vá na aba de edição do seu processo de negócio. Atualmente ele conta com apenas uma raia chamada Role. Vamos incluir mais duas raias.
  2.  Clique com botão direito na área de edição do processo de negócio em uma região onde não esteja a raia ou qualquer outro elemento e escolha a opção Add Role (veja a figura a seguir). Escolha a opção Associado e clique Ok. Repita a operação para incluir Atendente. Por último, arraste todos os elementos da raia Role para a raia Associado e então clique com o botão direito no texto Role e escolha a opção Delete para excluir a raia Role.

Desenhando as Atividades do Processo de Negócio

  1. Clique 2 vezes no elemento Start. Altere o campo Name para Início e clique OK.
  2. Clique 2 vezes no elemento UserTask. Altere o campo Name para Requerer Mídia.
  3. Apague a seta que se encontra entre Requerer Mídia e End. Para isto clique 1 vez sobre a seta para selecioná-la, em seguida use a tecla delete.
  4. Agora, no topo da Aba de edição clique no ícone retangular de fundo azul (o primeiro ícone da aba) e clique o mouse perto de Requerer Mídia. Escolha a aba  Implementation e no campo Implementation Type escolha Service task. Em seguida, nesta mesma tela vá na aba Basic e preencha Name com o valor Consultar Mídia e clique OK. Tarefas de service task são utilizadas para permitir que um programa de computador faça a tarefa automaticamente.
  5. No topo da Aba de edição do processo clique no ícone de seta (o último da lista e com fundo branco e desenho de uma seta). Em seguida clique em Requerer Mídia e logo após em Consultar Mídia. Isto vai criar uma seta ligando as duas tarefas.
  6. Agora iremos colocar um elemento de decisão (um gateway). No topo da aba de edição, clique no terceiro ícone (ícone no formato de diamante com um X no meio) e clique perto da tarefa Consultar Mídia. Preencha o campo Name com o valor Mídia Encontrada? e clique em Ok.
  7. Ligue uma seta entre a tarefa Consultar Mídia e o elemento de decisão.
  8. Agora temos dois caminhos possíveis: 1 – A mídia é encontrada (caminho padrão) e 2 – A mídia está indisponível (caminho alternativo).
  9. Para o primeiro caminho vamos colocar uma tarefa manual. Coloque perto da decisão Mídia encontrada uma tarefa humana chamada Informar Indisponibilidade de Mídia.
  10. Para o segundo caminho vamos colocar outra tarefa manual para informar da indisponibilidade. Coloque perto da decisão Mídia encontrada uma tarefa humana chamada Reservar Mídia.
  11. Chegou a hora de conectar a decisão a suas 2 alternativas. Primeiro vamos conectar Mídia Encontrada? com Reservar Mídia. Para isto, clique com o botão direito sobre a decisão e selecione a opção Add default sequence flow. Ao fazer isto uma seta acompanha o mouse. Clique com o mouse em Reservar Mídia.
  12. Agora vamos conectar Mídia Encontrada? com Informar Indisponibilidade de Mídia. Clique com o botão direito sobre a decisão e selecione Add conditional sequence flow. Ao fazer isto uma seta acompanha o mouse. Clique com o mouse em Informar Indisponibilidade de Mídia.
  13. A qualquer momento é possível aumentar a altura da raia, bastando posicionar o mouse na borda da mesma e arrastando para aumentar o tamanho (da mesma forma que se faz quando se quer aumentar uma linha no excel ou word). Faça isto para lhe dar mais espaço para trabalhar.
  14. A qualquer momento também é possível reposicionar os elementos, basta desenhar um retângulo de seleção que envolve os elementos. Uma vez selecionados os elementos é possível arrastá-los para a posição desejada. Assim, selecione todos os elementos, e posicione um pouco mais abaixo, mas sem retirar da raia de Associado.
  15. Até o momento seu processo deve estar com o seguinte desenho:
  16. Percebam que a seta que liga Mídia encontrada? e Reservar Mídia apresenta um risco. Isto representa que este caminho é o caminho padrão. O outro caminho não tem risco algum e está com uma mensagem de interrogação, pois ainda não escrevemos a condição para esta alternativa. O caminho padrão é aquele que acontece quando a condição configurada no caminho alternativo é falsa. Assim se a mídia não está indisponível, eu posso reservar mídia.
  17. Temos agora mais uma decisão para tratar. Quando a mídia está indisponível o usuário pode consultar novamente, ou simplesmente encerrar a sua busca. Assim coloque mais gateway de decisão exclusiva (diamante com X), mas agora perto de Informar Indisponibilidade. Em Name preencha com Consultar Novamente?. Ligue uma seta entre Informar Indisponibilidade de Mídia e Consultar Novamente?
  18. Arraste o símbolo End (que está solto no processo) para perto de Consultar Novamente. Clique 2 vezes em End. Altere o Name para Finalizado por Indisponibilidade de Mídia.
  19. Agora clique com o botão direito na decisão Consultar Novamente? e selecione a opção Add default sequence flow. Conecte na tarefa Requerer Mídia. A seta irá ficar por cima de alguns elementos. Para evitar isto, podemos alterar a forma desta nova seta. Clique com o botão direito do mouse sobre a seta, selecione Style > Orthogonal. Agora clique e arraste a seta para cima, até que a mesma não mais por cima das atividades.
  20. Agora clique com o botão direito na decisão Consultar Novamente? e selecione a opção Add conditional sequence flow. Conecte no evento de fim Finalizado por Indisponibilidade de Mídia.
  21. Neste momento seu processo deverá estar da seguinte forma:

  22. Vamos agora tratar a situação de Reserva de Mídia. Neste ponto, temos duas opções, podemos reservar Mídias Digitais ou Mídias Físicas. Coloque uma nova decisão com Name Mídia Digital?
  23. Coloque duas tarefas humanas perto da decisão Mídia Digital?. Chame a primeira tarefa de Disponibilizar Mídia Digital e uma segunda tarefa chamada Entregar Mídia Física. Faça as devidas conexões e escolha o caminho para Disponibilizar Mídia Digital como caminho padrão (default). Seu diagrama estará da seguinte forma:

  24. Agora temos que representar o término do processo pela disponibilização da mídia digital. Assim na Paleta de Componentes, vá na seção Events, então na subseção End Events e escolha o evento None (é um tipo de fim que apenas termina o processo e mais nada). Perceba que é o último None, pois temos None também no Start Events. Coloque o mesmo perto de Disponibilizar Mídia Digital. Em name informe o valor Finalizado após disponibilização de mídia digital. Por último ligue uma seta entre Disponibilizar Mídia Digital e este novo evento de fim.
  25. Desenhe todas as demais tarefas até que o processo fique da seguinte forma:

  26. Nosso processo está praticamente completo. Basta tratar a condição de quando o Associado não vai pegar a mídia que ele reservou. Para isto o BPMN tem um tipo de evento chamado Catch Event. Podemos criar um evento que é disparado automaticamente quando ocorre um evento externo, um estouro de tempo (timeout) ou um erro. Estamos precisando neste caso de modelar um evento de timeout (expiração). Se o associado não pegar o livro em até 3 dias, encerramos a espera de Entregar Mídia Física e terminamos o processo. Para o término do processo por expiração, vamos primeiro colocar um evento de fim e chamá-lo de Finalizado por Desistência do Associado. Agora vamos fazer o evento de expiração. Para isto vá na paleta de componentes. Vá em Events. Procure a subseção Catch Events e clique no Event Timer. Vá com mouse em cima da atividade Entregar Mídia Física e clique sobre o mesmo. Digite no Name Reserva Expirada, na Aba Implementation marque a opção Interrupting Event e na expressão de tempo coloque o valor 0 Months 3 Days 0:0:0 e clique Ok. O Editor vai mostrar um relógio na beira da atividade, indicando que a mesma tem tempo de expiração e acompanhará a seta junto com o mouse, clique com o mouse no evento fim Finalizado por Desistência do Associado. Isto ligará o Timer ao evento de fim.
  27. Vamos tirar os sinais de advertência do diagrama, pois não vamos implementar o mesmo agora. Para isto procure no topo da aba Show Warnings. Clique no mesmo e mude para None. Pronto, acabamos. Seu processo completo deve ficar assim:

  28. Pronto! Terminamos a modelagem de nosso processo de negócio. Até mais!

por http://www.portalbpmsoa.com/category/bpm/oracle-bpm-suite-11g/

Passos para Instalação do Oracle SOA, BPM e BAM Suite 11g

Março 15, 2012 By: fernando Category: BPM/SOA

Passos para Instalação do Oracle SOA, BPM e BAM Suite 11g

Download do BPM Suite 11g

  1. Faça o download do JDK 1.6 (não do 1.7) no site da Oracle em http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u27-download-440405.html

  2. Acesse o site
    http://www.oracle.com/technetwork/middleware/bpm/downloads/index.html
  3. Escolha a opção “Accept License Agreement” e escolha o sistema operacional desejado, neste tutorial iremos escolher o Windows

  4. Expanda Prerequisites e baixe os seguintes softwares (ao requerer a instalação,  será necessário se registrar):

    1. Database (Oracle XE 10g)

    2. Repository Creation Utility 11.1.1.5.0

    3. JDeveloper 11.1.1.5.0 (este instalador também instala o WebLogic)

    4. Em Product Installation baixe os arquivos SOA Suite 11.1.1.5.0 Part 1 e Part 2 (neste instalador, o BPM Suite também está incluído)

Descompactação dos Arquivos

  1. Descompacte o arquivo ofm_rcu_win_11.1.1.5.0_disk1_1of1 no diretório de sua  escolha, será criado o diretório rcuHome

  2. Descompacte os arquivos ofm_soa_generic_11.1.1.5.0_disk1_1of2 e  ofm_soa_generic_11.1.1.5.0_disk1_2of2 no diretório de sua escolha, serão  criados os diretórios Disk1, Disk2, Disk3, Disk4 e Disk5

  3. Não é necessário descompactar os demais arquivos, eles podem ser executados diretamente

Instalação da JDK 1.6

  1. Clique 2 vezes em jdk-6u26-windows-x64 (ou no nome de instalador de jdk escolhido por você ao baixar o arquivo)

  2. Espere algum tempo até que o assistente de instalação apareça.
    Clique em Next >

  3. No campo Install to, altere o diretório de instalação clicando no botão change, e  escolha um caminho de diretório que não seja de Arquivos de Programa ou  qualquer outra que tenha espaço na composição do nome. Sugiro o valor
    C:\Java\jdk1.6.0_27\. Clique em Next >

  4. A Instalação irá começar, espere pela conclusão da mesma.
    Logo em seguida, iremos instalar o JRE, aceite todas as sugestões e clique em Next > Espere pelo final da instalação e clique em Finish

Instalação do Banco de Dados Oracle

  1. Clique duas vezes em OracleXEUniv. Espere algum tempo até que o assistente de instalação apareça

  2. Clique no botão Próximo >

  3. Aceite os termos da licença e clique em Avançar >

  4. Aceite o diretório da Pasta de Destino sugerido e clique em Próximo >

  5. Escolha a senha de administrador do banco de dados, sugerimos a senha  welcome1 e clique em Próximo >

  6. Clique em Próximo e no botão Instalar

  7. Espere pela conclusão da instalação

  8. Desmarque o checkbox Acionar a Homepage do Banco de Dados e clique em Finalizar

  9. Precisamos preparar o banco de dados para suportar os produtos que serão
    instalados sobre o mesmo. Assim, execute os seguintes comandos a partir da linha de comandos (chame no executar do windows cmd) do windows ou linux:

sqlplus sys/welcome1@XE as sysdba
SQL> alter system reset sessions scope=spfile sid=’*’;
SQL> alter system set processes=300 scope=spfile;
SQL> shutdown immediate
SQL> startup
SQL> show parameter session
SQL> show parameter processes

Obs.: podemos também fazer o shutdown e startup (ou seja, reiniciar) usando Painel  de Controle > Serviços > Escolha OracleXE e reinicie o serviço após a execução dos  comandos

Instalação do JDeveloper 11g e WebLogic

  1. Clique 2 vezes em jdevstudio11115install. Espere algum tempo até que o
    assistente de instalação apareça

  2. Clique em Próximo

  3. Aceite a sugestão de diretório Home de Middleware sugerido pelo instalador e clique em Próximo

  4. Marque a opção Típica para assim instalar tanto JDeveloper e WebLogic e clique em Próximo

  5. Clique no botão Procurar… para apontar onde está instalado o JDK. Escolha o diretório onde está o JDK (no caso deste tutorial está instalado em C:\Java\jdk1.6.0_27) e clique selecionar

  6. A tela retorna com o JDK marcado. Clique em Próximo

  7. Nesta tela é informado o diretório de instalação do Jdeveloper e WebLogic, apenas clique em Próximo

  8. É apresentada a tela de Resumo da Instalação, clique em Próximo.
    O produto vai ser instalado, bastando aguardar Desmarque Executar Quickset e clique Concluído

Instalação do RCU

  1. O RCU é uma ferramenta utilizada para criar os esquemas de banco de dados do
    BPM, SOA e demais produtos caso seja necessário Vá na linha de comando (executar o cmd no executar do windows) e vá até o diretório onde o RCU foi descompactado, entre no diretório rcuHome, entre no diretório bin (<diretório onde descompactou>/rcuHome/bin)

  2. Para iniciar o RCU execute o seguintes comandos de dentro do diretório bin:

    1. set
      RCU_JDBC_TRIM_BLOCKS=TRUE

    2. rcu

  3. Espere pelo assistente do RCU, quando o mesmo aparecer, clique em Próximo >

  4. Selecione a opção Criar e clique em Próximo >

  5. Informe as informações de conexão do banco de dados conforme a seguir:

    1. Nome do Host: localhost

    2. Porta: 1521

    3. Nome do Serviço: XE (ou outro nome, caso seu banco oracle não seja o  Express)

    4. Nome do Usuário: sys

    5. Senha: a senha escolhida na instalação do banco de dados (no caso deste tutorial welcome1)

    6. Clique Próximo. Irá começar a validação da conexão, se surgir mensagem de banco incompatível, clique Ignorar

    7. Clique Ok na validação

    8. Selecione Criar um novo Prefixo e escolha o valor padrão DEV

    9. Na lista de Componentes selecione SOA Infrastructure e BPM Infrastructure. Neste momento, todas as dependências deste componente também são marcados. Clique em Próximo

    10. Novamente é feita uma validação. Clique em OK

    11. Marque a opção Use as mesmas senhas para todos os esquemas. Digite a senha que desejar, sugiro o valor welcome1 e confirme a senha e clique
      Próximo

    12. São listados os tablespaces, clique em Próximo e clique em Ok na tela de
      mensagem

    13. Espere pela criação dos namespaces e clique OK

    14. Clique no botão Criar e espere por toda a criação dos tablespaces e
      clique em Fechar

Instalação do SOA Suite

  1. Vá na linha de comando (executar o cmd no executar do windows) e vá até o diretório onde o SOA Suite foi descompactado, entre no diretório Disk1

  2. Para iniciar o Instalador do SOA Suite execute o seguinte comando de dentro do diretório Disk1: setup -jreLoc c:\Java\jdk1.6.0_27 (ou outro local onde tenha instalado o seu JDK)(Ele irá demorar um pouco)
  3. Quando a tela do Instalador aparecer clique em Próximo

  4. Selecione “Ignorar atualizações de software” e clique em Próximo

  5. Espere pela pré-validação e clique em Próximo

  6. Aceite os valores padrão para Oracle Middleware Home e Diretório Oracle Home e clique em Próximo

  7. Vai aparecer WebLogic Server marcado, clique em Próximo

  8. Vai aparecer uma tela com o resumo das escolhas das telas anteriores, clique em
    Instalar

  9. Espere pela Instalação, quando concluir os 100% clique em Próximo, clique em Finalizar

Criando o Domínio do SOA/BPM no WebLogic

  1. Após instalar o SOA/BPM, temos que criar o domínio dele dentro do WebLogic

  2. No menu iniciar do Windows vá em Todos os Programas > Oracle Fusion Middleware 11.1.1.5.0 > WebLogic Server 11gR1 > Tools > Configuration Wizard. No caso do Linux (ai vai ter sua própria estrutura de path) ou caso queira iniciar o configurador pela linha de comando, digite pela linha de comando (no cmd do windows), a instrução a seguir:
    C:\Oracle\Middleware\Oracle_SOA1\common\bin\config.cmd
  3. Na primeira tela do instalador escolha a primeira opção (Criar um novo domínio Weblogic) e clique em Próximo

  4. Selecione a opção Oracle BPM Suite for Developers, ele irá marcar todas dependências automaticamente Selecione também a opção Oracle Enterprise Manager (é a ferramenta de administração da Oracle)

  5. Selecione também a opção Oracle Business Activity Monitoring (é o BAM da Oracle usado para criar relatórios, gráficos e dashboards). Clique em Próximo

  6. Em nome do Domínio digite o valor bpm_soa_domain, aceite os demais valores de campo e clique em Próximo

  7. Em nome (user name) deixe a opção weblogic e senha (password) coloque welcome1 e clique em Próximo

  8.  Escolha as opções Modo de Desenvolvimento e SUN SDK e clique em Próximo

  9. Na próxima tela marque o checkbox de todos os itens que aparecem na tabela (5 itens), em seguida em Senha do Esquema digite welcome1, DBMS/Serviço digite XE, em Nome do Host localhost e port 1521. Clique em Próximo

  10. As conexões são testadas, clique em Próximo Clique
    em Próximo novamente

  11. Na tela de resumo, clique em Criar

  12. Espere alguns instantes e clique em Concluir (se deixar a opção Iniciar Admin Server, ele imediatamente já irá subir seu Weblogic)

Atualizando O JDeveloper para ter os plugins do SOA e do BPM

  1. Entre no JDeveloper Já no JDeveloper vá no menu Help > Check for Updates…

  2. Clique em Next

  3. Escolha as opções Oracle Fusion Middleware Products e Official Oracle Extensions and Updates e clique em Next

  4. Escolha as opções Oracle SOA Composite Editor e BPM Extension for JDeveloper e clique em Next

  5. Ele vai baixar os plug-ins, quando terminar, clique em Finalizar. Reinicie o JDeveloper e Pronto! Terminamos!

por http://www.portalbpmsoa.com/category/bpm/oracle-bpm-suite-11g/