As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
workflow-context.xml.sample
config/alfresco/extension
So there is no way, out of the box, to assign a task to a group or a pool of actors if I understand well. If I want this I have to write it. Is that right ?
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wfag:adhocgroup"> <swimlane name="initiator"/> <start-state name="start"> <task name="wfag:submitAdhocGroupTask" swimlane="initiator"/> <transition name="" to="adhoc"/> </start-state> <swimlane name="assignee"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{bpm_groupAssignee}</pooledactors> </assignment> </swimlane> <task-node name="adhoc"> <task name="wf:adhocTask" swimlane="assignee"> <event type="task-create"> <script> if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate; if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority; </script> </event> <event type="task-end"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="bpm_assignee" access="write"/> <expression> if (taskInstance.actorId == undefined) person; else people.getPerson(taskInstance.actorId); </expression> </script> </action> </event> </task> <transition name="" to="completed"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> if (wfag_notifyMe) { var mail = actions.create("mail"); mail.parameters.to = initiator.properties.email; mail.parameters.subject = "Adhoc Task " + bpm_workflowDescription; mail.parameters.from = bpm_assignee.properties.email; mail.parameters.text = "It's done"; mail.execute(bpm_package); } </script> </action> </transition> </task-node> <task-node name="completed"> <task name="wf:completedAdhocTask" swimlane="initiator"/> <transition name="" to="end"/> </task-node> <end-state name="end"/> </process-definition>
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'> <beans> <bean id="adhoc.group.workflowBootstrap" parent="workflowDeployer"> <property name="workflowDefinitions"> <list> <props> <prop key="engineId">jbpm</prop> <prop key="location">alfresco/extension/adhocgroup_processdefinition.xml</prop> <prop key="mimetype">text/xml</prop> <prop key="redeploy">false</prop> </props> </list> </property> <property name="models"> <list> <value>alfresco/extension/adhocgroupModel.xml</value> </list> </property> <property name="labels"> <list> <value>alfresco/extension/adhocgroup-messages</value> </list> </property> </bean> </beans>
# # Adhoc Task Workflow # wfag_adhocgroup.workflow.title=Adhoc Group Task wfag_adhocgroup.workflow.description=Assign task to a pooled group # Adhoc Task Definitions wfag_adhocgroupworkflowmodel.type.wfag_submitAdhocGroupTask.title=Start Adhoc Group Task wfag_adhocgroupworkflowmodel.type.wfag_submitAdhocGroupTask.description=Allocate task to a pooled group wfag_adhocgroupworkflowmodel.property.wfag_notifyMe.title=Notify Me wfag_adhocgroupworkflowmodel.property.wfag_notifyMe.description=Notify me when task is complete
<?xml version="1.0" encoding="UTF-8"?> <model name="wfag:adhocgroupworkflowmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0"> <imports> <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/> <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/> </imports> <namespaces> <namespace uri="http://www.alfresco.org/model/adhocgroupworkflow/1.0" prefix="wfag"/> </namespaces> <types> <!– –> <!– Adhoc Group Tasks –> <!– –> <type name="wfag:submitAdhocGroupTask"> <parent>bpm:startTask</parent> <properties> <property name="wfag:notifyMe"> <type>d:boolean</type> <default>false</default> </property> </properties> <mandatory-aspects> <aspect>bpm:groupAssignee</aspect> </mandatory-aspects> </type> </types> </model>
<alfresco-config> <config evaluator="node-type" condition="wfag:submitAdhocGroupTask" replace="true"> <property-sheet> <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" /> <show-property name="bpm:workflowDescription" component-generator="TextAreaGenerator" /> <show-property name="bpm:workflowPriority" display-label-id="wf_adhoc_priority" /> <show-property name="bpm:workflowDueDate" display-label-id="wf_adhoc_due_date" /> <show-property name="wfag:notifyMe" /> <separator name="sep2" display-label-id="user_filter_user" component-generator="HeaderSeparatorGenerator" /> <show-association name="bpm:groupAssignee" display-label-id="wf_adhoc_assign_to" /> </property-sheet> </config> </alfresco-config>
If that's the process you require, then that's the process. Alfresco allows you to define your own processes, so I took the out-of-the-box adhoc process and converted it to a pooled adhoc process.Create the following files in your config/alfresco/extension directory:1) adhocgroup_processdefinition.xml<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wfag:adhocgroup"> <swimlane name="initiator"/> <start-state name="start"> <task name="wfag:submitAdhocGroupTask" swimlane="initiator"/> <transition name="" to="adhoc"/> </start-state> <swimlane name="assignee"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{bpm_groupAssignee}</pooledactors> </assignment> </swimlane> <task-node name="adhoc"> <task name="wf:adhocTask" swimlane="assignee"> <event type="task-create"> <script> if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate; if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority; </script> </event> <event type="task-end"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="bpm_assignee" access="write"/> <expression> if (taskInstance.actorId == undefined) person; else people.getPerson(taskInstance.actorId); </expression> </script> </action> </event> </task> <transition name="" to="completed"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> if (wfag_notifyMe) { var mail = actions.create("mail"); mail.parameters.to = initiator.properties.email; mail.parameters.subject = "Adhoc Task " + bpm_workflowDescription; mail.parameters.from = bpm_assignee.properties.email; mail.parameters.text = "It's done"; mail.execute(bpm_package); } </script> </action> </transition> </task-node> <task-node name="completed"> <task name="wf:completedAdhocTask" swimlane="initiator"/> <transition name="" to="end"/> </task-node> <end-state name="end"/> </process-definition>2) adhocgroup-context.xml<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'> <beans> <bean id="adhoc.group.workflowBootstrap" parent="workflowDeployer"> <property name="workflowDefinitions"> <list> <props> <prop key="engineId">jbpm</prop> <prop key="location">alfresco/extension/adhocgroup_processdefinition.xml</prop> <prop key="mimetype">text/xml</prop> <prop key="redeploy">false</prop> </props> </list> </property> <property name="models"> <list> <value>alfresco/extension/adhocgroupModel.xml</value> </list> </property> <property name="labels"> <list> <value>alfresco/extension/adhocgroup-messages</value> </list> </property> </bean> </beans>3) adhocgroup-messages.properties# # Adhoc Task Workflow # wfag_adhocgroup.workflow.title=Adhoc Group Task wfag_adhocgroup.workflow.description=Assign task to a pooled group # Adhoc Task Definitions wfag_adhocgroupworkflowmodel.type.wfag_submitAdhocGroupTask.title=Start Adhoc Group Task wfag_adhocgroupworkflowmodel.type.wfag_submitAdhocGroupTask.description=Allocate task to a pooled group wfag_adhocgroupworkflowmodel.property.wfag_notifyMe.title=Notify Me wfag_adhocgroupworkflowmodel.property.wfag_notifyMe.description=Notify me when task is complete4) adhocgroupModel.xml<?xml version="1.0" encoding="UTF-8"?> <model name="wfag:adhocgroupworkflowmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0"> <imports> <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/> <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/> </imports> <namespaces> <namespace uri="http://www.alfresco.org/model/adhocgroupworkflow/1.0" prefix="wfag"/> </namespaces> <types> <!– –> <!– Adhoc Group Tasks –> <!– –> <type name="wfag:submitAdhocGroupTask"> <parent>bpm:startTask</parent> <properties> <property name="wfag:notifyMe"> <type>d:boolean</type> <default>false</default> </property> </properties> <mandatory-aspects> <aspect>bpm:groupAssignee</aspect> </mandatory-aspects> </type> </types> </model>5) web-client-config-custom.xml<alfresco-config> <config evaluator="node-type" condition="wfag:submitAdhocGroupTask" replace="true"> <property-sheet> <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" /> <show-property name="bpm:workflowDescription" component-generator="TextAreaGenerator" /> <show-property name="bpm:workflowPriority" display-label-id="wf_adhoc_priority" /> <show-property name="bpm:workflowDueDate" display-label-id="wf_adhoc_due_date" /> <show-property name="wfag:notifyMe" /> <separator name="sep2" display-label-id="user_filter_user" component-generator="HeaderSeparatorGenerator" /> <show-association name="bpm:groupAssignee" display-label-id="wf_adhoc_assign_to" /> </property-sheet> </config> </alfresco-config>
<variable name="bpm_assignee" access="write"/> <expression> if (taskInstance.actorId == undefined) person; else people.getPerson(taskInstance.actorId); </expression>