9. Where to use Mediator ?
Loosely coupling of Oracle BPEL
Intra composite
EDN
Multi routing
Specific features:
MDS usage
Domain Value mapping
Xref (cross referencing ) support
Synchronous / Asynchronous Routing
E
10. Where to use Oracle BPEL ?
Stateful
Long running processes (dehydration store)
Service Orchestration
Compensation
Fault framework
Business Rules & Human workflow
J
11. Async Service in OSB
10g BPEL transport
11g SOA-direct transport
E
18. Caching
Based on Oracle Coherence
Protect back-end from heavy load
Configurable time-to-live
Uses Cache Token Expression
e.g. fn:data($body/s01:getEmployee/EmpID)
J
19. Load Balancing
Multiple load balancing algorithms
Endpoint management:
Supports service pooling
Automatic URI elimination
J
21. Transports
OSB transports > JCA transports
Database + AQ use JCA -> JDeveloper
File JCA reads chunks (large files)
JEJB transport (java object over the bus)
E
22. Text Processing
MFL will disappear
Use Native Format Builder of Oracle SOA Suite
Use Oracle B2B (part of SOA Suite) for EDI,
HL7, RosettaNet, etc
E
23. Routing
Using Dynamic Routing
Transport type must be the same
Mediator: dynamic with business rules
+ interface must be the same
Routing based on message content & headers (
performance )
Mediator: only message content
J
24. Enrichment
Use the Service Callout
Mediator: almost impossible
J
25. Publish
Fire-and-Forget messages (1 way)
Logging / Audit
Publish to local JMS
Minimize message loss
Prevent failure
Offload with Store-and-Forward
E
26. Validate
Use Validate action early in proxy (stage)
Prevent transformation errors
Prevent invalid information to back-end
Basic XML schema validation
No schematron support
E
27. Error handling
Default the request $body returned (echo)
Stage, Pipelines, Route & System
$fault in OSB is no valid SOAP Fault
Best Practice:
define Error handling strategy
define <soap:Fault> mapping
J
31. Bad practice III – execute-SQL
fn-bea:execute-sql($datasrc, $rowElemName, $sql, $param1-n)
• Officially only retrieve (select), but …
• Designed for simple lookup (name value pair)
• Risk: bad SQL fired at database
• Increasing rows resultset => bad performance
E
36. Shameless plug
The Oracle Service Bus
Development Cookbook is a book
which contains more than 80
practical recipes to develop
service- and message-oriented
solutions on the Oracle Service
Bus 11g.
OTN + Packt recipes available
https://blogs.oracle.com/knutvatsendvik/entry/throttling_in_osbhttp://weblogic-wonders.com/weblogic/2010/11/21/understanding-the-work-managers/If you don’t explicitly define your Dispatch Policy on your JMS Proxy, then it will run in the default thread pool with everything else. This may be fine in some cases, but for services that require a short SLA, then allocating a dedicated Work Manager is probably a good idea.
https://blogs.oracle.com/knutvatsendvik/entry/throttling_in_osbhttp://weblogic-wonders.com/weblogic/2010/11/21/understanding-the-work-managers/If you don’t explicitly define your Dispatch Policy on your JMS Proxy, then it will run in the default thread pool with everything else. This may be fine in some cases, but for services that require a short SLA, then allocating a dedicated Work Manager is probably a good idea.
Uses CDM from backend in BS and PS, result all clients use proprietary datamodel. After application upgrade/change all consumers need to update.
ServiceCallout with multiple Update/Write actions on non reliable protocol (HTTP),ERROR: what if 3rd SC fails
Using work-around you can insert data as wellcomplex SQL statements in Xqueryvs DB-adapter with tight DB coupling and small change Jdev/Eclipse WSDL export/importSmall select BEA function, large rowcount becomes very slowLast remark not necessary, but strange behaviour select * from customer -> becomes CUSTOMER
ZwareJavaCallout met extreemveelmemoryload (jijidee?)
Adding to much logic in the service (route tables, dynamic publish, if-then-else)