cancel
Showing results for 
Search instead for 
Did you mean: 

Complete workflow task through REST API

mgillian_
Champ in-the-making
Champ in-the-making

I have seen multiple references on how to programmatically complete a task, such as using Workflow.CompleteTaskOperation. However, I can't seem to find the correct REST call. Here's the REST endpoint that I am attempting to use:

curl -X POST -u meddev1:password --header "Content-Type:application/json+nxrequest"
/> -H 'X-NXDocumentProperties:*'
/> -d "{"input":"doc:/default-domain/workspaces/Math Workspace/$mediaId/$mediaItemId", "params": {"id":"Done"} }"
/> $root/automation/Workflow.CompleteTaskOperation

where $mediaId is a documents name, and $mediaItemId is a child document. The child document is in a workflow, and I want to mark it complete. "id" is the name of the workflow transition that I wish to execute, and meddev1:password is the user that is currently assigned the task.

After the above call, I get this error message:

org.nuxeo.ecm.core.api.ClientException: User with id 'meddev1' cannot end this task

I believe that this is failing in TaskServiceImpl.endTask

I'm assuming that I have not correctly specified the document, because Workflow.CompleteTaskOperation is looking for a TaskDocument. How do I retrieve the task document?

curl -X GET -u Administrator:Administrator --header "Content-Type:application/json+nxrequest"
/> -d "{}"
/> $root/api/path/default-domain/workspaces/$workspace/$mediaId/$mediaItemId/@children
/> | python -m json.tool

The above command does not return any child documents.

2 REPLIES 2

ThibArg_
Star Contributor
Star Contributor

Hi,

You are right: CompleteTaskOperation expects a Task Document, while here it receives a "regular" document in input. I think there is a way to get the TaskDoc related to the current document: Context.GetOpenTasks operation returns a list of the open taks on current document. Here is what I did in a quick test, which worked in an automation chain:

Fetch > Context Document(s)
Workflow Context > Get open tasks
   (no parameters)
Workflow Context > Complete tast
    status: approved (in my test, it is the transition I want to use)

This is not a REST example, but maybe it can help.

Thibaud

mgillian_
Champ in-the-making
Champ in-the-making

I just confirmed that your workflow suggestion worked for me. I created an Automation Chain of the above steps and executed that chain via this REST call:

curl -X POST -u meddev1:password --header "Content-Type:application/json+nxrequest"
/> -d "{"input":"doc:/default-domain/workspaces/Math Workspace/$mediaId/$mediaItemId", "params": {"id":"glac_taskDone"} }"
/> $root/automation/Context.RunOperation
/> | python -m json.tool

In addition, because my workflow transition also calls an automation chain, I verified that chain successfully executed as well. Thanks!

Getting started

Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.