Mostrando postagens com marcador SOA Suite. Mostrar todas as postagens
Mostrando postagens com marcador SOA Suite. Mostrar todas as postagens

sábado, 17 de junho de 2017

BPEL Property inMemoryOptimization

Existem algumas propriedades no BPEL no qual podemos setar para diminuir a quantidade de I/O no metadados de infra do SOA Suite e execução em memoria, que em alguns casos ajuda na performance do ambiente.

Vou demonstrar como configurar o atributo "inMemoryOptimization" tanto na versão 12c (12.2.1) e na versão 11g (11.1.1.7).

Este atributo deve ser utilizado com processos que sejam transient e que não contenha as atividades de dehydration com receive, wait, onMessage e onAlarm.

No caso farei com que seja persistido o fluxo do BPEL somente se tiver falha.

SOA Suite 12c:

Passos:

1-)  Quando selecionar para criar um BPEL, selecione a Aba "In Memory SOA" e selecione "falted" para "Completion Persist Policy"


Quando o BPEL for criado, verá na aba properties a configuração que selecionamos:




2-) Execute seu fluxo e verá que para os fluxos de sucesso o trace não está disponível e para os fluxos com erro o trace irá aparecer.

Fluxo sucesso:
Fluxo erro:


SOA Suite 11g:

1-) No JDeveloper do 11g não temos a aba igual a aba "In Memory SOA", devemos fazer a configuração das propriedades manualmente. Abra o composite, click na aba "source" e acrescente as propriedades abaixo no BPEL ou selecione e o BPEL e acrescente as propriedades via "Porperty Inspector".






O resultado dos testes é o mesmo que fiz no 12c.

Referencias:
Documentação SOA Suite 11g - link
Documentação SOA Suite 12c - link

segunda-feira, 14 de julho de 2014

Criando um Dominio no Oracle SOA Suite 12c

Neste post irei demonstrar como criar um domínio no Oracle SOA Suite 12c com o SOA Suite e o Service Bus no mesmo domínio.

Criando o repositório

Passos:

1-) Vá em <ORACLE_MIDDLEWARE_HOME>/oracle_common/bin e execute:

./rcu

2-) A tela de "Welcome" para a criação do repositório irá aparecer.


3-) Clique em "Next"


4-) Deixe as opções "Create Repository" e "System Load and Product Load" selecionados e clique em "Next"


5-) Preencha com as informações do Oracle XE configurado em sua máquina e clique em "Next". O user tem que ser o "SYS".

 Irá aparecer a seguite popup:


Se aparecer a mensagem abaixo, selecione "Ignore"




6-) Nesta tela você irá especificar o prefixo para os schemas de banco e qual componente irá instalar, como na minha maquina eu tenho a versão 11g instalado o prefixo "DEV" não está disponível, irei criar com "DEV1".
Selecione em "Component" a opção "SOA Suite" e clique em "Next":

Obs.: Para quem já instalou as versões anteriores do SOA Suite, observe que o RCU que foi instalado com o SOA SUITE 12c, em "Component" só possui a opção do SOA Suite. Nos anteriores havia para BPM, Webcenter, etc...

Irá aparecer a popup abaixo, clique em "OK"



7-) Defina uma senha para os owner dos schemas a serem criados e clique em "Next"


8-) Clique em "Next"


9-) Clique em "Next"

Irá aparecer as popup abaixo, clique em "OK"




10-) Clique em "Create"


11-) Clique em "Close"

Pronto o repositório está criado, vamos ao domínio.

Criando o domínio

Passos:

1-) Vá em <ORACLE_MIDDLEWARE_HOME>/soa/common/bin e execute:

./config.sh

2-) Irá aparecer a tela para a criação do domínio, a primeira tela, tem a opção da escolha se você quer criar um dominío novo ou atualizar um domínio existente, deixe "Create a new domain" selecionado e clique em "Next"


3-) Na tela seguinte, tem as opções de templates para o domínio, iremos selecionar as seguintes opções:

 - Oracle Soa Suite
 - Oracle Service Bus

Observe que as opções dependentes são selecionadas automaticamente.


Clique em "Next"

4-) Nesta tela pode ser alterado o nome do diretório do dominio, clique em "Next"



5-) Defina a senha para o usuário administrador (weblogic) e clique em "Next"


6-) Clique em "Next"


7-) Na tela seguinte, preencha os compos referente a configuração do oracle XE e clique no botão "Get RCU Configuration" e clique em "Next"


8-) Clique em "Next"


9-) Clique em "Next"


10-) Clique em "Next"


11-) Clique em "Create"



12-) Clique em "Next"


13-) Clique em "Finish"


Pronto o domínio foi criado. Agora vamos rodar os servers do SOA Suite e do OSB, antes teremos que configurar uma machine para rodar os server que será descrito abaixo.

Criando a machine e executando o domínio

Passos:

1-) Vá em <ORACLE_MIDDLEWARE_HOME>/user_projects/domains/<DOMAIN> e execute o script abaixo para dar start no adminServer:

./startWebLogic.sh

2-) Em outro terminal, vá em <ORACLE_MIDDLEWARE_HOME>/user_projects/domains/<DOMAIN>/bin e execute o script abaixo:

./startNodeManager.sh

3-) Com o adminServer em "running" vá no console http://localhost:7001/console
Clique em "Machines"


4-) Clique em "New"


5-) Defina um nome para a machine e clique em "Next"


6-) Clique em "Finish"


7-) Clique no nome da machine que foi criada


8-) Clique a aba "Servers"



9-) Clique em "add"

10-) Em "Select a server" selecione "soa_server1" e clique em "Next"


11-)  Faça o mesmo para o osb_server1

12-) Vá em "Server"



13-) Selecione a aba "Control"



14-) Selecione os servers "soa_server1" e "osb_server1" e clique em "Start"

 
Pronto,  espere os server ficarem em "running" e terá o domain com os dois servers rodando.


Obs: Verifique se sua máquina tem memória o suficiente para rodar todos os servers de uma só vez. 

No EM você verá os dois servers e poderá verificar os itens implantados no diretório "SOA" que se encontra a sua esquerda na tela.


segunda-feira, 30 de junho de 2014

Lançado Oracle SOA Suite 12c

Semana passada a Oracle disponibilizou para download o "Oracle SOA Suite 12c".
Segue o link do blog "Oracle SOA Suite - TEAM Blog" onde eles disponibilizaram alguns materiais do que há de novo no SOA Suite.

Algumas coisas que vi que há de novo e que me interessaram são:

 - Instalador único. No mesmo installer já vem tudo que precisamos (Weblogic, RCU, BUS, JDevelover e SOA Suite)
 - Oracle Cloud Adapter
 - Unificação de desenvolvimento do BUS. JDeveloper com o plugin para desenvolvimento para o BUS

Segue o link que também está disponível no blog do team oracle do que tem de novo. (What's new in Oracle SOA Suite 12c)

quinta-feira, 5 de junho de 2014

Utilizando a atividade Java Embedding no BPEL

Irei demonstrar um exemplo de como utilizar a atividade "Java Embedding" do BPEL.
Para o exemplo vou utilizar o seguinte cenário:
- Calcular a diferença de dias entre duas datas.

Passos:

1-) Crie um SOA Project

2-) Crie crie um BPEL na versão 2.0 sincrono



3-) Altere o xsd que foi gerado para o bpel adicionando dois campos do tipo dateTime como parametro de entrada
4-) Altere o xsd que foi gerado para o bpel adicionando um campo do tipo integer como parametro de saída


XSD:
<?xml version="1.0" encoding="UTF-8"?>
<schema attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    targetNamespace="http://xmlns.oracle.com/MDSSampleApplication/JavaEmbeddingProject/JavaEmbeddingExample"
    xmlns="http://www.w3.org/2001/XMLSchema">
    <element name="process">
        <complexType>
            <sequence>
                                <element name="dateTime1" type="dateTime"/>
                                <element name="dateTime2" type="dateTime" />
            </sequence>
        </complexType>
    </element>
    <element name="processResponse">
        <complexType>
            <sequence>
                                <element name="dias" type="integer"/>
            </sequence>
        </complexType>
    </element>
</schema>


5-) Vá na aba source do BPEL gerado e na parte de import inclua o seguinte trecho:

<import location="oracle.xml.parser.v2.XMLElement" importType="http://schemas.oracle.com/bpel/extension/java"/>
    <import location="java.text.SimpleDateFormat" importType="http://schemas.oracle.com/bpel/extension/java"/>
    <import location="java.text.ParseException" importType="http://schemas.oracle.com/bpel/extension/java"/>
    <import location="java.util.Calendar" importType="http://schemas.oracle.com/bpel/extension/java"/>
 



6-) Na sessão "Oracle Extensions" arraste a atividade "Java Embedding" para o BPEL



7-) Duplo clique na atividade e verá a seguinte popup



8-) Em name altere para "MyJavaEmbedding"

9-) Insira o trecho de código abaixo:

try{
    long DAY_MILLESECONDS = 1000 * 60 * 60 * 24;
    Long differenceMillesenconds = 0L;
    Long dias = 0L;
   
    XMLElement xmlElement1 = (XMLElement)getVariableData("inputVariable","payload","/client:process/client:dateTime1");
    XMLElement xmlElement2 = (XMLElement)getVariableData("inputVariable","payload","/client:process/client:dateTime2");

    String dateTimeStr1 = xmlElement1.getTextContent();
    String dateTimeStr2 = xmlElement2.getTextContent();

    addAuditTrailEntry("Saida no AuditTrail -> dateTime1: " + dateTimeStr1);
    addAuditTrailEntry("Saida no AuditTrail -> dateTime2: " + dateTimeStr2);

    dateTimeStr1 = dateTimeStr1.replace("T"," ");
    dateTimeStr2 = dateTimeStr2.replace("T"," ");

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Calendar dateTime1 = Calendar.getInstance();
    Calendar dateTime2 = Calendar.getInstance();

    dateTime1.setTime(sdf.parse(dateTimeStr1));
    dateTime2.setTime(sdf.parse(dateTimeStr2));
   
    /*Remover hora minutos e segundos */
    dateTime1.set(dateTime1.get(Calendar.YEAR),
                  dateTime1.get(Calendar.MONTH),
                  dateTime1.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
    dateTime2.set(dateTime2.get(Calendar.YEAR),
                  dateTime2.get(Calendar.MONTH),
                  dateTime2.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
   
    differenceMillesenconds = dateTime1.getTimeInMillis() - dateTime2.getTimeInMillis();
    dias = differenceMillesenconds / DAY_MILLESECONDS;
   
    addAuditTrailEntry("Saida no AuditTrail -> dias: " + dias);
    setVariableData("outputVariable","payload","/client:processResponse/client:dias", new Integer(dias.intValue()));
} catch (Exception e){         
    System.out.println("exception "+e.getMessage());
    addAuditTrailEntry(e);
}





10-) Antes da atividade Java Embedding do seu processo BPEL, acrescente uma atividade do tipo "Assign" e inicialize o valor de retorno "dias" com o valor zero. É importante fazer esta atividade, pois quando executado o trecho java,  se a variável não foi inicializada, dará erro de xpath na execução do método setVariableData(...)



11-) Faça o deploy e execute um teste, no trace do bpel verá algo como:




Obs: se atente aos métodos de acesso e de escrita de parametros do BPEL (getVariableData(...), setVariableData(...)), os métodos que podem ser utilizados no java embedding estão descritos na tabela 14-1 do Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite 11g Release 1 (11.1.1.7)