08-18-2017 03:02 AM
Hi, please help.
I searched information in the Internet but no success. I have the following challenge.
How I can get a list of workflows relating to a user by simple JavaScript script (which we plan to use as rule in future). If possible please provide a full source code.
I know how to get a list of workflows by RESTful:
http://localhost:8080/alfresco/service/api/workflow-instances
but I do not know how we can call it from simple JavaScript ?!
I tried to use "remote" object in JavaScript Console (by Florian Maul) but system reported the "remote is not defined":
var url = "http://localhost:8080/alfresco/service/api/workflow-instances";
var json = remote.call(url);
I also know how to get a workflow relating to some file(s) but that's not what I'm looking for:
var docNodeRef = "workspace://SpacesStore/c86cbdb5-6bbc-4a30-8c8d-be610bee4a63";
var theDocument = search.findNode(docNodeRef);for each(wf in theDocument.activeWorkflows)
{
logger.log(wf.);
}
So I need to get a list of all workflows relating to a some user by simple JavaScript script from user session. We plan to place this script file in "Repository -> Data Dictionary -> Scripts" and use it in Alfresco' Rule.
Thank you very much in advance for any help!
Best regards,
Egor
08-18-2017 07:36 AM
I don't know this is exactly which you are looking. but I have worked on workflow in javascript. So putting some snippet.
You can try few.
var wf = workflow.getAssignedTasks();
for (var w = 0; w < wf.length; w++) {
a = "activiti$" + wf[w].properties["bpm:taskId"];
if (a == activitiId) {
var workflowUsers = wf[w].properties["xxx:relatedUsers"].split(',');
if (workflowUsers.indexOf(user.properties.userName) > -1)
{
activiti = true;
}
}
}
others:
var task = workflow.getTask(activitiId);
08-18-2017 07:36 AM
I don't know this is exactly which you are looking. but I have worked on workflow in javascript. So putting some snippet.
You can try few.
var wf = workflow.getAssignedTasks();
for (var w = 0; w < wf.length; w++) {
a = "activiti$" + wf[w].properties["bpm:taskId"];
if (a == activitiId) {
var workflowUsers = wf[w].properties["xxx:relatedUsers"].split(',');
if (workflowUsers.indexOf(user.properties.userName) > -1)
{
activiti = true;
}
}
}
others:
var task = workflow.getTask(activitiId);
08-18-2017 07:56 AM
Hi Ratik!
Yes this seems what I'm looking for. Let me ask two questions:
1. Where I can find a descriptions of a workflow object which used in your example ?
2. Where I can find a description of all wf[w].properties["?"] ?
Thanks a lot !
Best regards,
Egor
08-18-2017 08:21 AM
Hi Egor,
You can find few APIs here and also get some idea by using core APIs.
You can check context object here.
few example:
workflowUsers.indexOf(users.properties.userName),
model.users.push(users.properties.userName),
wf[w].properties["bpm:description"];
workflow.parameters.workflowName = "";
workflow.parameters["bpm:workflowDescription"] = "";
workflow.parameters["abc:workflowRelatedUsers"] = "";
workflow.parameters["bpm:assignee"] = "";
workflow.parameters["bpm:workflowDueDate"] = "";;
08-18-2017 08:23 AM
08-18-2017 08:37 AM
Dear Ratik,
the list of Root Objects listed by the link - Surf root-scoped objectsdo not contains a reference on workflow object, why ?!
JYI
We are using Alfresco Community 5.1
Thanks a lot !
Best regards,
Egor
08-18-2017 08:55 AM
08-18-2017 09:04 AM
Dear Ratik,
OK THANKS!
Best regards,
Egor
08-18-2017 08:33 AM
Dear Ratik,
You provide an information about how to get a list of tasks assigned on me (getAssignedTasks():smileywink: but could you provide also an example about - how we can get a list of tasks which a user assign to others ?
Many thanks!
Best regards,
Egor
08-18-2017 08:42 AM
var members = people.getMembers(people.getGroup("GROUP_Workers"));
var assignedTasks = workflow.getAssignedTasks();
var name = members.properties["cm:userName"];
You can find the desire result by using these 3 lines. Hope it will work.
Explore our Alfresco products with the links below. Use labels to filter content by product module.