Custom Search SOABYTE here

Sunday, February 27, 2011

Basic FAQs of SOA Suite 11g Part 3

How can I propagate the file name from input file adapter to output file adapter using JCA headers?

Mediator supports JCA header manipulation in newly introduce assign construct or inside XSL through extension functions.

Is there a property that we can set to point at alternative locations for wsdl of a SOAP service endpoint?

You can set alternative location url in WS-binding reference to archive this.

Is there a technical solution to guarantee once and once only processing in Mediator assuming the failure of the processing node?

Reliability of message delivery always depends on used protocol. If you use JMS (and e.g. DB adapter, Java binding, EJB call as well), required "once and once" delivery is guaranteed. You just have to use reliable (persistent) messaging as JMS provider (like Oracle Advance Queuing) to avoid losing message in case of system crash, etc.
If you use SOAP over HTTP, situation is more complicated. There is WS-Reliability standard to achieve guaranteed delivery, no duplicates and guaranteed message ordering of SOAP messages, but Mediator doesn't support it (and you would also need to modify your existing services).

Does Mediator support web service end point URL resolution using UDDI?

Yes. This happens at WS-binding layer and can be used from all service components.

What are the DB tables used for mediator instance tracking infrastructure ?

Mediator_Instance - master table for mediator instances. Contains one row for each mediator flow.
Description of important fields:
Field Description
ecid Unique id across j2ee components
composite_instance_id Unique id for a composite instance
id Unique id for a mediator instance
parent_id Instance id of the component which had invoked this mediator instance. For ex : BPELProcess1 is invoking Mediator1 then this would contain the instance id of BPELProcess1.
parent_ref_id Unique reference id of parent component (required for audit trail linking in console)
component_name Name of the component(This is in the format compositeDN + meditor_component_name)
outcome Component specific outcome string. Not used in mediator-mandated by instance tracking
component_state State of this mediator instance. 3 bit pattern represented as an number. Here is the list in the format "columnValue(bit pattern):0(000) - No faults in any of the cases till now but some might be running. (Running and completed can be verified by case_num and completed_case_num. Details below)1(001) - At least one case is aborted by user2(010) - At least one case is faulted(non-recoverable)3(011) - At least one case is faulted and at least one case is aborted4(100) - At least one case is in recovery required state5(101) - At least one case is in recovery required state and at least one case is aborted6(110) - At least one case is in recovery required state and at least one case is faulted7(111) - At least one case is in recovery required state, at least one case is aborted and at least one case is faulted
source_type event - If event initiated this instanceoperation - If a component initiated this instance
source_action_name Event or operation name that the initiated this instance
case_num Total number of cases for this mediator instance
completed_case_num No of completed cases(this includes faulted ones also). So a mediator instance is completed successfully only when case_num=completed_case_num and component_state=0
Mediator_Case_Instance - Details table for mediator instances. Contains one row for each mediator case of a mediator instance. So if a mediator contains three cases (routing rules) then this would contain three rows, one for each case.
Description of important fields:
Field Description
id Unique id for this case
instance_id Mediator instance id from mediator_instance table
case_name Case name defined in mediator mplan
target_type Type of target for this case (event or operation)
exception_type Type of exception if the case encountered an error. (system or business)
short_exception_msg Short exception message
exception_msg Long exception message
exception_trace Exception trace
fault_name Name of the fault thrown - required for fault policy handling
fault_obj Blob containing the fault object - required for fault policy handling.
retry_count No of times this case has been retried till now.
retry_interval The retry interval for the next retry. Changes when user configures for exponentialBackOff.
recoverable Whether this case is recoverable or not. (0 - non recoverable, 1 - recoverable)
status Status of this case - used by DB based error handling infrastructure. Does not represent the actual case state which is represented by mediator_case_detail.state.(details below)
Mediator_Case_Detail - Details table for mediator case instances. May contain more than one row for each mediator case of a mediator instance. The number of rows for a mediator case depends on the complexity of the scenario. For ex: If a mediator case is asynchronous callback then this would contain two rows one for request and another for the response. Similarly each retry for a case will create a row in this table.
Description of important fields:
Field Description
instance_id Mediator instance id from mediator_instance table
case_id Case instance id from mediator_case_instance table
trail_seq Sequence of the actions happened on the case. For ex: In async callback scenario, request will have 1 while response will have 2.
state State of this part/trail of the case. For ex: In async callback scenario, if request is completed successfully then this col value will be 0 and if response is faulted then this will have 2. Various trail states are:0 - Completed successfully1 - Aborted2 - Faulted3 - Running4 - Recovery requiredOverall state of the case is determined by the state of the last trail for a case in this table. There is view which captures this -mediator_case_detail_v.
audit_trail Blob containing the audit trail xml for this trail of the case.
Other tables are used for callback and DB based message handling for mediator. Those are not important for instance tracking.

What is the Mediator "Number of Workers" and how is it used for performance tuning?

This controls the number of worker threads the Mediator engine spawns to process all parallel routings rules. So if you are using Mediator parallel routing rules then you can increase this number to increase throughput. By default it is configured to 4.

Can I use Mediator for data enrichment?

Mediator can be used for simple data enrichment scenarios - mostly revolving around data substitutions and lookups. Many customer use cases require Mediator to provide service chaining orchestration and out-of-box implementation is limited to the cases described below however the AS11 mediator component will provide a much richer experience that will satisfy these use cases.
Lighweight enrichment functional that Mediator provides out of box includes:
·         the Domain-Value Map feature (DVM)  to substitute/expand on certain data fields.
·         the database query function in XSLT to look up certain fields.
·         the response or callback or fault forwarding and other interaction patterns  to gather external data from a database, file, etc. and add it to a message payload (or use it for routing).
For more complex data aggregation scenarios (for instance, waiting for multiple processes to complete to aggregate their result sets), a stateful engine such as BPEL PM is required.

Can I invoke an Mediator Service using a Java API other than SOAP or JCA?

Yes. This will be same API shared by all service components in SOA Suite 11g.

Are Partnerlinks now called Services (or References)?

Not exactly. Partnerlinks is a BPEL terminology, and remains in use when you work within the BPEL environment. But these BPEL partnerlinks are surfaced at the SCA level as either a Service (i.e. inbound binding) or References (i.e. outbound binding).

Is BPEL PM 11gR1 BPEL 2.0-compliant?
Technically, BPEL PM 11gR1 still use bpel 1.1 but with most 2.0 functionality available as extensions.
The salient facts:
·         Oracle supports the majority of the BPEL 2.0 functionalities in the current 10gR3 and 11gR1 releases:
Details: Current 10gR3 release supports semantics of BPEL 2.0, but not all all the syntax. For example, in BPEL 2.0, there are two ways to do variable manipulation: (1) $varX.partN (2) getVariableData(varX,partName/XPATH). These two are functionally equivalent so our current BPEL server supports only the latter syntax. However, functionally and semantically, Oracle's current BPEL implementation supports all the significant BPEL 2.0 capabilities (new compensation rules, dynamic parallelism, etc).
Additional details: Specifically, we will support the rest of the BPEL 2.0 syntax in our BPEL engine in 11gR1 patchset 2 (scheduled 1H CY'10).
As background, there are some vendors that have earlier support for the BPEL 2.0 syntax than we do and they are pushing hard on that, since there have been few windows of opportunity for competitors to challenge Oracle's clear leadership in the BPEL space. However, this window is a small one and is only open due to the timing of the finalization of the BPEL standard and our release cycles. In general, however, Oracle's leadership in this space is very clear

What is the identity/security provider for SOA

The JPS security layer supports various identity providers - LDAP, XML, XS, OID etc. In AppsDrop3, the SOA infrastructure will be using the XML file based provider with users/roles stored in the system-jazn-data.xml file. Note that some ADF apps may use the XS provider (based on 11g RDBMS) for authentication. If you are using an ADF app that uses XS along with the SOA infrastructure - you would need to synchronize users in the XS store with the XML file based store

Use advanced routing rules (Oracle Business Rules) for workflow routing

You'll notice an "Advanced Routing rules" button in the human task editor. Using this you can wire a business rule service to human workflow for sophisticated routing patterns such as "move forward x levels", "move back to previous user based on outcome" etc. Since the business rules component is not supported for AppsDrop3 - this feature is also temporarily not supported. This will be supported in AppsDrop4

Channels for workflow notification

As part of the BPEL process or human workflow, you may send notifications to users via various channels - email, SMS, voice etc. This feature leverages the new 11g User Messaging Service

Which WLS to use for the "Human task form"?
To design a form for Human tasks - you need to create a project of type "ADF task flow based on human task". Note that this project needs to be deployed on the standalone WLS that hosts the SOA infrastructure. In general, all other ADF projects are deployed on the JDev-embeddeded WLS - but this one interacts with the human task service hence should be colocated. It can be on a different instance as well - but that configuration is a little more complicated. When deployed on the same container as SOA, no additional configuration is needed
How to cleanup jdev task flow application based on human task?
1.      Select TaskFlow application in jdev and click left mouse button -> Erase Application From Disk
2.     This will popup window for user confirmation to delete .jws file.  Once user says OK, it will delete jws file only.
3.     Go to parent directory of .jws file and remove parent directory.

How does the MDS get used - if at all - for centralization and sharing of common business rules? Or is there another way to do this?

Rulesets are stored in MDS and therefore can be shared. One could create an MDS connection in JDeveloper and explore rules created by other developers.

In JDeveloper, can you browse & consume services from OSR or OER?

Yes, certainly. You can create a connection to OSR or OER from JDeveloper, and browse the assets therein.

Is a plugin required in JDeveloper to create connections to OSR & OER?

A connection to OSR can be created out of the box in JDeveloper using the standard Connection Navigator, where you go to create a Database or AS connection.
For OER, you need to download a plugin. In Oracle JDeveloper 11g Release 1( release, the Oracle Enterprise Repository adapter and the SOA adapter were bundled together. When you installed SOA, you automatically received the Oracle Enterprise Repository adapter. In the Oracle JDeveloper 11g Release 1( release, there are three separate plugins:
•    a plugin for the SOA extensions
•    a plugin for Oracle Enterprise Repository that provides Oracle Enterprise Repository search capability
•    an Oracle Enterprise Repository harvester plugin

Where can I get the OER Connection plugin JDeveloper 11g?

To obtain the Oracle Enterprise Repository plugins for Oracle JDeveloper:
1.    In Oracle JDeveloper, click Help, Check for Updates.
2.    In the Check for Updates wizard, select the Internal Automatic Updates option, select the OER plugin that shows up & click Next to install the updates.

Does the new separate OER Connection plugin introduced in JDeveloper 11g R1 ( work with OER 11g R1 (

Yes, the plugin works with both OER & OER With 11gr1, we only support browse/consume from JDev to OSR. JDev OER support is planned for the fall 2009 OER 11g "wildcat" release.

Can artifacts be physically stored in the repository behind OER?

Yes some but not always recommended especially in the case where OSR/UDDI or SOA 11 MDS would refer back to OER via http to access a WSDL. It's best to think of OER being for DT only. OER does not live in RT env and does not scale to meet production demands for hosting WSDL's. That is more the job for MDS.

Is it possible to use OSR/UDDI at Design Time & for Dyanmic Runtime binding in SCA Model Tooling in a SOA project?

Yes, you can configure your SOA project to invoke a service from OSR, using an OSR Connection you defined earlier in your JDeveloper

Do the actual artifacts of assets get physically stored in the OER repository or does it just store the metadata (links, information etc)?

 Yes, they could reside in OER for manual download via the web console.

What is the recommended best practice with regards to using OER & OSR?

OER is meant for design time, for the service lifecycle management. On the other hand, OSR is meant for runtime, to publish your assets when they are ready on production for discovery by customers. OSR is scalable for production scenarios and manags the runtime aspect of SOA Governance.


Post a Comment

Blogger Profile