Thursday, July 28, 2011

Custom BPM Workspace Deployed in a Non-SOA Server in a Different Domain

In my previous post, I demonstrated through a sample application how to utilize the reusable task flows from BPM Workspace. In this post, I will share the steps and configuration to deploy the custom application to a non-soa server located in a different domain.

The soa server in my case is a stand alone installation of Oracle SOA Suite with configured domain "base_domain" that supports SOA, BPM, and BAM.
The remote non-soa server is the default integrated weblogic server of JDeveloper using port "7101". The integrated weblogic server "DefaultServer" is in domain "DefaultDomain".

Steps and Configuration

There are four steps to successfully run the custom application:
  1. Set the "federatedMode" input parameter of the taskList task flow to true.
  2. Deploy all the referred libraries in the weblogic-application.xml and weblogic.xml to the non-soa server as follows:
    • oracle.soa.bpel
    • oracle.soa.workflow
    • oracle.bpm.runtime
    • oracle.bpm.client
    • oracle.bpm.projectlib
    • oracle.bpm.workspace
    • oracle.bpm.webapp.common
    • oracle.soa.worklist.webapp
    Note: If you are not using in your custom application the BPM related task flows but the task list, then you just need to deploy the oracle.soa.workflow.jar and oracle.soa.worklist.webapp.jar. These libraries are present in the sub directories in "$MIDDLEWARE_HOME$\jdeveloper\soa\modules".

  3. Add a properly configured wf_client_config.xml in the classpath. You can put the file inside "MyUIShellBPMApp\UIShellBPMWeb\src" directory. A sample wf_client_config.xml is as follows:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <workflowServicesClientConfiguration  xmlns="http://xmlns.oracle.com/bpel/services/client" clientType="REMOTE">
       <server default="true" name="default">
          <localClient>
             <participateInClientTransaction>false</participateInClientTransaction>
          </localClient>
          <remoteClient>
             <serverURL>t3://hoitpino:8001</serverURL>
             <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory>
             <participateInClientTransaction>false</participateInClientTransaction>
          </remoteClient>
          <soapClient>
             <rootEndPointURL>http://hoitpino:8001</rootEndPointURL>
             <identityPropagation mode="dynamic" type="saml">
                <policy-references>
                   <policy-reference enabled="true" category="security" 
                    uri="oracle/wss10_saml_token_client_policy"/>
                </policy-references>
             </identityPropagation>
          </soapClient>
       </server>
    </workflowServicesClientConfiguration>
    
    
  4. Establish global trust between the domains.
    1. Login to the Oracle WebLogic Server console.
    2. Under Domain Structures, select the domain name like "base_domain".
    3. Select the Security tab.
    4. Click the Advanced link (near the bottom Save button.)
    5. Give some password in the "Credential" field. The same password should be used for the other domains.
    6. Click Save.
    7. Restart the server.

Running the application

Access the sample application from my previous post and follow the steps described above. Run the application by right clicking the main.jspx in JDeveloper, then run.

Below is a screenshot of my running application in integrated weblogic server:

Cheers!

1 comment:

  1. Hi Pino,

    Thanks for the post.
    Step 4, Establish global trust between the domains. is mandatory? Is it required to run our taskList task flow in "federatedMode", when we deploy the application in non-SOA server?

    If we run taskList task-flow in adf_domain(non-SOA) server, do we need to enable global trust in both the servers(domains) and restart them?

    Pls help!!

    Thanks!!
    Subba.

    ReplyDelete