12-12-2011 03:13 AM
<?xml version="1.0" encoding="UTF-8"?>
<!–
Filename: InboundWF-WorkflowModel.xml Description: This file describes
the model for the InboundWF Workflow Author: mahmoud abukhaled
–>
<!– Definition of new Model –>
<model name="InboundWF:CS-OutboundWFworkflowmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description>InboundWF Custom Model</description>
<author>Mahmoud Abukhaled</author>
<version>1.0</version>
<!–
Imports are required to allow references to definitions in other
models
–>
<imports>
<!– Import Alfresco Dictionary Definitions –>
<import uri="http://www.alfresco.org/model/dictionary/1.0"
prefix="d" />
<!– Import Alfresco Content Domain Model Definitions –>
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm" />
<import uri="http://www.alfresco.org/model/system/1.0" prefix="sys" />
<import uri="http://www.hulool.com/workflow/model/1.0" prefix="CSMersalWF" />
<import uri="http://www.ds.alfresco.security.extension.com"
prefix="sec" />
</imports>
<!– Introduction of new namespaces defined by this model –>
<namespaces>
<namespace uri="http://www.hulool.com/workflow/inbound/model/1.0"
prefix="InboundWF" />
</namespaces>
<types>
<type name="InboundWF:StartInbound">
<parent>bpm:startTask</parent>
</type>
<type name="InboundWF:CreateNewInbound">
<parent>bpm:workflowTask</parent>
<properties>
<property name="InboundWF:ApplicationNumber">
<type>d:int</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:ExternalWaredApplicationNumber">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:ApplicationType">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
<constraints>
<constraint ref="sec:applicationTypeValue" />
</constraints>
</property>
<property name="InboundWF:Category">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:Subject"><!–tittle –>
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:Confidentiality">
<type>d:boolean</type>
<mandatory>false</mandatory>
<default>false</default>
</property>
<property name="InboundWF:Sealed">
<type>d:boolean</type>
<mandatory>false</mandatory>
<default>false</default>
</property>
<property name="InboundWF:Priority">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
<constraints>
<constraint ref="sec:applicationPriorityValue" />
</constraints>
</property>
<property name="InboundWF:DataEntryOperatorEntity">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:DataEntryOperator">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:DeliveryWay">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
<constraints>
<constraint ref="sec:deliveryWayValue" />
</constraints>
</property>
<property name="InboundWF:Sender">
<title>Send To Direction</title>
<type>d:text</type>
<mandatory enforced="true">false</mandatory>
<multiple>false</multiple>
<constraints>
<constraint ref="sec:contactValue" />
</constraints>
</property>
<!–sentto–>
<property name="InboundWF:ActionTemplate">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
<constraints>
<constraint ref="sec:actionTemplateValue" />
</constraints>
</property>
</properties>
<mandatory-aspects>
<aspect>CSMersalWF:CSMersal</aspect>
<aspect>InboundWF:SentToAssignee</aspect>
</mandatory-aspects>
</type>
<type name="InboundWF:NewInbound">
<parent>InboundWF:CreateNewInbound</parent>
<properties>
<property name="InboundWF:reviewOutcomeRouting">
<type>d:text</type>
<default>Save</default>
<constraints>
<constraint type="LIST">
<parameter name="allowedValues">
<!–
TODO: Determine if priority values can be mapped to
human-readable strings
–>
<list>
<value>Routing</value>
<value>Save</value>
<value>SendBack</value>
</list>
</parameter>
</constraint>
</constraints>
</property>
</properties>
<overrides>
<property name="bpm:packageItemActionGroup">
<default>edit_package_item_actions</default>
</property>
<property name="bpm:outcomePropertyName">
<default>{http://www.alfresco.org/model/workflow/1.0}reviewOutcome
</default>
</property>
</overrides>
<mandatory-aspects>
<aspect>CSMersalWF:CSMersal</aspect>
<aspect>InboundWF:AssigneesVariables</aspect>
<aspect>InboundWF:SentToAssignee</aspect>
</mandatory-aspects>
</type>
<type name="InboundWF:Routing">
<parent>InboundWF:CreateNewInbound</parent>
<properties>
<!– Route to –>
<property name="InboundWF:RoutineAction">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
<constraints>
<constraint ref="sec:routingActionValue" />
</constraints>
</property>
<!– Copy to –>
<property name="InboundWF:RoutingDate">
<type>d:date</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:StudyingPeriod">
<type>d:int</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
</properties>
<mandatory-aspects>
<aspect>InboundWF:AssigneesVariables</aspect>
<aspect>InboundWF:RouteToAssignee</aspect>
<aspect>InboundWF:CopyToAssignee</aspect>
</mandatory-aspects>
</type>
<type name="InboundWF:CopyTo">
<parent>InboundWF:CreateNewInbound</parent>
<mandatory-aspects>
<aspect>CSMersalWF:CSMersal</aspect>
<aspect>InboundWF:AssigneesVariables</aspect>
<aspect>InboundWF:CopyToAssignee</aspect>
</mandatory-aspects>
</type>
</types>
<aspects>
<aspect name="InboundWF:SentToAssignee">
<associations>
<association name="InboundWF:SentToAssignee">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>true</mandatory>
<many>false</many>
</target>
</association>
</associations>
</aspect>
<aspect name="InboundWF:RouteToAssignee">
<associations>
<association name="InboundWF:RouteToAssignee">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>true</mandatory>
<many>false</many>
</target>
</association>
</associations>
</aspect>
<aspect name="InboundWF:CopyToAssignee">
<associations>
<association name="InboundWF:CopyToAssignee">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="InboundWF:AssigneesVariables">
<title> Inbound Assignees Variables</title>
<properties>
<property name="InboundWF:PreviousAssignee">
<type>d:noderef</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
<property name="InboundWF:CurrentAssignee">
<type>d:noderef</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
</aspect>
</aspects>
</model>
process-definition
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<process id="CS-Inbound-WFPD" name="CS-Inbound-WFPD">
<extensionElements>
<activiti:executionListener event="start"
class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
<activiti:field name="script">
<activiti:string>
<!–
Application Statuses: 00 <-> draft 100 <-> new 200 <-> saved 300
<-> routed 400 <-> sentback
–>
execution.setVariable('CSMersalWF_AppStatus','00');
</activiti:string>
</activiti:field>
</activiti:executionListener>
</extensionElements>
<startEvent id="StartInbound" name="StartInbound"
activiti:formKey="InboundWF:StartInbound">
</startEvent>
<sequenceFlow id="flow1" sourceRef="StartInbound"
targetRef="Inbound-CreateNewInbound">
</sequenceFlow>
<userTask id="Inbound-CreateNewInbound" name="CreateNewInbound"
activiti:assignee="${initiator.properties.userName}"
activiti:formKey="InboundWF:CreateNewInbound">
<extensionElements>
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setCreatorInfo(task,initiator,execution)}" />
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setReceivingDate(task)}" />
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setOwnership(task,initiator)}" />
<activiti:taskListener event="complete"
class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
execution.setVariable('InboundWF_SentToAssignee',
task.getVariable('InboundWF_SentToAssignee'));
execution.setVariable('InboundWF_ApplicationNumber',task.getVariable('InboundWF_ApplicationNumber'));
execution.setVariable('InboundWF_ExternalWaredApplicationNumber',task.getVariable('InboundWF_ExternalWaredApplicationNumber'));
execution.setVariable('InboundWF_ApplicationType',task.getVariable('InboundWF_ApplicationType'));
execution.setVariable('InboundWF_Category',task.getVariable('InboundWF_Category'));
execution.setVariable('InboundWF_Subject',task.getVariable('InboundWF_Subject'));
execution.setVariable('InboundWF_Confidentiality',task.getVariable('InboundWF_Confidentiality'));
execution.setVariable('InboundWF_Sealed',task.getVariable('InboundWF_Sealed'));
execution.setVariable('InboundWF_Priority',task.getVariable('InboundWF_Priority'));
execution.setVariable('InboundWF_DeliveryWay',task.getVariable('InboundWF_DeliveryWay'));
execution.setVariable('InboundWF_Sender',task.getVariable('InboundWF_Sender'));
execution.setVariable('InboundWF_ActionTemplate',task.getVariable('InboundWF_Sender'));
execution.setVariable('InboundWF_task_id','activiti$'+execution.getId());
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>
<sequenceFlow id="assignApplicationIdFlow" sourceRef="Inbound-CreateNewInbound"
targetRef="assignApplicationId">
</sequenceFlow>
<serviceTask id="assignApplicationId" name="Assign Application Id"
activiti:expression="${sequenceUtil.getInboundId(execution.getVariable('InboundWF_task_id'))}"
activiti:resultVariable="InboundWF_ApplicationNumber" />
<sequenceFlow id="flow2" sourceRef="assignApplicationId"
targetRef="Inbound-NewInbound">
<extensionElements>
<activiti:executionListener event="take"
class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
<activiti:field name="script">
<activiti:string>
execution.setVariable('InboundWF_CurrentAssignee',InboundWF_SentToAssignee);
execution.setVariable('InboundWF_PreviousAssignee',initiator);
<!–
Application Statuses: 00 <-> draft 100 <-> new 200 <-> saved 300
<-> routed 400 <-> sentback
–>
execution.setVariable('CSMersalWF_AppStatus','100');
</activiti:string>
</activiti:field>
</activiti:executionListener>
</extensionElements>
</sequenceFlow>
<userTask id="Inbound-NewInbound" name="NewInbound"
activiti:formKey="InboundWF:NewInbound" activiti:assignee="${InboundWF_CurrentAssignee.properties.userName}">
<extensionElements>
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setReceivingDate(task)}" />
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setOwnership(task,InboundWF_CurrentAssignee)}" />
<activiti:taskListener event="complete"
class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
execution.setVariable('InboundWF_reviewOutcomeRouting',task.getVariableLocal('InboundWF_reviewOutcomeRouting'));
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>
<sequenceFlow id="flow3" sourceRef="Inbound-NewInbound"
targetRef="Inbound-RoutingExclusiveGateway">
</sequenceFlow>
<exclusiveGateway id="Inbound-RoutingExclusiveGateway"
name="Routnig Exclusive Gateway">
</exclusiveGateway>
<sequenceFlow id="flow4" name="Save"
sourceRef="Inbound-RoutingExclusiveGateway" targetRef="EndParallelGateway">
<extensionElements>
<activiti:executionListener event="take"
class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
<activiti:field name="script">
<activiti:string>
<!–
Application Statuses: 00 <-> draft 100 <-> new 200 <-> saved 300
<-> routed 400 <-> sentback
–>
execution.setVariable('CSMersalWF_AppStatus','200');
</activiti:string>
</activiti:field>
</activiti:executionListener>
</extensionElements>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${InboundWF_reviewOutcomeRouting == 'Save'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow5" name="SendBack"
sourceRef="Inbound-RoutingExclusiveGateway" targetRef="Inbound-NewInbound">
<extensionElements>
<activiti:executionListener event="take"
class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
<activiti:field name="script">
<activiti:string>
var tempAssignee=InboundWF_CurrentAssignee;
execution.setVariable('InboundWF_CurrentAssignee',InboundWF_PreviousAssignee);
execution.setVariable('InboundWF_PreviousAssignee',tempAssignee);
<!–
Application Statuses: 00 <-> draft 100 <-> new 200 <-> saved 300
<-> routed 400 <-> sentback
–>
execution.setVariable('CSMersalWF_AppStatus','400');
</activiti:string>
</activiti:field>
</activiti:executionListener>
</extensionElements>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${InboundWF_reviewOutcomeRouting == 'SendBack'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow6" name="Routing"
sourceRef="Inbound-RoutingExclusiveGateway" targetRef="Inbound-Routing">
<extensionElements>
<activiti:executionListener event="take"
class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
<activiti:field name="script">
<activiti:string>
<!–
Application Statuses: 00 <-> draft 100 <-> new 200 <-> saved 300
<-> routed 400 <-> sentback
–>
execution.setVariable('CSMersalWF_AppStatus','300');
</activiti:string>
</activiti:field>
</activiti:executionListener>
</extensionElements>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${InboundWF_reviewOutcomeRouting == 'Routing'}]]></conditionExpression>
</sequenceFlow>
<userTask id="Inbound-Routing" name="Routing"
activiti:assignee="${InboundWF_CurrentAssignee.properties.userName}"
activiti:formKey="InboundWF:Routing">
<extensionElements>
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setOwnership(task,InboundWF_CurrentAssignee)}" />
<activiti:taskListener event="complete"
expression="${inBoundTaskListener.checkCopyAssignee(execution)}" />
<activiti:taskListener event="complete"
class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
execution.setVariable('InboundWF_CopyToAssignee',
task.getVariable('InboundWF_CopyToAssignee'));
execution.setVariable('InboundWF_RouteToAssignee',
task.getVariable('InboundWF_RouteToAssignee'));
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>
<sequenceFlow id="flow7" sourceRef="Inbound-Routing"
targetRef="parallelgateway1">
</sequenceFlow>
<parallelGateway id="parallelgateway1" name="Parallel Gateway">
</parallelGateway>
<sequenceFlow id="flow9" name="RoutingTO" sourceRef="parallelgateway1"
targetRef="Inbound-NewInbound">
<extensionElements>
<activiti:executionListener event="take"
class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
<activiti:field name="script">
<activiti:string>
execution.setVariable('InboundWF_PreviousAssignee',InboundWF_CurrentAssignee);
execution.setVariable('InboundWF_CurrentAssignee',InboundWF_RouteToAssignee);
</activiti:string>
</activiti:field>
</activiti:executionListener>
</extensionElements>
</sequenceFlow>
<sequenceFlow id="flow8" name="CopyTo" sourceRef="parallelgateway1"
targetRef="Inbound-CopyTo">
</sequenceFlow>
<userTask id="Inbound-CopyTo" name="CopyTo" activiti:formKey="InboundWF:CopyTo"
activiti:assignee="${reviewAssignee.properties.userName}">
<extensionElements>
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setReceivingDate(task)}" />
<activiti:taskListener event="create"
expression="${inBoundTaskListener.setOwnership(task,reviewAssignee)}" />
<activiti:taskListener event="complete"
class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
execution.setVariable('InboundWF_reviewOutcomeCopyTo',
task.getVariableLocal('InboundWF_reviewOutcomeCopyTo'));
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
<!– For each assignee, task is created –>
<multiInstanceLoopCharacteristics
isSequential="false">
<loopDataInputRef >InboundWF_CopyToAssignee</loopDataInputRef>
<inputDataItem name="reviewAssignee" />
</multiInstanceLoopCharacteristics>
</userTask>
<sequenceFlow id="flow10" sourceRef="Inbound-CopyTo"
targetRef="EndParallelGateway">
</sequenceFlow>
<parallelGateway id="EndParallelGateway" name="End Parallel Gateway">
</parallelGateway>
<sequenceFlow id="flow11" sourceRef="EndParallelGateway"
targetRef="end">
</sequenceFlow>
<endEvent id="end" />
</process>
</definitions>
12-14-2011 08:42 AM
01-11-2012 08:40 AM
Tags
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.