2011-04-14 3 views
1

3 개의 Java Embeded Activity (A, B, C)가있는 BPEL에서 프로세스를 생성하고 있습니다 (findRules). 모든 Java Embed 활동에서 가져올 Java 클래스가 하나 (Rule.java)입니다.BPEL 공유 인스턴스의 Java Embed 활동

그리고 Rule.java A 액티비티의 인스턴스를 만들 때 B 및 C 액티비티에서 동일한 인스턴스를 사용할 수 있습니까? 내가 A에서 비즈니스 로직을 수행하고 B와 C의 업데이트 된 변수에 액세스하려고했기 때문에 B와 C가 새로운 인스턴스를 가지고 있기 때문에 업데이트 된 변수를 찾을 수 없기 때문입니다.

+0

하지 플래그 "긴급"으로 질문을 해 주시기 바랍니다 (jpd:nodejpd:methodName 태그를 사용)이 자바 메소드 f() 및 WLI에서와 같은 방법을 사용할 수 있습니다 다른 사람들의 질문보다 더 중요합니다. –

+0

좋아, 내가 처리 할 것이다. – Pedantic

답변

1

오라클 SOA 스위트의 경우, 매우 더러운 것 일지라도이를 수행 할 수있는 방법이 있습니다. 이전 WLI 태그는 계속 사용할 수 있습니다. 이렇게하면 코드의 이식성이 제거됩니다. 귀하의 질문 ISN '

<jpd:javacode xmlns:jpd="http://www.bea.com/wli/jpd" > 
public void f() { 
    LOGGER.log("Some log statement"); 
} 
</jpd:javacode> 

그런 다음

+0

이 업데이트를 주셔서 감사합니다. 샘플 코드 또는 예제를 참조하여 응용 프로그램에 동일한 코드를 구현할 수 있습니까? – Pedantic

0

Java Embedded 활동은 BPEL 표준의 일부가 아니므로, 사용하는 BPEL 도구를 알지 못하면 적절한 대답을 줄 수 없습니다. 그러나 디자인 관점에서 보았을 때 미들웨어 공급 업체가 그러한 활동을 더 잘 분리 할 것이라고 생각합니다. BPEL 프로세스는 일반적으로 장기 실행 방식으로 실행되며 하드웨어 및 소프트웨어 충돌에서 견딜 수 있습니다. 자바 객체를 특정 액티비티에 보이게하면 IMO는 이러한 개념을 깨뜨린다.

+0

Jdeveloper 11.1.1.3.0과 SOA 11.1.1.3.0을 사용하고 있습니다. 가능한 해결책이 있는지 알려 주시기 바랍니다. – Pedantic

+0

앞서 말했듯이 공유 Java 변수는 피할 수 있으며 비즈니스 로직을 캡슐화하기 위해 BPEL 및 외부 서비스를 대신 사용합니다. BPEL은 장기 실행 프로세스를 지원하고 사용 가능하고 확장 가능하도록 설계되었습니다. 즉, 서버가 충돌하면 일반적으로 BPEL 엔진이 충돌이 발생한 지점에서 재개 할 수 있습니다. 그러나 공유 Java 변수를 사용하는 경우 BPEL 엔진이 값을 복원 할 수 있는지 의심 스럽습니다. 따라서 필자는 이것을 해킹으로 생각할 때 항상 BPEL에서 Java 활동을 피하는 것이 좋습니다. – vanto