Oracle SOA Suite Online Training

Interested in learning Oracle SOA Suite 12c?
Learn from the author of this blog!
A complete and comprehensive course on the #1 platform on SOA - Oracle SOA Suite

Click here to find the complete course details
Click here to check the first session on Oracle SOA Suite 12c


Importing a BPM Project into Jdeveloper

When I was doing my first project on BPM, I was asked to check some exisiting BPM Project which was sent to me as a .zip file
Now this is not in a .jar format which would have been the case with a SOA Project.
When you check a BPM Project in Jdeveloper, you see two folders, one for SOA stuff and the other for BPM. So this is organized in a different way compared to a SOA Composite
I literally had no idea how to import the source code into Jdeveloper and finally could find a simple solution

Just create the application and projects with the same name as that of the source code(from zip file). This creates a similar folder structure in your workspace. Now you can take the files from the zip and place/replace them into the folders in you workspace.
Now, when you open your Jdeveloper, you could see the entire thing setup!

Thanks for reading, Please check the other blogs as well

Customizing generated ADF task forms in Human Tasks

Many times, there are cases where you need to customize the defualt generated task forms in BPM Applications
Simple examples could be to have a list of values as a drop-down for a particular field. If this field is of type string, then the default generated task form will have a simple text box of type string. Now, this is not the thing you want, you may need a drop down here. How do you address this scenario?

Its simple, you have to know some ADF and you are done!
Open the .jspx page generated for the task form, click on the field that you want to modify, go to src and replace that with the ADF code snippet that you want

Make use of a Managed Bean where you pull the values to be displayed, then in the .jspx page, write code for the LOV that pulls values from that operation in the ManagedBean

                    <af:selectOneChoice label="EPS Name" id="soc1" autoSubmit="true"
                      <f:selectItems value="#{pageFlowScope.wsAccessorBean.lovValuesForEPS}"

Invoking a Secured WebService in BPEL - Oracle SOA Suite 11g

No Webservice in real-world business applications is just exposed as it is, Security is enabled inherently
Oracle Fusion Middleware uses a policy-based model to manage and secure Web services across an organization
Policies apply security to the delivery of messages
Policies can be managed by both developers in a design-time environment and system administrators in a runtime environment

Below are the steps to invoke a secured WebService from a BPEL Process

  1. Before we start, we have to know what is the security policy imposed by the WebService. In this example, we are considering a WebService that has oracle/wss_username_token_client_policy

  1. There are 2 ways of imposing security for services in Oracle SOA Suite 11g
    1. Design Time
      1. Simply, rt click on the web service reference --> Configure WS Policies --> Select the appropriate Policy
Please note that you can select multiple policies at once, depending on the security of the WebService

This step adds the following snippet
      <wsp:PolicyReference URI="oracle/wss_username_token_client_policy" orawsp:category="security" orawsp:status="enabled"/>
  1. Run Time
    1. The same could be done at runtime using Enterprise Manager(EM)
Login to EM --> rt click on soa_infra --> configure Policies --> select the appropriate Policy
The above step creates a 'Lock' icon on top of the web service reference as shown above

  1. Open composite.xml, goto source view, find out the reference tag in the file and add the following snippet which basically tells that this particular reference is secured with so-and-so policy, and these are the credentials for invoking the same
      <property name="oracle.webservices.auth.username" type="xs:string"
                many="false" override="may">admin</property>
      <property name="oracle.webservices.auth.password" type="xs:string"
                many="false" override="may">Welcome123</property>

This will make sure the webservice is invoked using the provided credentials. And, that’s it!
Hope this gave you a clear understanding on invoking secured WebServices
Thanks for reading, Please check the other blogs as well

BPM - Primavera P6 Integration Issue - Workflow link not coming up in "My Workflows"

During Primavera P6 - BPM Integration, sometimes you may get the following scenarios

- BPM Initiator link missing in "My Workflows" link
- BPM tasks coming up in Primavera P6 BPM Portlet, but link not appearing

There may be a case where the BPM workflow is working completely fine through BPM Workspace, but from the Primavera P6 BPM portlet, you will be able to see the tasks, but you don't find a link to initiate the workflow.

If you check the Primavera P6 logs, here is what you find

ERROR com.primavera.infr.srvcs.bpm.BPMNServiceImpl ?:? BPM service could not connect to BPM Identity service provider for database 1
Service error.
Internal Error; Service error occurs in BPMIdentityService in method authenticateUser.
Refer to the log file that is configured for for more details on this error and contact Oracle Support Services

This happens if you dont grant privileges to the jar files you've added to the Primavera P6 WLS
Just put the follwoing snippt in weblogic.policy file you find under  in your Primavera WLS

//Grant privileges to BPM
grant codeBase "file:/u200/app/GTAXAP/orgtaxap/oracle/Oracle/Middleware/11g_bpm/modules/*" {

Works like a charm, suddenly the link starts appearing in "My Workflows"