Quantcast
Channel: SCN : All Content - SAP Business Process Management
Viewing all articles
Browse latest Browse all 887

Complete a task: Build OutputData

$
0
0

Hi there,

 

 

I had the problem that I was not able to complete a BPM task, because I didn't manage to fill the task's OutputData structure of the BPM oData service correctly.

After having solved the issue, I'm writing my first blog to share my solution with you.

 

 

 

Let's imagine you have a task with the same complex input/output type called "HandleRequestType":

 

<complexType name="HandleRequestType">    <sequence>          <element name="Approver" type="tns:ApproverType" maxOccurs="1" minOccurs="1">          </element>          <element name="Request" type="tns:RequestType" maxOccurs="1" minOccurs="1">          </element>          <element name="Requester" type="tns:RequesterType" maxOccurs="1" minOccurs="1">          </element>          <element name="Status" type="tns:StatusType" maxOccurs="1" minOccurs="0">          </element>    </sequence></complexType>

 

 

As you can see it consists of a lot of complex subtypes like "RequestType" or "RequesterType".

 

Let's imagine that you only want to fill two fields of this data structure:

  1. Field "Action" in element "Status"
  2. Field "ReferenceNumber" in element "Request"

 

The coding is very easy, but it took me several hours to find out how it works.

Please have a look at the completeTask() method which builds OutputData and sends a POST request to the oData service.

 

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.Action = "Approved";    request.ReferenceNumber = "1234";    // 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");          });
}

 

 

Keep in mind that you can build up the OutputData data structure without any binding of InputData defined on your view!

It took me some time to figure that out.

 

 

Best regards,

Thorsten.

 

P.S.: Please note, that you have to unzip the attachment "WebContent.zip.txt.zip" and remove the .txt extension. Then you can extract the "WebContent" folder. It's a little bit weird, but that's what happens when you upload a "*.zip.txt" file...


Viewing all articles
Browse latest Browse all 887

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>