Tuesday, 28 January 2014

Dynamic PartnerLink

===================================================================================================
CREATEING Dynamic PartnerLink
===================================================================================================

Variable declaration :

      <variables>
        <variable name="TargetEndpointLocation" type="xsd:string"/>
        <variable name="EndpointReference" element="wsa:EndpointReference"/>
        <variable name="ServiceName" type="xsd:string"/>
        <variable name="PartnerLinkName" type="xsd:string"/>
        <variable name="EBMMsgBpelVariableName" type="xsd:string"/>
        <variable name="EBMMsgPartName" type="xsd:string"/>
      </variables>


Assignment :

<sequence name="Sequence_Create_DynamicPL">
        <assign name="Assign_Create_DynamicPL">
          <copy>
            <from expression="'{http://xmlns.oracle.com/ABCSImpl/Siebel/Industry/Comms/SubmitOrder####ABCSImpl}SubmitOrder####ABCSImpl'"/>
            <to variable="ServiceName"/>
          </copy>
          <copy>
            <from expression="VFQA_USSD_SubmitOrder"/>
            <to variable="PartnerLinkName"/>
          </copy>
          <copy>
            <from expression="'inputVariable'"/>
            <to variable="EBMMsgBpelVariableName"/>
          </copy>
          <copy>
            <from expression="'payload'"/>
            <to variable="EBMMsgPartName"/>
          </copy>
        </assign>
</sequence>


Java embeding for variable assignment :


        <bpelx:exec name="GetTargetEndpointLocation" language="java"
                    version="1.5">
          <![CDATA[java.lang.String serviceName = (java.lang.String)getVariableData("ServiceName");
java.lang.String partnerLinkName = (java.lang.String)getVariableData("PartnerLinkName");
java.lang.String cavsEndpointPropertyName ="Routing."+partnerLinkName+".CAVS.EndpointURI" ;
java.lang.String ebmMsgBpelVariableName = (java.lang.String)getVariableData("EBMMsgBpelVariableName");
java.lang.String ebmMsgPartName = (java.lang.String)getVariableData("EBMMsgPartName");
java.lang.String systemIdBpelVariableName = "SystemID";
java.lang.String targetEndpointLocationBpelVariableName = "TargetEndpointLocation";
java.lang.String routeToCavsPropertyName = "Routing."+partnerLinkName+".RouteToCAVS";
java.lang.String defaultSystemIdPropertyName = null;
java.lang.String targetEndpointLocation = null;
java.lang.String targetID = null;
boolean addAudits = true;

if (addAudits) addAuditTrailEntry("Partnerlink = " + partnerLinkName);

// check configuration for CAVS routing flag
try {
boolean routeToCAVS = java.lang.Boolean.parseBoolean(oracle.apps.aia.core.config.Configuration.getServiceProperty(serviceName, routeToCavsPropertyName));
if (addAudits) addAuditTrailEntry("RouteToCAVS = " + routeToCAVS);
if (routeToCAVS) {
targetEndpointLocation = oracle.apps.aia.core.config.Configuration.getSystemModuleProperty("CAVS", cavsEndpointPropertyName);
if (addAudits) addAuditTrailEntry("Endpoint = '" + targetEndpointLocation + "' selected from configuration property " + cavsEndpointPropertyName);
}
}
catch (oracle.apps.aia.core.config.PropertyNotFoundException e) {
if (addAudits) addAuditTrailEntry("Configuration property " + cavsEndpointPropertyName + " not found!");
}

if (targetEndpointLocation==null || targetEndpointLocation=="") {

// check bpel variable for already retrieved target system Id
try {
targetID = (java.lang.String)getVariableData(systemIdBpelVariableName);
if (addAudits && targetID!=null) addAuditTrailEntry("Using previously stored Target System ID = '" + targetID + "'");
}
catch (com.oracle.bpel.client.BPELFault e) {
}

if (targetID==null || targetID=="") {
// try to get Target system ID from EBM Header
try {
oracle.xml.parser.v2.XMLElement targetIdElement = (oracle.xml.parser.v2.XMLElement)getVariableData(ebmMsgBpelVariableName, ebmMsgPartName, "/*/corecom:EBMHeader[1]/corecom:Target/corecom:ID[text()!='']");
targetID = targetIdElement.getText();
if (addAudits) addAuditTrailEntry("Target System ID = '" + targetID + "', selected from EBM EBM_HEADER");
}
catch (com.oracle.bpel.client.BPELFault e) {
if (addAudits) addAuditTrailEntry("Unable to retrieve Target System ID from message EBM_HEADER");
}
try {
if (targetID!=null && targetID!="") setVariableData(systemIdBpelVariableName, targetID);
}
catch (com.oracle.bpel.client.BPELFault e) {
}
}

if (targetID==null || targetID=="") {
// try to get Target system ID from configuration
try {
defaultSystemIdPropertyName="Default.SystemID";
targetID = oracle.apps.aia.core.config.Configuration.getServiceProperty(serviceName, defaultSystemIdPropertyName);
if (addAudits) addAuditTrailEntry("Target System ID = '" + targetID + "', selected from configuration property " + defaultSystemIdPropertyName);
}
catch (oracle.apps.aia.core.config.PropertyNotFoundException e) {
if (addAudits) addAuditTrailEntry("Configuration property " + defaultSystemIdPropertyName + " not found!");
}
try {
if (targetID!=null && targetID!="") setVariableData(systemIdBpelVariableName, targetID);
}
catch (com.oracle.bpel.client.BPELFault e) {
}
}

if (targetID!=null || targetID!="") {
// try to get EndpointLocation from Configuration

java.lang.String endpointPropertyName = "Routing."+partnerLinkName+"."+targetID+".EndpointURI";
try {
targetEndpointLocation = oracle.apps.aia.core.config.Configuration.getServiceProperty(serviceName, endpointPropertyName);
if (addAudits) addAuditTrailEntry("Endpoint = '" + targetEndpointLocation + "' selected from configuration property " + endpointPropertyName);
}
catch (oracle.apps.aia.core.config.PropertyNotFoundException e) {
if (addAudits) addAuditTrailEntry("Configuration property " + endpointPropertyName + " not found!");
}
}
}

try {
setVariableData(targetEndpointLocationBpelVariableName, targetEndpointLocation);
}
catch (com.oracle.bpel.client.BPELFault e) {
}]]>
        </bpelx:exec>


Header assignment :


        <switch name="Switch_AssignPartnerlinkEndpoint">
          <case condition="string-length(bpws:getVariableData('TargetEndpointLocation'))>0">
            <assign name="AssignPartnerlinkEndpointReference">
              <copy>
                <from>
                  <wsa:EndpointReference xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
                    <wsa:Address/>
                  </wsa:EndpointReference>
                </from>
                <to variable="EndpointReference"/>
              </copy>
              <copy>
                <from variable="TargetEndpointLocation"/>
                <to variable="EndpointReference"
                    query="/wsa:EndpointReference/wsa:Address"/>
              </copy>
              <copy>
                <from variable="EndpointReference"/>
                <to partnerLink="Siebel_Update_service"/>
              </copy>
            </assign>
          </case>
          <otherwise/>
        </switch>
      </sequence>


Add security Header in invocation :

    <invoke name="Invoke_QA_USSD_SubmitOrder"
            inputVariable="Invoke_QA_USSD_SubmitOrder_Q_spcUSSD_spcOrder_spcProvisioning_spcWF_InputVariable"
            outputVariable="Invoke_QA_USSD_SubmitOrder_Q_spcUSSD_spcOrder_spcProvisioning_spcWF_OutputVariable"
            partnerLink="Siebel_Update_service"
            portType="ns1:VFQ_spcUSSD_spcOrder_spcProvisioning_spcWF"
            operation="VFQ_spcUSSD_spcOrder_spcProvisioning_spcWF"
            bpelx:invokeAsDetail="no"
            bpelx:inputHeaderVariable="SiebelWSHeader"/>

No comments:

Post a Comment