10-28-2013 12:33 AM
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.
10-29-2013 03:45 PM
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
10-30-2013 04:28 PM
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!
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.