Skip to main content

Workflow Extentions with WSO2 AM 1.6.0

This is a major requirement raised by many WSO2 API Manager users many times and finally it was introduced with latest WSO2 APIManager 1.6.0 release.It's the ability of plugin workflow extensions in to APIManager major functionalities. As the first cut,we have introduced workflow extension support for below three major functionalities;
  • User Signup
  • API Subscription 
  • Application Creation
By default,APIM binary pack is shipped with a java workflow executor and a web service executor to trigger workflow processes on above three functions and that executor can be defined and configurable via api-manager.xml file.If you wish to add your own workflow executor on each above three processes,that also possible.What you have to do is write your own custom executor and integrate it to WSO2 APIM pack via a configuration change in api-manager.xml file.For more information,please refer 
http://docs.wso2.org/display/AM160/Adding+Workflow+Extensions.

Addition to providing ability to plug workflow executors to above three functions,with this release we are shifting three BPELs and three human tasks to use with default  web-service executors mentioned above.To try that,download WSO2 AM 1.6.0 and navigate to {AM_Home}/business-processes and refer readme.txt of it.To deploy these provided BPELs and human tasks you need to download WSO2 BPS [which provides a complete web-based graphical console to deploy, manage and view business processes].Generally the flow of usage of each of these BPEL is that;
  1. A user will trigger a one of above functional request [For eg: a user tries to signup to APIStore ] from APStore UI and that function request will be result with pending status until that request complete its workflow process.

  2. It needed to configure api-manager.xml with the default web-service workflow executor   for each above functions and it needed to give the ws endpoints as the deployed bpel     endpoints in WSO2 BPS.Such that,once a workflow request execute from APIStore UI as in 1),then the configured ws workflow executor will be executed  and will trigger a business         process instance in WSO2 BPS side based on deploed BPELs.
    Deployed BPELs in WSO2 BPS


    Created business process instances in WSO2 BPS
  3. From that business process instance, a human task also will be created and to continue this process further,a permitted human interaction require to approve/reject the triggered task request.
  4. Once the permitted human being,approve/reject the triggered workflow request [for eg: a user signup request],then that human response will be pass to APIM workflow callback endpoint and the APIM database tables will be updated accordingly based on workflow   response.
You can get better idea,on usage of above BPELs,if you follow the above mentioned readme.txt inside APIM binary pack.

For above 3rd  step in the BPEL flow,we have introduced a new web-application UI called 'workflow-admin' [https://ip:port/wotkflow-admin] in APIM binary pack.From this web application,it will basically list down the pending tasks,which needed to get approved/rejected by permitted users groups[admin users].A permitted user can login to this web application and view the pending tasks and assign to him/her and proceed with approving/rejecting that request and complete that human interaction needed task.


NOTE :By default workflow-admin web application allows only users with admin role to be login to that web application,as the default shifting three human tasks in APIM has written as allowing the users having 'admin' roles to be approve/reject the created human tasks.

Workflow-admin webapp UI




Comments

Popular posts from this blog

Convert an InputStream to XML

For that we can use DocumentBuilder class in java. By using the method parse(InputStream) ; A new DOM Document object will return. InputStream input; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder(); Document dc= parser.parse(input); In the above code segment,by using the created Document object,the corresponding XML file for the inputStream can be accessed. References: http://www.w3schools.com/dom/dom_intro.asp http:// download.oracle.com/javase/1.4.2/docs/api/javax/xml/parsers/DocumentBuilder.html

Concat two xml values with XSLT

The use-case described in this blog-post,is there's an WSO2 ESB node setup to proxy an incoming message to a particular back-end endpoint.  Before delivering the message to the back-end endpoint,from the ESB node itself,this incoming message need to processed and change its inside xml payload format. For eg: Below is the incoming message <?xml version="1.0" encoding="UTF-8"?> <CinemaHall name="liberty"> <OwnerData> <Name>John Smith</Name> <openedDate>12/12/80</openedDate> <quality>good</quality> </OwnerData> <CinemaHallData> <rows>100</rows> <seats> <seat>50</seat> <seat>60</seat> </seats> </CinemaHallData> </CinemaHall> This message need to be changed as  below; <?xml version="1.0" encoding="UTF-8"?> <CinemaHall name="liberty"...

Passing end-user details from client to real backend endpoint via JWT token

In real-world business system,WSO2 API Manager useful on exposing company APIs, in a secured and controlled manner with the features provided by APIManager as; OAuth support [To secure API invocations] Throttling support [To control API invocations] Monitoring support [To track API usage] More technically what happening is when a user sends a particular API request,it will goes to WSO2 APIManager node and from there,the request will route to the real implemented back-end endpoint of the particular API and get back the response and returned it to the API invoked user. There can be a use-case,that this back-end endpoint may expect the details of API invoked user as to pass those details to some internal company usage  as; Additional authentication/authorization Track usage data from an internal system. So how to support above requirement from WSO2 AM. There comes the use of JSON Web Token[JWT] implementation done inside WSO2 AM. JWT is a means of representing claims to...