Moving document without creating tasks
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2014 08:16 AM
I'm thinking about making an advanced workflow that directly moves a file from folder to folder without initiating any task.
I've tried deleting everything I think is related to task until my processdefinition.xml is left as such:
But when I call this workflow through js, it still runs as a task.
My question is, is it actually possible to use a workflow to do file movement without starting a task?
Thanks in advance!
I've tried deleting everything I think is related to task until my processdefinition.xml is left as such:
<?xml version="1.0" encoding="UTF-8"?><process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wfl:lifecycleapproval"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <!– Apply the Workflow Lifecycle Aspect (wfl:status) if not set already. Note: The default wfl:status property is draft –><runas>admin</runas> <script> var dest = companyhome.childByNamePath(bpm_moveDestination);for (var i = 0 ; i < bpm_package.children.length; i++){bpm_package.children.move(dest);} </script> </action> </process-definition>
But when I call this workflow through js, it still runs as a task.
My question is, is it actually possible to use a workflow to do file movement without starting a task?
Thanks in advance!
Labels:
- Labels:
-
Archive
4 REPLIES 4
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2014 09:49 AM
Have you tried creating a sequence flow between start and end and then adding your script as an execution listener on the sequence flow?
Jeff
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="endevent1"> <extensionElements> <activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener"> <activiti:field name="script"> <activiti:string><![CDATA[logger.log("Hello, World!");]]></activiti:string> </activiti:field> </activiti:executionListener> </extensionElements> </sequenceFlow>
Jeff
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-17-2014 01:01 AM
Hi Jeff,
I've tried that and the workflow still sends user a task, without moving the document.
My processdefinition is still the same,
Here is my current code for lifecycle-process.bpmn20.xml
and my js
I wonder if it is possible to have assignee to auto approve a task directly from the xml? So that the task is sent and completed at the same time..
I have another question, if I call "jbpm$wfl:lifecycleapproval" in js, it will refer to processdefinition.xml, and if I call "activiti$activitiLifecycleApproval" it refers to the bpmn20 file? Or both? I'm a bit confused after playing around with the files..
I've tried that and the workflow still sends user a task, without moving the document.
My processdefinition is still the same,
Here is my current code for lifecycle-process.bpmn20.xml
<?xml version="1.0" encoding="UTF-8" ?><definitions id="lifecycle-definitions" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://activiti.org/bpmn20" xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"> <process id="activitiLifecycleApproval" name="Activiti Lifecycle Process"> <extensionElements> <!– When process is deleted/cancelled, status should be set to draft –> <activiti:executionListener event="end" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener"> <activiti:field name="script"> </activiti:field> </activiti:executionListener> </extensionElements> <startEvent id="startE"/> <sequenceFlow id='flow1' sourceRef='startE' targetRef='end'> <extensionElements> <activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener"> <activiti:field name="script"> <activiti:string><runas>admin</runas> var dest = companyhome.childByNamePath(bpm_moveDestination);for (var i = 0 ; i < bpm_package.children.length; i++){bpm_package.children.move(dest);}</activiti:string> </activiti:field> </activiti:executionListener> </extensionElements> </sequenceFlow> <endEvent id="end" /> </process></definitions>
and my js
var workflow = actions.create("start-workflow");workflow.parameters.workflowName = "jbpm$wfl:lifecycleapproval";workflow.parameters["bpm:assignee"] = "us1";workflow.parameters["bpm:moveDestination"] = "Sites/ar-rahnu/documentLibrary/SEMAKAN";workflow.execute(document);
I wonder if it is possible to have assignee to auto approve a task directly from the xml? So that the task is sent and completed at the same time..
I have another question, if I call "jbpm$wfl:lifecycleapproval" in js, it will refer to processdefinition.xml, and if I call "activiti$activitiLifecycleApproval" it refers to the bpmn20 file? Or both? I'm a bit confused after playing around with the files..
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-17-2014 07:46 AM
You have made several mistakes:
1.Your workflow engine is activiti ,sou workflow name should be
2.It seems
3. also you should define runas like this
If you call "jbpm$wfl:lifecycleapproval" in js,it will only refer to a jbpm process defination who's id is "jbpm$wfl:lifecycleapproval"
A process name in alfresco includes two part ,the part before $ is engine name,the part after $ is process id you define in your process definition.
1.Your workflow engine is activiti ,sou workflow name should be
activiti$activitiLifecycleApproval
,you are using jbpm$wfl:lifecycleapproval
in your javascrit,so the above workflow might be not executed at all.2.It seems
</activiti:field>
in below code is no use (you didn't add javascript into it) .Please delete the whole session.,otherwise it might cause error <extensionElements> <!– When process is deleted/cancelled, status should be set to draft –> <activiti:executionListener event="end" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener"> <activiti:field name="script"> </activiti:field> </activiti:executionListener>
3. also you should define runas like this
<activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener"> <activiti:field name="runAs"><activiti:string>admin</activiti:string></activiti:field> <activiti:field name="script"> <activiti:string> var dest = companyhome.childByNamePath(bpm_moveDestination); for (var i = 0 ; i < bpm_package.children.length; i++){ bpm_package.children.move(dest); } </activiti:string> </activiti:field> </activiti:executionListener>
If you call "jbpm$wfl:lifecycleapproval" in js,it will only refer to a jbpm process defination who's id is "jbpm$wfl:lifecycleapproval"
A process name in alfresco includes two part ,the part before $ is engine name,the part after $ is process id you define in your process definition.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-23-2015 03:13 PM
Is it possible to execute the javascript code using "System" user?
I tried, and it says the user system doesn't exist.
I tried, and it says the user system doesn't exist.
