Inorder to overcome this, if you feel you may get null values for a particular tag which you may want to assign later, then use an if condition to set it to empty text if the value is null. In such cases, the tag is created with empty value, so you can use it for assigning later.
Assign not happening after XSL transformation
OSB IDE & OEPE
OSB IDE actually comes as part of the OSB installer. While installing Oracle Service Bus, one of the steps will be to provide Middleware Home & OEPE Home.
With this, it will install required plugins over OEPE to have the OSB IDE
Be aware about the versions of OEPE & OSB. Different versions of OEPE are used for different versions of OSB
You can get in Oracle website, or for quick reference
Here is the list
OSB | Weblogic Server | OEPE |
11.1.1.6.0 11.1.1.7.0 |
10.3.6 | 11.1.1.8.0 |
11.1.1.5.0 | 10.3.5 | 11.1.1.7.2 |
Hope this helps resolve the confusion over OSB IDE and OEPE.
Using properties in Composite (or) Using Properties in BPEL
This post will take you through a demonstration on how to setup and use properties in a Composite
Often you’ll have scenarios where you’ll need to change/setup certain values at runtime. For ex, adminEmailAddress. During dev, usually the developer would use his mailId but when deployed in production, the admin has to be assigned. How is this addressed?
Using Properties
1. Define properties in Composite.xml against the BPEL process in which you want to use this properties
<property name="bpel.preference.adminEmailAddress” type=”xs:string” many=”false”>admin@xyz.com
…
Note that bolded bpel.preference should not be changed.
2. Use this property in BPEL
For ex, in the Mail activity, the to address needs to use this value
ora:getPreference(‘adminEmailAddress‘)
3. Set this property value in EM
Go to EM –> Weblogic Domain –> rt click on soa_domain–> System MBean Browser
oracle.soa.config –> Server : –> SCAComposite –> SCAComposite.SCAComponent –> Click on your Process
On the right side, click on Properties
You’ll see the property adminEmailAddress, where you can replace whatever value you want.
Thanks for reading the post.
Unable to deploy ADF UI app – java.lang.ClassNotFoundException: oracle.adf.library.webapp.ResourceServlet
Operation ‘deploy’ on application ‘ProjectInitiate_V3_UI’ has failed on ‘AdminServer’
java.lang.ClassNotFoundException: oracle.adf.library.webapp.ResourceServlet
oracle.adf.library.webapp.ResourceServlet
Deploy operation failed.
Reason being the .war file that you are trying to deploy does not contain the whole lot of classes required. You make .ear file instead which has all the resources required.
The way you do it is, deploy the same at the Application level instead of Project Level from Jdev
OR
If you are deploying directly from EM/Console, deploy the .ear file instead of .war file
SOA Deployment taking indefinite time
The task cannot be processed further until the current edit session is activated. When this occurs, task processing will continue. The user can exit the deployer tool without affecting the task.
and the deployment never happens.
This happens because there you may have mistakenly/intentionally changed certain parameters in the WLS console, and did not activate/revert those. If you open the console (http://host:port/console), you see the ‘Activate Changes’ button enabled at the left top corner.
You just have to either activate/revert the changes, and the deployment happens now.
Runtime Operation Error in BPM – ORABPEL-30017 – Invalid task definition
When you encounter this issue of getting a ‘Runtime Operation Exception’ while logging into BPM Workspace, or find a similar log
ORABPEL-30017
Invalid task definition.
The task definition at default/PrjTaskReminderNotification!1.0*soa_5cb0ae06-9485-488f-91b1-1b2872276fb9/Initiator could not be read. The task definition is associated with workflow default/PrjTaskReminderNotification!1.0*soa_5cb0ae06-9485-488f-91b1-1b2872276fb9/Initiator.
Make sure that the task definition is available at the specified URL and that it is a valid XML document.
Here’s the solution.
This happens when there are more than one active record in BPM_CUBE_PROCESS table.
You just have to make sure that there is only one active record per process.
Execute the following query by connecting to the SOA_INFRA schema of the database
select processId, processName, compositeName, revision, status, from BPM_CUBE_PROCESS;
If it returns multiple records for the same ProcessName, make the status of all those entries to -1,commit and redeploy the process.
Now, you can see the process in the workspace without any problem
Publish Message to JMS Queue
1. Create a new SOA Project
2. Define a message schema of the following type
3. Drag and drop JMSAdapter from the component palette to References section of composite.xml
4. Configure the JMSAdapter as per the screenshots given below
7. Now, open the mediator, create the transformation file in the Routing Rule and deploy
This message stays in the queue for the time that is configured in the wizard. After that time, the message expires.
Configuring JMS Resources for JMSAdapter
- JMS Module(Optional) : Is a definition that contains various JMS Resources like queues, topics, etc.
- Sub-Deployment(Optional) : used to group target servers
- Connection Factory : is a Weblogic resource that enables JMS clients to create connections to JMS destinations
- Queue / Topic : the actual destination of the message, either a queeu(point to point) or topic(publish-subscribe)
- Connection Pool : Create a pool of connections for the JMSAdapter application
Please read the next post on working with JMS Adapter
Multi-Instance Processing in BPM – Iterating over Arrays in BPM
BPM – UCM Integration : Human Task Attachments(stored in UCM)
This post applies specifically to Oracle BPM Suite 11g 11.1.1.5 Version before the FeaturePack, which is otherwise called PS4(Pure Vanilla BPM PS4)
UCM Integration with BPM is inbuilt from PS5 onwards(the document tab in the Human Task and some configuration in EM), but till PS4 there is no direct provision to talk to the UCM store. It has to be invoked just as any other web service, get the content and operate on it.
Human Task attachments is such a common scenario, and the attachments are normally fetched from some content repo like UCM.
How do we get the content from UCM and attach it to the Human Task so that the participant that acts on the task will have the attachments in his taskform/Email.
UCM – as such – provides various WebServices to deal with various operations. List of WebServices can be seen in its documentaion
This post deals with the GetFile WebService of UCM(http://docs.oracle.com/cd/E17904_01/doc.1111/e11011/c05_core.htm#BABFDEFH) which, as the name implies, is used to retrieve the content stored in UCM
First, login to the UCM console, and click on ————, get the WSDL in to the project OR create a reference to it.
This WebService has an operation that takes in 3 parameters. Often, we deal with only one parameter from the list(either the documentId or documentName(in UCM)), with other two as null.
But there is a bug in the WebService where if you pass a payload similar to
1232
<RevisionSelectionMethod/>
the service returns error – inspite of the fact that you’ve passed the correct docId of the document you want to retrieve.
Workaround for this is to remove the empty tags completely which you cannot directly make in the invoke activity, so use a mediator before the call in which you remove out the not required tags(in the routing rule transformation – by not mapping these two)
A screenshot of the same
Once this is done, the webservice returns a result which is the content of the document, which you need to assign to the attachments part of the execData of the HumanTask.
Hope this gave you an understanding of how to retrieve the documents from UCM (in PS4)
The next post is about dealing with multiple attachments in Human Tasks