Advertisements

Posts Tagged 'SOA'

Human Workflow Participant Types Behavior

Recently I got a chance to work on one of the interesting assignments where I had explored BPM APIs, mainly Human workflow related. I want to share my learning in this blog through a series of articles. This article assumes the basic terminology associated with Human workflow, otherwise one can read the documentation here.

The main focus of this article is to present how notifications will be sent and how many approvals are required for different participant types Single, Parallel, Serial and FYI.I used business rules with Named User, Application Role, Approval Group and Hierarchies (Supervisor/Job/Position) and used 12.2.1.2 version for demonstration. Please note that you should have BPM (just not SOA Suite) installed to try with a few of the assignment types described here.

Assignment Type Participant Type Behavior
Named User

Note that, multiple assignment users can be given for value based setup too.

Single Notifications will be sent at same time to all the users derived in rule evaluation. Only one approval is enough for completion.  A user may have to claim before providing approval.
Parallel Notifications will be sent at same time to all the users derived in rule evaluation. The number of approvals for completion depends on the voting percentage.
Chain/Serial Notifications will be sent at same time to all the users derived in rule evaluation as there is no serial relationship defined among users. Approvals from all assignees are required for completion.
FYI Notifications will be sent at same time to all the users derived in rule evaluation and no approval is required.
Application Role Single Notifications will be sent at same time to all the users having the application role used in rules. Only one approval is enough for completion. A user may have to claim before providing approval.
Parallel
Chain/Serial
FYI Notifications will be sent at same time to all the users having the application role used in rules and no approval is required.
Approval Group Single Notifications will be sent at same time to all the users of approval group. Only one approval is enough for completion.  A user may have to claim before providing approval.
Parallel Notifications will be sent at same time to all the users of approval group. The number of approvals for completion depends on the voting percentage.
Chain/Serial Notification will be sent in sequential manner as setup in approval groups i.e. if approval group has user1 and user2 first notification will be sent to user1 and then to user 2. Approvals from all assignees are required for completion.
FYI Notifications will be sent at same time to all the users of approval group and no approval is required.
Supervisor Hierarchy

Position Hierarchy

Job Hierarchy

Single Notifications will be sent at same time to users part of hierarchy used in rules. Only one approval is enough for completion.  A user may have to claim before providing approval.
Parallel Notifications will be sent at same time to users part of hierarchy used in rules. The number of approvals for completion depends on the voting percentage.
Chain/Serial Notification will be sent in sequential manner as setup in hierarchy i.e. if hierarchy is user1 and user2 first notification will be sent to user1 and then to user 2. Approvals from all assignees are required for completion.
FYI Notifications will be sent at same time to users part of hierarchy and no approval is required.

Observations:

  • The behavior of single participant type is same irrespective of assignment type user, role etc… i.e. only one approval is required for completion. To verify this, do multiple user assignment for single participant type, run human workflow and query WFTASK table. Here we can observe that the ASSIGNEES column having all these users with ‘,’ as separator.
  • The behavior of using application role is same irrespective of participant type i.e. only one user can provide the approval having that application role.
  • To get Chain/Serial behavior we should always go for approval groups or hierarchies. In all other scenarios the serial participant behavior is same as parallel with 100% voting.
Advertisements

Installing Cloud Adapters

When JDeveloper 12.1.3 is installed, the Sales force adapter is shown and available by default but the other cloud adapters like Sales Cloud, Right Now, HCM Cloud etc.. will not be available. In this post, I will show how to install these adapters through patches provided by Oracle.

These integration adapters can be downloaded from here and available on top of 12.1.3.0.1 (BP1). Do download Oracle Cloud Adapters 12.1.3.0.1.

Installation:

  • Install Oracle SOA 12.1.3 using quick installer.
  • Apply p19707784 using OPatch  to bring it to BP1. Refer to this post for additional help on OPatch utility.
  • Unzip the above download and observe the following patches available.

patch

  • Apply p20680367* and p20780464* in same middleware home.
  • Create JDeveloper shortcut from below location and open to observe the cloud adapters Eloqua Adapter, Oracle HCM Cloud, Oracle RightNow and Oracle Sales Cloud available in Cloud section. You will get to see this section when you create new SOA or Service Bus Application.
       MW_HOME/jdeveloper/jdeveloper.exe

cloud

  • If you are not seeing these adapters, add –clean** option as shown below in your desktop shortcut and re-open JDeveloper.  

MW_HOME\jdeveloper\jdeveloper.exe -clean

* Always read the patch README files and follow the available instructions.

** I thank my colleague who helped me by providing this workaround.

SOA 12.2.1 Released!!!

SOA 12.2.1 is released and available for download from OTN here. Another one from Oracle just before this year OOW and really excited to know.

Please refer to the supportability matrix here and it requires JDK 1.8.0_51+ on both Linux and Windows. Though Windows 7 is not listed as certified OS, i was able to install and installation is similar to 12.1.3 described here.

Following is extract from respective developer guides for your quick reference:

SOA New Features:

  • Support for patching running composite instances.
  • In-Memory SOA.
  • Debugger enhanced for XSLT maps and conditional debugging.
  • Support for End-to-End JSON and JavaScript.

Service Bus New Features:

  • Supports REST natively end-to end.
  • JavaScript pipeline action to simplify manipulation of JSON/XML payloads.
  • A new pipeline branch REST branch  used with the un-typed Native REST services.
  • A web-based XSLT mapper in Service Bus console.
  • Debugger is enhanced to support conditional and exception breakpoints.
  • JDeveloper is enhanced to deploy resources to Oracle Cloud WL Server instances.
  • HTTP transport is enhanced to support the compressed payloads.
  • SFTP transport is enhanced with FIPS (Federal Information Processing Standards) compliance support.
  • EJB transport is enhanced to leverage JAX-WS to perform Java to XML bindings.
  • MQ transport is to support Multi-Instance Queue Manager.

SOA Cloud Service Launched!!!

Oracle had released SOA Cloud Service (SOACS) along with API Manager Cloud Service in the last week and its one of the great announcements before Oracle Open World this month. With this, Oracle have complete SOA Middleware as PAAS offering which facilitates integration of on premise and other cloud offerings. You can refer to this link for the features currently offered in SOACS and can also find a list of features like B2B, ESS, MFT  etc..that will be available shortly..

SOA 12c – Maven Articles

Using Maven Sync Plugin

Using Maven for SOA Deployment

Using Maven for Service Bus Deployment

OAC 12c–Consuming API Assets in SOA/OSB Projects

In this post, we will see how to lookup Oracle API Catalog (OAC) for API assets using JDeveloper and consume it in SOA/OSB projects. Note that as mentioned in post, we need to install patch 19721053 to get JDeveloper extension for OAC/OER.

Creating OAC Connection

Select File –> New –> General –> Connections.

oerconn1

Enter required information as shown below. Note that any user with Developer role would be able to connect to OAC.

oerconn2

Click OK. Observe that new OER connection is shown in Resources as shown below and able to see all the published API assets.

oerconn

We must associate a JDeveloper application with a default OAC Connection to consume assets. Without this, we will see the following error when trying to consume assets.

lookup

To associate OAC Connection, select Tools –> Oracle Enterprise Repository and select the above OAC connection as shown below.

oacassoc

Now we can consume API asset in SOAP Project as shown below for partner link creation.

oacplink

Similarly, while creating business service in OSB we can select the OAC asset as shown below.

bizservice

oacbiz

OAC 12c:Harvesting SOA/OSB Projects

In this post, we will see how to use harvester to populate Oracle API Catalog (OAC) with Oracle SOA Suite projects.

Harvester can be used to collect services from Oracle SOA Suite and Oracle Service Bus and creates OAC API assets. Initially API assets gets created in Draft status. User can modify these assets to add metadata and publish so that users can search and use.

Before getting into nuances of Harvester, let us understand little but about the roles supported by OAC. OAC supports Developer, Curator and Admin roles for the users.

Developer: Users with this role can search for API assets in OAC console or using OER Jdeveloper plugin. And also can submit ratings and reviews for API assets.

Curator: Users with this role can run harvester to create API assets, add metadata and publish along with the capabilities provided by Developer role.

Admin:Users with this role can access the admin page to manage users, departments, settings and security along with  capabilities provided by Curator role.

It’s always recommended to run harvester with admin role. Before running the harvester, make sure that services are deployed to server Weblogic 11g or higher. Harvester can be found in %MW_HOME/oer/tools/harvester and we can run it from command line, Ant or WLST. Here in this blog, we will look at command line usage. Refer to documentation here for more information.

As a prerequisite, set JAVA_HOME variable and harvester requires Java 6 or later. Open configuration file  HarvesterSettings.xml from above location and modify repository section as shown below which points to your OAC server.

<repository>
<uri>
http://localhost:8111/oac</uri>
<credentials>
<user>admin</user>
<password>admin123</password>
</credentials>
<timeout>30000</timeout>
</repository>

Now, we should tell harvester about the location from where it can collect the resources. This can be done either using remoteQuery section in configuration file or can mention as options in command line itself.

To use remoteQuery section, modify  as shown below by giving remote server URL and the required credentials.  Make sure that your SOA server is running.

<remoteQuery>
<serverType>SOASuite</serverType>
<uri>
http://localhost:7004/</uri>
<credentials>
<user>weblogic</user>
<password>weblogic1</password>
</credentials>
<soaPartition>default</soaPartition>
</remoteQuery>

Harvester needs  passwords to be mentioned in encrypted form always so run encrypt.bat as below to take care of this requirement.

encrypt.bat HarvesterSettings.xml  HarvesterSettings.xml

Now just run  harvest.bat and see that new API assets have been created as shown below with initial status as Draft.

draftapi

We can achieve the same results from command line by running the following command;

.\harvest.bat -remote_url http://localhost:7004 -remote_username weblogic -remote_server_type SOASuite  -soa_partition default

However, harvester always picks up passwords from configuration file, so we should have remoteQuery section as below for this command to work.

<remoteQuery>
<!–<serverType>SOASuite</serverType>
<projectName>AsyncBPEL</projectName>
<uri>
http://localhost:7004/</uri> –>
<credentials>
<!–<user>weblogic</user>–>
<password>v2_1.X5z9eOo0v4+a+uyeUS7Avg==</password>
</credentials>
<!–<soaPartition>default</soaPartition>–>
</remoteQuery>

To harvest a specific project, you can include project name in remoteQuery section as shown below. We can mention revision along with project name or can just mention project name if we have single version of the project.

<remoteQuery>
<serverType>SOASuite</serverType>
      <projectName>AsyncBPEL_rev1.0</projectName>
      <uri>
http://localhost:7004/</uri>
<credentials>
<user>weblogic</user>
<password>v2_1.X5z9eOo0v4+a+uyeUS7Avg==</password>
</credentials>
<soaPartition>default</soaPartition>
</remoteQuery>

The command would look like below, if we want to harvest single project:

.\harvest.bat -remote_url http://localhost:7004 -remote_username weblogic -remote_server_type SOASuite  -soa_partition default –remote_project AsyncBPEL

We can always find usage information by using –help option as shown below.

soaharvest

We should use –remote_server_type SOASuite11g to harvest SOA Suite 11g projects.

Adding Metadata for API Assets

Search in OAC using Draft status and click individual asset to edit.

draftapi1

adpiedit

In this details page, we will observe following icons used to get link to view API details, to toggle the view, to add to list of My APIs, to edit and to delete the assets respectively.

options

Clicking Toggle view brings up following to show API asset information.

toggle

Clicking Add to My APIs will add this asset to list of My APIs.

myapis

Click Edit and add/modify required metadata for an asset and Save.

edit

Publishing API Asset

To Publish API, go to Edit page and modify the status to Published as shown below.

publishapi

And the OAC Home page will show the published APIs.

publishedlist

publishedlist1

Harvesting OSB Projects

The harvesting process, adding and publishing API assets will remain same for OSB Projects but we should use harvester from location %MW_HOME$/oer/ tools/osbharvester. Please Make sure that harvester and OSB are installed in the same middleware home.

Modify the repository and remoteQuery sections in HarvesterSettings.xml as shown below. As above, use encrypt.bat to encrypt passwords. Note that we have given the Admin server port in remoteQuery section.

<repository>
<uri>
http://localhost:8111/oac</uri>
<credentials>
<user>admin</user>
<password>admin123</password>
</credentials>
<timeout>30000</timeout>
</repository>

<remoteQuery>
<serverType>OSB</serverType>
<uri>
http://localhost:7001/</uri>
<credentials>
<user>weblogic</user>
<password>weblogic1</password>
</credentials>
</remoteQuery>

Run osb-harvest.bat to do harvest of OSB Projects and you can see the new API assets got created in OAC as shown below with initial status as Draft.

osbassets

To harvest single OSB project, add projectName to remoteQuery section as shown below.

<remoteQuery>
<serverType>OSB</serverType>
    <projectName>TestESS</projectName>
<uri>
http://localhost:7001/</uri>
<credentials>
<user>weblogic</user>
<password>v2_1.X5z9eOo0v4+a+uyeUS7Avg==</password>
</credentials>
</remoteQuery>

osbsigle

Note that I had to change following highlighted line in setenv.bat file to include tools in OER path before running harvester otherwise encrypt and harvester commands were throwing the errors.

@rem    OSB / ConfigJar Tool Home directories

set OSB_HOME=%MW_HOME%\osb
set OER_HOME=%MW_HOME%\oer\tools
set HARVESTER_HOME=%OER_HOME%\osbharvester

Similarly, API assets can be created for REST services as shown below.

osbrest

osbrest1

Installation of Oracle API Catalog (OAC) 12c

Oracle API Catalog (OAC) acts as a catalog for the APIs and provides search capability for users/developers so that they can understand APIs and use APIs in application development as per the requirement. And also provides a way to populate OAC.

We can download  Oracle API Catalog installer from here. Also download and install the other required patches as given in download page.

reqpatches

Unzip installer. Do java -jar oer_generic.jar and use following screenshots to finish installation.

oacinstall1

We can enter new Oracle Home or choose the existing home as shown below.

oacinstall2

oacinstall3

oacinstall4

oacinstall5

oacinstall6

Once the installation is done, you can find the oer directory in selected Oracle Home showing following directories.

oac

Now proceed with the installation of other required patches 18718889 (WLS update for harvester), 18791727 (RCU) and 19721053 (JDev extension for OAC/OER). Unzip the patches and install using opatch utility as shown below.

patch1

patch2

patch3

After the installation of these patches:

  • We should be able to see OER connection in File –> New –> General –> Connections.

oerextn

  • We should be able to see OAC related schemas in RCU installer as shown below. We can invoke  RCU installer from %MW_HOME%/ oracle_common /bin. Make sure that you install certified database before installing these schemas also choose the corresponding schemas depending on OER or OAC installation that you opted for.

oacrcu

Finish OAC schema installation with help of following screenshots.

oacrcu1

oacrcu2

oacrcu3

oacrcu4

Note: Here I have used the existing middleware home for installation and used XE database for RCU installation.

For more information, you can refer to installation guide here.

OAC Domain Creation:

Invoke the configuration wizard from %MW_HOME%/wlserver/common/bin and create new OAC domain using the following screenshots.

oac_domain1

oac_domain2

oac_domain3

oac_domain4

oac_domain5

oac_domain6

oac_domain7

oac_domain8

Once OAC domain creation is successful, start both Admin and OAC managed servers to access Oracle API Catalog.

We can access OAC using url http://localhost:8111/oac and default credentials for admin are admin/weblogic1. You will be asked to modify admin password after the first login and will bring up the following screen.

oachome

SOA 12c – ESS Articles

Creating ESS Job metadata using EM Console

Creating ESS Job metadata using JDeveloper

Creating ESS Schedule metadata

Creating ESS Incompatibility metadata

Creating ESS Job Sets metadata

Retry functionality in ESS Jobs

Creating Async ESS Job Definition

Using Schedule Job activity in BPEL

SOA 12c – Creating ESS Async Job Definition

In the post, we have seen creating ESS Job Definition using synchronous web service. Now, we will look at creating Job Definition using  Asynchronous BPEL web service having 5 min Wait activity to simulate the delayed response.

We will also take a look at other changes required for deployment when new job definition is created in existing ESS application in new package structure.

Create Async Job Definition with help of following screenshots. Make sure that you always use the concrete WSDL.

asyncbpeljob

projexplore

tab

selectwsdl

selectwsdl1

asyncws

asyncws1

You need to modify MAR profile to include the new job definition and also adf-config.xml file to include the valid namespace as shown below.

marchanges

adfconfig

Now deploy ESS application and submit a new request using this job definition. You would observe that ESS job status is in Running state but waiting for the response from BPEL web service as shown below.

waitjob

Once ESS job receives the response from asynchronous BPEL web service the job will be finished and shows status as Succeeded as shown below.

aftersuccess

You will see the similar behavior as above even when you use ADF BC service.


Advertisements

Pages

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 342 other followers

Enter your email address to follow this blog and receive notifications of new posts by email.