Implementing Extension Points
To implement extension points, perform the following:
1. Each process in the integration has pre and post transformation extension points which can be used to invoke web services and transform the payload.
2. The desired extension point can be triggered from the process by enabling the pre and post transformation extension flags defined in the integration lookup table.
3. The processes that include extension points have their own concrete wsdl. This is used to read the endpoint location for the extension service.
4. The binding and service elements for the extension service needs to be added to the concrete wsdl in the product home at CCB-EBS/MDS-Artifacts/ MetaData/ExtensionServiceLibrary and the wsdl needs to be updated in MDS.
5. These concrete wsdl files are located in MDS under the directories /apps/CCB-EBS/MetaData/ExtensionServiceLibrary. Refer to the instructions in the Installation Guide for updating MDS.
6. Re-deploy the composite or restart the SOA server for the extension point to invoke the web service in the concrete wsdl.
Example: To enable the extension points for CCBToEBSAPBPELProcess add the binding and service elements to the CCBToEBSAPBPELProcessExtensionConcrete.wsdl
<binding name="CCBToEBSAPBPELProcessV1ExtensionServiceSOAP11Binding"
type="tns:CCBToEBSAPBPELProcessV1ExtensionService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="PreXformCollectionCCBtoEBS">
<soap:operation style="document"
soapAction="http://xmlns.oracle.com/CCBToEBSAPBPELProcess/CCBToEBSAPBPELProcessExtension/V1/PreXformCollectionCCBtoEBS"/>
<input>
<soap:body use="literal" parts="CollectionCCBtoEBS"/>
</input>
<output>
<soap:body use="literal" parts="CollectionCCBtoEBS"/>
</output>
<fault name="fault">
<soap:fault name="fault" use="literal"/>
</fault>
</operation>
<operation name="InvokeInsertInvoiceExt">
<soap:operation style="document"
soapAction="http://xmlns.oracle.com/CCBToEBSAPBPELProcess/CCBToEBSAPBPELProcessExtension/V1/InvokeInsertInvoiceExt"/>
<input>
<soap:body use="literal" parts="EBSRecord"/>
</input>
<output>
<soap:body use="literal" parts="EBSRecord"/>
</output>
<fault name="fault">
<soap:fault name="fault" use="literal"/>
</fault>
</operation>
</binding>
<service name="CCBToEBSAPBPELProcessV1ExtensionService">
<port name="CCBToEBSAPBPELProcessV1ExtensionService"
binding="tns:CCBToEBSAPBPELProcessV1ExtensionServiceSOAP11Binding">
<soap:address location="http://xyz.us.oracle.com:0000/soa-infra/services/default/APReqExtensionService/CCBToEBSAPBPELProcessV1ExtensionService"/>
</port>
</service>
7. For the custom BPEL process invoked from the extension point to be in the same global transaction as the main BPEL process, make sure that the transaction flag on the Custom BPEL component is set to "Required".
Example:
In the Custom BPEL process' composite xml, add the bpel.config.transaction property set to "Required" into the bpel component.
<property name="bpel.config.transaction"
many="false" type="xs:string">required</property>
8. Also, if security policies are attached to the composites, then "oracle/ Utilities_wss_http_token_service_policy_OPT_ON" must be attached to the service and "oracle/Utilities_wss_http_token_client_policy_OPT_ON" must be attached to all the references of the custom composite invoked from the Extension Points.