BPM-API and generic task completion

Hi experts,
I want to write an application that allows you to work on different tasks. The problem is that these tasks could include various input and output data. How can I resolve this DataObjects generic and receive all relevant information such as data type, value and name? How is that when the data are nested? You can also then resolve the structure and if so how?
Regards

Hi,
yes, you can do so. The interface common.sdo.DataObject provides methods to introspect the structure and determine the type of the properties. You might take a look at the RESTful service for the BPM API I published on CodeExchange:
RESTful service for NetWeaver BPM
Looking at the code in the repository you will definitely samples on how this can be achieved.
Hope this help you to start on what you are trying to achieve.
best regards,
Stefan

Similar Messages

  • BPM process and manage task  option should avaible at Portal

    Hi Expert,
    Assigned User will see BPM  process and manage task option in  directly in portal not required to login as NWA.
    Please help me on this.
    Thanks,
    Padmindra

    Hi Mithileshwar,
    Start BPM Process Trigger - Read timed out
    Regards,
    V Srinivasan

  • Mark waiting and cancelled tasks completed

    Hi All,
    is there sql somewhere that can mark certain tasks that are in waiting and canceled status to Completed?
    Thanx.
    Fred

    I would suggest using the APIs to update the status or use the manuallyComplete API instead.
    -Kevin

  • SAPUI5 and oData: Task completion problem

    Dear all,
    We've got a BPM process which is based on WDJ approval screens.
    Now I would like to replace WDJ by SAPUI5.
    I've succeeded to display some task input data in my SAPUI5 application:
    oPanel.bindElement("/InputData('"+taskId+"')", {expand:"ContextTypeINPUT/Context/Requester"});
    var oInputFirstName = new sap.ui.commons.TextField("textFirstName", {
        value : "{ContextTypeINPUT/Context/Requester/FirstName}"
    var oInputLastName = new sap.ui.commons.TextField("textLastName", {
        value : "{ContextTypeINPUT/Context/Requester/LastName}"
    But I can't manage to complete the task.
    For a simpler example that worked for me.
    It seems that I don't fill the output data correctly.
    Normally I should fill the Status (fields Action, ChangedBy, ChangedOn and Details) and the Request->ReferenceNumber:
    Please find attached the XSD of the task.
    I tried the following:
    var outputData = {};
    var status = odataModel.getProperty("/InputData('" + taskId "') " +
                      "/ContextTypeINPUT/Context/Status");
    status.Action = "approved";
    status.ChangedBy = "TEST";
    status.ChangedOn = "2014-07-29";
    outputData.HandleRequestCompleteEventTypeOUTPUT = status;
    // send request to BPM Task Data OData service to complete
    odataModel.create("/OutputData", outputData, null,
        function sendData_OnSuccess(oData, response) {
            alert("Task has been completed successfully");
        function sendData_OnError(oError) {
            alert("Task could not be completed");
    But it stops when executing the second statement (var status = odataModel.getProperty("/InputData('" + taskId "')...).
    I would really appreciate if you could help me!
    Thanks in advance.
    Best regards,
    Thorsten.
    P.S.: Our system is running NW 7.40 SP07.

    Hi again,
    As most of the time, I had to solve my issues published on SCN on my own
    My mistake was, that I've retrieved the 'handleRequestType' of my OutputData from the InputData.
    It seems that having all subtypes in the structure causes trouble, because I fill only to fill two fields.
    In the end I build OutputData myself and it works now...
    So in fact it's possible to create an proper OutputData without a binding of InputData.
    controller.js
    completeTask : function() {
    // Get TaskID and data model
    var taskId = getValueOfURLParameter("taskId");
    var odataModel = this.getView().getModel();
    // Create OutputData
    var outputData = {};
    // Create all needed subtypes
    var handleRequestType = {};
    var status = {};
    var request = {};
    // Fill values for fields that need to be sent
    status.ChangedBy = sap.ui.getCore().byId("inputStatus").getValue();
    request.ReferenceNumber = sap.ui.getCore().byId("inputRequest").getValue();
    // Build OutputData
    handleRequestType.Status = status;
    handleRequestType.Request = request;
    outputData.HandleRequestType = handleRequestType;
    // Complete task with built OutputData
    odataModel.create( "/OutputData", outputData, null,
         function sendData_OnSuccess(oData, response) {
              alert("Task has been completed successfully");
         function sendData_OnError(oError) {
              alert("Task could not be completed");
    view.js
    createContent : function(oController) {
    // Text input fields which will feed the OutputData
    var oInputStatus = new sap.ui.commons.TextField("inputStatus");
    var oInputRequest = new sap.ui.commons.TextField("inputRequest");
    // Button to complete the task
    var oButton = new sap.ui.commons.Button( {
         text : "Complete",
         style : sap.ui.commons.ButtonStyle.Accept,
         press : (function() {
         oController.completeTask();
    Just make sure that you explore your OuputData before via a tool like Postman (Chrome Addon).
    First do a GET request:
    http://<host>:<port>/bpmodata/taskdata.svc/<taskID>/OutputData
    Then look for a "/XYZ" part in the response.
    In my case it looked like that:
    <link href="OutputData('<TaskID>')" rel="edit" title="OutputData"/>
    <link href="OutputData('<TaskID>')/HandleRequestType" .../>
    So I could go on to explore my output data, by sending the following GET request in Postman:
    http://<host>:<port>/bpmodata/taskdata.svc/<taskID>/OutputData?$expand=HandleRequestType
    Now you have to repeat that until you find the data type that you want manipulate.
    If you found out how your OutputData looks like, you can build it easily on your own (see my controller.js).
    Maybe I'll write my first blog about it

  • A contract-manpower and machines -task completed-billing according to hours spent

    Hi friends,
    The business requirement is
    1. participating customer tendering process,
    2. given quotation to customer
    3. once quotation is matured contract will be  awarded
    4. now a crew members and set of equipment will be deployed at customer site and start work, the work contains different phases, once the first phase is completed  invoice is raised to customer
    Questions:
    1. How do i track what are all the eqipments are deployed
    2. how many man power is delpoyed?
    3. how do i book the cost of equipment and man power for the project/ task spent?
    4. how do i raise the bill to customer ?
    experts ,please advice me a clear solution for this requirement
    Regards,
    Pratheep

    1. How do i track what are all the equipment's are deployed
    Equipment's will be installed in functional locations, Plant = Functional location and first install the same when mobilizing @site. You can view in report IH08.
    2. how many man power is delpoyed?
    In HR master data organizational assignment will be there where personal subarea can be the project location. Please check with your HR consultant.
    3. how do i book the cost of equipment and man power for the project/ task spent?
    Depreciation cost of the equipment will be at the company level.It can be apportioned to the project.Other maintenance cost of equipment and running cost can be captured in the order and the same can be settled to the respective WBS periodically.
    4.  how do i raise the bill to customer
    Create the contract once the quanity is certified raise invoice reference to the order [Bill Certfied.
    Regards,
    Senthil Venugopal

  • BPM API over T3 Protocol using Virtual IP

    Hi
    JDeveloper/SOA/BPM 11.1.1.7
    Weblogic 10.3.6
    I have a custom dashboard written in ADF using BPM API.
    The Tasks list are queried using the T3 protocol as mentioned in Building a Custom Worklist Client - 11g Release 1 (11.1.1.6.3)
    The API works and I am able to query tasks and open them.
    The Middleware infrastructure is as follows.
    We have a Cluster with 2 managed servers.
    As of now when calling the API, I am giving the URL of the server on which the tasks are present as comma separated server and port names.
    t3://ms_server_1:port,ms_server_2:port
    Our administrators have created a VIP (Virtual IP) for the WLS and for the ADF application and web services, we are able to use the VIP url (http)
    I was wondering if there is any way to use the VIP for T3 protocol as well?
    The problem if we don't use the VIP is that when we open the tasks, they are pointing to the individual managed servers.
    So when one managed server is down, then the tasks cannot be open and the application will not work normally.
    And also if we have enabled security for the application it will ask the user to login second time when the task is opened.
    Can anyone please let me know if there is any way to use VIP url on T3 protocol ?
    Thanks for any help
    Sameer

    Hi Anshul
    Thank you very much for replying.
    Actually I forgot to mention that we are using OHS (Oracle HTTP Server) and not Apache.
    And our administrators said that the HTTP Tunneling is enabled already. The httpd.conf already has those tags
    I tried to use the VIP host name (1. without any port, 2. with 80 port and 3. with the port same as the managed server) but when I run my program, we get the following Exception
    Exception
    oracle.bpm.client.common.BPMServiceClientException: oracle.bpel.services.workflow.client.WorkflowServiceClientException: javax.naming.CommunicationException [Root exception is java.net.ConnectException: t3://vip_host_name.com:7831: Destination unreachable; nested exception is:
            java.net.ConnectException: Connection refused: connect; No available router to destination]
            at oracle.bpm.client.BPMServiceClientFactory.getBPMUserAuthenticationService(BPMServiceClientFactory.java:250)
            at com.abc.publicModel.util.BPMTaskUtil.getIBPMContext(BPMTaskUtil.java:949)
            at com.abc.publicModel.util.BPMTaskUtil.getUserTaskListWithDetails(BPMTaskUtil.java:133)
            at com.abc.publicModel.util.BPMTaskUtil.main(BPMTaskUtil.java:972)
    Caused by: oracle.bpel.services.workflow.client.WorkflowServiceClientException: javax.naming.CommunicationException [Root exception is java.net.ConnectException: t3://vip_host_name.com:7831: Destination unreachable; nested exception is:
            java.net.ConnectException: Connection refused: connect; No available router to destination]
            at oracle.bpel.services.workflow.client.WorkflowServiceClientContext.createInitialContext(WorkflowServiceClientContext.java:686)
            at oracle.bpel.services.workflow.client.WorkflowServiceClientContext.getJNDIInitialContext(WorkflowServiceClientContext.java:341)
            at oracle.bpm.client.BPMServiceClientContext.getJNDIInitialContext(BPMServiceClientContext.java:228)
            at oracle.bpm.client.BPMServiceClientFactory.getBPMUserAuthenticationService(BPMServiceClientFactory.java:243)
            ... 3 more
    Thanks
    Sameer

  • BPM API's to Update Protected Flexfield on Task

    I have a question regarding Protected Flexfields on Tasks.
    We are using Proected Flexfields on Tasks that we create in the Worklist.
    So for example you create a New Human Task and as part of the Task Payload we have the Surname populated into Protected Text Flexfield1.
    We have a View created that views these Tasks, When you view that Task in the Worklist View it shows the Surname (eg. "Smith")  in the View.
    However if the Surname gets updated in the Database to "Jones" then the Task View still shows "Smith" as the Task has not been recreated and therefore the Task Payload still has "Smith" defined.
    My question is, are there any BPM API's available for us to update the Task so that the Protected Text Flexfield1 gets the new Value of "Jones"?
    I can see the Task in the WFTASK table in SOA_INFRA but wasn't sure if there were any public API's available to update the column.
    I don't really want to complete the Task and recreate it again as all the Task SLA's would get messed up. 
    Interested to here any thoughts on this.
    Regards

    Shruti
    You may check this link if it helps
    http://www.oraclebusinessapps.com/?p=42
    Please refer http:\\irep.oracle.com for more details
    Thanks
    AJ

  • BPM 11g: problem initiate task from API

    Hi all,
    First of all, i have deployed a BPM process and his initiator task is a human task implementation. Then the user can click on it in teh workspace and they are redirect to my J2EE aplication, in wich i want throw a new instance of my process when the user complete the form data.
    I'm do know how to implement it, and i trying two ways:
    one: initiate a process instance with oracle.bpm.service. package the the server give me this error:
    http://kr.forums.oracle.com/forums/thread.jspa?messageID=9244238
    java.io.InvalidClassException: oracle.bpel.services.workflow.verification.impl.WorkflowContext; local class incompatible: stream classdesc serialVersionUID = 3642712178109525089, local class serialVersionUID = 1
    two: initiate a new task programmatically, is it wright? a new task of my human initiator task from java is that i need for create a BPM Process? i don't know, becouse i get this other error:
    http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/bp_worklistcust.htm#CIHEAFBB
    WSM-09004 Component auditing cannot be initialized
    any ideas? thank you very much in advance, and sorry for my poor english.

    I hope you have got the solution for this problem.
    will you please share the solution. as I am also facing the same...
    Thanks

  • BPM API fetching Tasks (7.3)

    Hi All,
    based on this documentation: http://help.sap.com/saphelp_nw73/helpdata/en/79/d505324ef8429489979e43b76b56a9/content.htm i tried to fetch all active tasks for the currently logged in user, but the result is always a empty list. I found the following thread which is nearly facing the same problem: UWL api doesn't seem to see items ,but i dont know how to configure the system alias or if its even the fault of the alias.
    Are there any other important steps to execute for using the new BPM API? What could be missing in the configuration?
    Best Regards
    Michael

    Hi,
    at the moment my web.xml looks like this (based on http://www.urz.uni-heidelberg.de/saphelp/helpdata/DE/34/96c041a2236a24e10000000a1550b0/frameset.htm):
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">
         <display-name>LocalDevelopment~d253_test_web~demo.sap.com</display-name>
         <welcome-file-list>
              <welcome-file>index.html</welcome-file>
              <welcome-file>index.htm</welcome-file>
              <welcome-file>index.jsp</welcome-file>
              <welcome-file>default.html</welcome-file>
              <welcome-file>default.htm</welcome-file>
              <welcome-file>default.jsp</welcome-file>
         </welcome-file-list>
         <security-constraint>
              <web-resource-collection>
                   <web-resource-name>Protected Area</web-resource-name>
                   <url-pattern>/*</url-pattern>
              </web-resource-collection>
              <auth-constraint>
                   <role-name>bdadmin</role-name>
                   <role-name>SAP_BPM_SuperAdmin</role-name>
                   <role-name>administrators</role-name>
              </auth-constraint>
         </security-constraint>
         <login-config>
              <auth-method>BASIC</auth-method>
         </login-config>
         <security-role>
            <role-name>bdadmin</role-name>
        </security-role>
    </web-app>
    and my web-j2ee-engine.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-j2ee-engine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="web-j2ee-engine.xsd">
         <spec-version>2.4</spec-version>
         <security-role-map>
              <role-name>bdadmin</role-name>
              <server-role-name>SAP_BPM_SuperAdmin</server-role-name>
              <server-role-name>administrators</server-role-name>
         </security-role-map>
         <login-module-configuration>
              <login-module-stack>
                   <login-module>
                        <login-module-name>BasicPasswordLoginModule</login-module-name>
                        <flag>SUFFICIENT</flag>
                   </login-module>
              </login-module-stack>
         </login-module-configuration>
    </web-j2ee-engine>
    If i call my index.jsp i get a little popup window where i can put my username and password in, but then it gets stuck. The http-request is loading endless and on serverside the responsible thread got a infinite loop - resulting in a server restart.
    Can someone provide me a working example of these xml files?

  • Does BPM API support XA transaction ? and how to control

    A customer want to use ADF AM to update database and use BPM API to create todo task.
    The BPM API is ToDoTask() on oracle.bpel.services.workflow.task.ITaskService.
    If the BPM API support XA transaction:
    1.can ADF taskflow support AM and BPM mixed transaction ?
    2.can Java code control the XA transaction,not in taskflow ?

    this can be achieved by using
         <config-property name="TransactionIsolation" type="int">2</config-property>

  • BPM 11g: JAVA API and Webservice API

    Who knows BPM 11g: JAVA API and Webservice API?
    Customer want to call BPM 11g between Heterogeneous systems, such .net framework. One way is use webservice API, I think, but where can find it? thank you

    When you create a BPM application in 11g, you're actually creating a SOA composite application with a BPMN component in the composite. From within the BPMN editor, you can specify the interface (parameters) of each start node in the process. If you select a start node, look at the implementation tab, you'll see a properties group that lets you define the interface one property at a time, or by selecting an interface from the catalog.
    By defining these properties you're also defining the shape of the Web Service interface that will automatically be created in the composite. If you switch to the composite view, you'll see your BPMN process with a wire to it from a Web Service that's generated from the interface defined in the BPMN editor. The naming convention is the BPMN process name with ".service" appended. When you deploy the BPMN process, the web service will also be deployed, since it's also part of the composite. From Enterprise Manager (EM) you can test the service and get the WSDL, which could be used by other applications (e.g. .NET) to start and interact with a process instance.
    This is one of the advantages of the 11g architecture. The composite exposes services to consumers/clients. The implementation could have been BPEL, BPMN, a Mediator, Java/EJBs, or any combination working together. To the consumer, it's just a web service.
    In case your next question was about security ... you won't see properties about security in the BPMN editor. You use Web Service Manager to apply security or other constraints to the web service endpoint.

  • How to access Task details using BPM API for substituting user

    Hi Expert,
    I need one help, we have a requirement, in which I wanted to access the BPM task details of a user which is substituting user using BPM API.
    Substituting user's name is not exist in Potential owner of Task. That’s why Using method "getMyTaskAbstracts(Status)" we cant acess those task which assigned by Substited user.
    Kindly let me know if there is any way, we can get task details of the task which assigned by substituted user to substituting user.
    Regards
    Div

    Pl use this api.
    getTaskAbstractsForMySubstitutedUsers.There are couple of variations u can use.
    Thanks
    Manish

  • Getting completed process details using BPM API

    Hi Experts,
    is there any way to get the completed process details using BPM API or Analytics API for a specific process definition (in 7.31 SP10)?
    my observations:
    1. using getRunningProcessInstances(process_def_id) of ProcessInstanceManager, I can fetch running process instances.
    but I need completed process instances.
    Thanks in advance.
    Best Regards
    -Trim

    seems no way

  • BPM java api which accept task by push machniasm

    Hi All,
    I want to expose web service , which will get task from bpm. I can pull task from bpm for loggedin user, is there any way bpm will push task to this service ? Any api available ?

    Hi Arvind,
    If you are looking for code to get the current logged in user all the task just like in the Uwl or bpm inbox then it is possible.
    Kindly refer to the document link provided below.
    How to get All Task of a user to design your custom UWL using BPM API as a rest full service.
    Refer to Step 5 in the document you will find the code you are looking for.
    Cheers
    Piyas

  • REST API to get and update Task Data

    On CPSC 9.4.1 R2, I am unable to find any REST API operation to get and update task data details (all the service form and dictionary fields).
    Task operations only return limited task meta-data not the details of the task/requisition data submitted, fields, etc.
    Does anyone know if such thing exist?
    Thanks.

    Hi Rakesh,
    To enable anonymous Search REST queries, we need to create queryparametertemplate.xml and upload it to the correct library in SharePoint.
    From your description I can know that you have created the file, then I recommend to check the things below:
    Please use “QueryTemplatePropertiesUrl” instead of “queryparametertemplate” in the Search REST API query as following: &QueryTemplatePropertiesUrl='spfile://webroot/queryparametertemplate.xml'.
    Make sure that the Query Properties you need have been added to the QueryProperties element in the queryparametertemplate.xml file.
    Make sure that the query parameters you need have been added to the WhiteList element in the
    queryparametertemplate.xml file. For example, if you want to use Refiners in the REST API, then the Refiners should be added to the
    WhiteList element in the queryparametertemplate.xml file as following:
    <a:string>Refiners</a:string>.
    You can also debug setting properties in anonymous Search Rest queries following the link below:
    http://www.mavention.com/blog/debugging-setting-properties-anonymous-search-rest-queries
    More references about anonymous Search REST:
    http://blog.mastykarz.nl/configuring-sharepoint-2013-search-rest-api-anonymous-users/
    http://msdn.microsoft.com/en-us/library/office/jj163876%28v=office.15%29.aspx#bk_AnonymousREST
    Thanks,
    Victoria
    Forum Support
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
    [email protected]
    Victoria Xia
    TechNet Community Support

Maybe you are looking for