Friday Mar 01, 2013

Webcenter Content (UCM) BPM Integration

This blogs walks through the configurations required in Web Center Content and BPM to invoke a process deployed on the SOA server from the content server workflows. This is a common use case where a BPM or BPEL process has to be invoked from UCM based on an event like document check in.

  1. Prepare the UCM environment for integration with SOA.

This step is only required when the UCM and SOA domains were created separately and the UCM domain is not extended for SOA.

a. Copy the “soa” folder from SOA_ORACLE_HOME to UCM_ORACLE_HOME

For example: Copy D:\Oracle\Middleware\Oracle_SOA1\soa to D:\Oracle\Middleware\Oracle_UCM1\soa

b. Update the class path in setDomainEnv on the UCM server

Windows:

Edit setDomainEnv.cmd in %DOMAIN_HOME%\bin

Add :  set POST_CLASSPATH=%ORACLE_HOME%\soa\modules\oracle.soa.mgmt_11.1.1\soa-infra-mgmt.jar;%POST_CLASSPATH%

UNIX

Edit SetDomainEnv.sh in $DOMAIN_HOME/bin

Add: POST_CLASSPATH="${ORACLE_HOME}/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar${CLASSPATHSEP}${POST_CLASSPATH}"

c. Enable Cross Domain Security

Perform the following steps in both UCM and SOA console

1. Login to the Weblogic server console (http://localhost:7001/console/)

2. Select the domain name under Domain Structure. Navigate to the Security Tab

3. Check “Cross Domain Security Enabled”

4. Enter the same credential for both UCM and SOA

d. Restart the servers

2. Enable UCM-BPEL Integration Component

a. Login to content server, navigate to the Admin Server

b. Select component manager for the server on which the component needs to be installed

c. Click on “Advanced Component Manager” and enable the BPELIntegrationComponent

d. Login to the Weblogic Administration console of UCM. Navigate to servers, select the UCM server and click Restart SSL.

3. Configure connection to SOA server

a. Navigate to Administration -> Oracle BPEL Administration -> Connection Configuration

b. From the “Connection Menu” select Add connection

Enter the following credentials

Note: The Provider URL contains the SOA server’s hostname and port. You can test this be running the wlst script in the SOA server and connect to t3://servername:[port]

c. Test the connection. If successful you should see the following screen. Revisit   steps 1 – 3 if there is an error.

4. Process Configuration

a. Navigate to Administration -> Oracle BPEL Administration -> Process Configuration

b. From the process menu select “Add Process”

c. Select the BPM/BPEL process from the drop down

d. Click Save

e. Go to Actions “Upload Payload”

Map the process input fields to the Metadata fields in UCM

   5. Update the SOA composite to enable UCM integration

a. Add the following line to Composite.xml in the SOA/BPM project as shown

<binding.adf serviceName="YourUniqueServiceName" registryName=""/>

 

       6. Configure Workflow in UCM

a. Login to content server

b. Navigate to Administration -> Admin Applets

c. Launch the Workflow Admin Applet

d. Add a new Workflow criteria

 

e. Click on edit criteria workflow. The following screen is where the event trigger condition is set. In this case the workflow will be triggered for Document Type that matches “Document”

f. Edit initiateprocess

              g. Add the users that have access to the workflow and document check in for which the workflow is triggered

h. Add the following lines under Exit conditions

wfGet("conversationId") and 
obIsInstanceClosed("BPEL", wfGet("conversationId"))

 

i. On Events tab click Edit for Entry. Add the line <$wfReleaseDocument()$> before <$endif$> to automatically approve the document. If you do not add this step the document state will be “Pending” and the user has to manually go to Content Management -> Active Workflows -> My Workflow Assignments to approve the document.

<$if not conversationId$>
<$obConfigID="BPEL"$>
<$obInvokeProcess(obConfigID)$>
<$endif$>

7. Login as sysadmin ( the user from step 6) Check in a document of Type Document trigger               condition in step 6) and verify if the BPM/BPEL process is instantiated.

Trouble shooting

  1. Cross domain security – If the cross domain security is configured incorrectly you will see the following error:
vax.xml.ws.WebServiceException: java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators]
  at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:209)
  1. Enabling UCM System Audit to trace BPEL Integration related errors

Navigate to Administration->System Audit Information and add the BPEL integration component under “Tracing Sections Information”. Update and click “View Server Output” to view the detailed logs.

3. Complex Types as BPEL/BPM process input. With the current release of Webcenter Content (11.1.1.6) UCM does not process the complex type as the process input and the “Update Payload” action will give and error. The work around is to use a simple type as input.

Reference

http://docs.oracle.com/cd/E21764_01/doc.1111/e16759/toc.htm

Custom TaskList Portlet in Oracle BPM 11g

Introduction:

Oracle BPM 11g suite provides the BPM Workspace for end users to view and act upon tasks that are assigned to them. The various User Interfaces available for end users are:

  • The BPM Workspace Application
  • TaskList Portlet in WebCenter Spaces

Customers may need a task list portal as a part of their enterprise application with the tasks displayed in a format that is most appropriate to the business. A Custom Worklist Portlet can be built and consumed from other applications. This article describes solution that uses the Human Task Java APIs to query the BPM engine, Oracle ADF to build the custom portlet and Webcenter spaces to consume the portlet.

The benefit of this approach is that the business can continue to use the enterprise portal to complete the tasks assigned to them in a way that is most suited to the business.

The following sections describe how to build a custom Task List portlet that that can be consumed from Webcenter spaces.

1. Developing an ADF Project to display tasks, details, actions

2. BPM Authentication and Identity Propagation

3. Portletizing the ADF Application

4. Consuming the WSRP in Web Center

1. Developing an ADF Project to display tasks, details, actions

  Create an ADF Application in Jdeveloper with a Java Class in the View Controller project   to query the tasks from the BPM Engine.

a. Connect to the BPM Engine

  BPM Provides the Work List APIs to query and Act upon tasks. The Task services can be  accessed through SOAP connections.

Map properties = new HashMap<CONNECTION_PROPERTY, String>();

properties.put(CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, wsurl);

// SOA server URL, http://[Server Name]:Port"

properties.put(CONNECTION_PROPERTY.SECURITY_POLICY_URI,

"oracle/wss10_saml_token_client_policy");

properties.put(CONNECTION_PROPERTY.MANAGEMENT_POLICY_URI,

"oracle/log_policy");

wfSvcClient =

WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.SOAP_CLIENT,

properties,

null);

b. Initialize the task attributes to be queried

List queryColumns = new ArrayList();

queryColumns.add("TASKID");

queryColumns.add("TASKNUMBER");

queryColumns.add("TITLE");

queryColumns.add("OUTCOME");

queryColumns.add("STATE");

queryColumns.add("UPDATEDDATE");

queryColumns.add("UPDATEDBY");

queryColumns.add("CATEGORY");

queryColumns.add("HASSUBTASK");

c. Execute the query

querySvc.queryTasks(ctx, queryColumns, optionalInfo, ITaskQueryService.AssignmentFilter.MY_AND_GROUP,null, null,null, 0);

      d. Retrieve the task result set

for (int i = 0; i < tasks.size(); i++) {

Task task = (Task)tasks.get(i);

int taskNumber = task.getSystemAttributes().getTaskNumber();

String title = task.getTitle();

String taskId = task.getSystemAttributes().getTaskId();

String outcome = task.getSystemAttributes().getOutcome();

String state = task.getSystemAttributes().getState();

}

Right Click on the Java Class and create an ADF Data control. Drag and drop the data control on the JSPX to create the task list table.

2. BPM Authentication and Identity Propagation

Identity propagation provides a mechanism to propagate the user token (in this scenario we use the SAML token) when the user logs in to the BPM web service. This method does not required usernames and passwords to be sent as clear text in the code. The SAML token is created when the user logs in for the first time. The SAML token is passed to the BPM webservice to query tasks related to that user.

The following properties can be set for identity propagation:

properties.put(CONNECTION_PROPERTY.SECURITY_POLICY_URI, "oracle/wss10_saml_token_client_policy");

properties.put(CONNECTION_PROPERTY.SOAP_IDENTITY_PROPAGATION , "saml");

3. Portletizing the ADF Application

Portletizing the ADF application creates an Oracle JSF Portlet bridge that exposes the application as a JSR 286 portlet that can be consumed by other applications.

a. Right click on the jspx in the Application Navigator and click Create Portlet entry.

    b. Deploy the Portlet to the WC_Portlet Server

    c. Attaching a policy to the Portlet prodcucer end point

Login to the Enterprise Manager Console, expand Application Deployments. Right click on   the deployed application and select Web services. Select WSRP_V2_Markup_Service from the list of Web Services.

Click Attach/Detach in the policies tab

Select oracle/wss10_saml_token_service_policy and click Attach

Click OK to save the changes

4. Consuming the WSRP in Web Center

a. Registering the Portlet

Login to the Web Center Spaces Server EM Console

Expand Service WebCenter Spaces, right click webcenter and select Settings->Service Configuration


Select Portlet producers -> Add

Enter the following details, test and click OK

b. Consuming the portlet

Add the Portlet in the Webcenter spaces page

About

This blog was created to share bite sized bits of information picked up in the field by Oracle's team of solution consultants and engineers.Bon appetite! Locations of visitors to this page

Search

Archives
« March 2013
SunMonTueWedThuFriSat
     
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
      
Today