sexta-feira, 4 de julho de 2014

Utilizando Spring Context no SOA Suite

No post anterior demonstrei como utilizar a atividade Java Embedding para comparar duas datas.
Vamos pensar que queremos rê-utilizar o mesmo método java em outros lugares do fluxo bpel, se fosse com Java Embedding teríamos que ficar replicando o código em vários pontos e isso não é nada interessante, para reutilizarmos o código java irei demonstrar como fazer isso utilizando o componente "Spring Context".
Demonstrarei somente um exemplo do que poderia ser feito com Spring Context no SOA Suite, caso queira saber mais, segue o link da documentação da versão 11.1.1.7 referente ao Spring Context

Vamos aos passos para a criação do projeto, POJO e utilização do Spring Context.

Passos:

1-) Crie um projeto do tipo SOA



2-) Crie uma package para o service



3-) Crie a seguinte interface

package br.com.leonardosugahara.service;

import java.util.Calendar;

public interface DateUtilService {
    
    public Long compareDateTime(Calendar dateTime1, Calendar dateTime2);
}

4-) Crie uma package para a implementação




5-) Crie a classe Java que implementa a interface "DateUtilService"

 package br.com.leonardosugahara.impl;

import br.com.leonardosugahara.service.DateUtilService;
import java.io.Serializable;
import java.util.Calendar;

public class DateUtilImpl implements DateUtilService, Serializable {

    private static final long serialVersionUID = 1L;
    final long DAY_MILLESECONDS = 1000 * 60 * 60 * 24;
    
    public DateUtilImpl() {
        super();
    }

    public Long compareDateTime(Calendar dateTime1, Calendar dateTime2) {
        Long differenceMillesenconds = 0L;
        Long days = 0L;
        
        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();
        days = differenceMillesenconds / DAY_MILLESECONDS;
        
        return days;
    }
}


6-) Crie crie um BPEL para teste.




7-) Com o arquivo composite.xml aberto, arraste o "Spring Context" que se encontra em "Service Components" para a sessão "Components"



8-) Na popup "Create Spring" preencha o campo name, no caso irei nomear como "DateUtilSpring" e deixe a opção "Create New Context" selecionado e de "OK"



9-) Duplo clique em "DateUtilSpring" e o xml de configuração irá abrir. Configure conforme o trecho abaixo.

 <?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:lang="http://www.springframework.org/schema/lang"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:sca="http://xmlns.oracle.com/weblogic/weblogic-sca"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool-2.5.xsd http://xmlns.oracle.com/weblogic/weblogic-sca META-INF/weblogic-sca.xsd">
  <!--Spring Bean definitions go here-->
  <sca:service type="br.com.leonardosugahara.service.DateUtilService"
               target="dateUtilImpl" name="DateUtilService"/>
 
  <bean id ="dateUtilImpl"
        class ="br.com.leonardosugahara.impl.DateUtilImpl"/>

</beans>


10-) Execute o comando de Rebuild do projeto, para que seja compilado as classes e não de erro no passo seguinte.

11-) No composite.xml crie uma ligação entre o BPEL e o DateUtilSpring para que seja criado um partnerLink no BPEL. Observe que o jdeveloper criou o wsdl da interface "DateUtilService".





12-) Abra o BPEL e verá o partnerLink. Arraste a atividade "Invoke" para o BPEL e
configure para chamar o "DateUtilService" que foi gerado no passo anterior.



13-) Configure uma atividade do tipo "Assign" passando as datas para serem comparadas, faça o deploy do pacote e teste o bpel. Verá algo como:




Nenhum comentário:

Postar um comentário