内部机密第1页/共6页19-8-31流程封装预置变量说明表1.参与人相关参与人相关的变量,用于辅助实现以下四种场景:1.基于权限配置对队列进行过滤,将任务分配给队列中的一个或多个人处理。实际使用时,可使用全开放式的队列,然后基于权限配置,设置队列中任务的实际可处理人。2.节点D必须是节点A的实际执行人处理。3.节点D不能由节点A的实际执行人处理。4.动态选人,支持设定选人范围。选人范围的设置支持使用sql,比如(本部门人员)或者基于权限配置。注(变量命名规范):框架用于控制的变量以“L_”开头。需要框架进行赋值的工作流组,使用“WFG_”开头。流程变量名称使用说明L_UserIds队列过滤工号列表当节点使用需要过滤的Queue时,需要将该变量作为Parameter,并在节点执行前赋空值(””)。流程框架会在新任务到达时,自动将根据流程变量的值取对应的权限,并取到具有这些权限的工号列表,并存入L_UserIds中。如果在节点执行前对该变量赋值,则流程框架不再做转换。如果该节点需要发送邮件或短信通知,则按照L_UserIds的值选取通知人。任务列表从需要过滤的Queue中取任务时,将按照L_UserIds的值做过滤。示例:000272;000125注:要使Queue具有过滤功能,需要:(1)需要过滤的Queue需要配置到PubSysCnfg中。(2)增加”L_UserIds”作为队列变量。(3)同时放在该节点的参数中。(4)将权限定义中涉及的流程变量放到节点的参数中。将L_StepName在节点执行前设成适当的类型。L_ExUserIds排除的工号列表用于“复核”类节点,需要将处理人排除在外。与L_StepParticipant配合使用。L_StepParticipant节点执行人每一个需要记录具体执行人的Activity节点,都需要将该变量作为Parameter。节点的任务实例提交后,流程框架会自动把处理人的工号放到该变量中。内部机密第2页/共6页19-8-31流程定义中,可以在节点执行后,将该变量的值赋给其他的变量保存起来,以便后续引用。示例:000272;L_StepName节点名称用于唯一标识流程内节点的字符串,用于权限定义中设置节点名称。此外,也用于节点配置(任务到达通知模板等)中标识不同的节点,以及流程定义中设置跳转、驳回或回收的目标节点。L_WfgFilterSql_XXX工作流组过滤SQL用于指定工作流组的可选人员的范围。流程变量的名称中“L_WfgFilterSql_”是固定的,表示WorkflowGroupFilterSql,后面的“XXX”表示工作流组的名称。在需要动态选人的节点,传入工作流组变量和该变量作为Parameter,用于过滤供用户选择的人员范围。变量名称中虽然包含了”Sql”,但该变量的支持两种格式:定义格式1(指定目标节点名称,推荐)前后以“{”和“}”包起来。中间是目标节点名称的取值。可以指定多个变量的取值,变量中间以“;”隔开。流程中的变量自动参与人员限制,所以一般只需要设置目标节点的L_StepName。例如:选择会审人员:{L_StepName=HUISHEN}选择调查人员:{L_StepName=DIAOCHA}定义格式2(SQL,不推荐,无法应用授权机制),适用于选择同部门人员等情况。注意:用于人工选择处理人时,返回列中应包含工号和姓名两列。同时,可以使用当前登录人的信息如下:$userNo$,当前登录人工号$agencyCode$,当前登录人所在机构编号$busiTypeCode$,当前登录人的业务类型编号L_WfgUids_XXX工作流组工号列表用于抢占式审批任务的动态指定审批人,保存由工作流组转换而成用户工号列表,用分号隔开。流程变量的名称中“L_WfgUids_”是固定的,后面的“XXX”表示工作流组的名称。在动态选人的节点提交时,针对工作流组的变量,判断是否有“L_WfgUids_工作流组名”的变量,如果有,则将该变量设置为选择的工号列表。内部机密第3页/共6页19-8-312.跳转、驳回相关因为在FileNet中,节点间的路由必须画线,为了避免太多的线让流程图混乱不堪,所以在流程图中,增加一类特殊的节点——“中转接点”。中转节点应该通过特殊的标识(比如名字,暂定为“路由”),与其他的节点区别开来。这样在动态流程图上,可以把中转接点及其相关的连线隐藏,只把流程基本的流向显示给用户。考虑到实际需求中,并不是每个节点都需要任意的跳转和驳回,所以仅需要将需要跳转或驳回的节点通过中转接点连接起来。同时,为了标识某个节点所能跳转或驳回到哪些节点,增加流程变量:流程变量名称使用说明L_JumpBackToSteps回退到的节点列表包含所能回退到的节点名称,节点名称用L_StepName表示,多个节点名称,使用“;”分隔。流程定义时,在节点到达后,将该变量赋值。在流程任务处理界面,取该变量的值,并拆分成多个节点名称。放置到“流转方向”中。流程提交时,能够判断流转方向中的取值是响应还是回退或跳转,如果是响应则放到response中,如果是回退或跳转,则放到L_JumpNextStep中。L_JumpForwardToSteps跳转到的节点列表包含所能跳转到的节点名称,节点名称及分隔符同上。流程定义和任务处理同上。L_JumpNextStep跳转/回退的下一节点保存跳转或回退到的下一节点名称。中转节点根据该变量确定要跳转或回退到的目标节点。(配置路由的路由条件)流程定义需要注意的事项流程启动节点,只能设置Forward,不能设置BackTo。Forward应该设置在流程变量的初始值中。对其他节点,应该在节点的执行前任务中,对Forward和BackTo赋值。对于允许跳转或驳回的节点,设置为对应的目标节点名;对于不允许跳转或驳回的节点,设置为空。这三个变量都应该放到节点的读写参数中。特别注意,设置L_JumpBackToSteps或L_JumpForwardToSteps后,必须要把相关的节点通过路由用线连起来。具有跳转或驳回时,默认的路由必须要设置条件:L_JumpNextStep=“”。规范起见,建议将所有非中转的路由都设置条件:L_JumpNextStep=“”,而所有到中转节点的路由都设置条件:L_JumpNextStep“”;对节点名称的引用,统一使用流程变量中定义的该节点对应的名称“L_SN_XXX”。3.收回相关首先需要明确的是,不是所有的节点都可以收回,比如经过了自动节点,或者流程有内部机密第4页/共6页19-8-31了分支,或者是多人并行处理的工作流组节点,或者是流程分叉的节点,都是不应该允许收回的。所以,是否能够收回,应该在流程定义中通过配置的方式加以定义。另外,FileNet所有的路由都必须要画线才能实现,所以收回的实现思路基本等同于跳转和退回。但收回有其特殊性,其一就是有权执行收回的人是上一个节点的执行人,其二就是执行收回后,应该回到上一个节点。为体现这两点,定义流程变量:流程变量名称使用说明L_RetrievePersonAndStep有权收回的人和收回到的节点。指定有权收回的人员工号和收回到的节点名称。工号和节点名称用“;”分隔。格式为“000888;LURU”。“L_RetrieveFlag”为‘Y’的节点,在任务提交后,将该变量的值置为“提交人+当前节点名”。在流程定义中,不允许收回的节点,在任务到达时,将该变量置为“”(空字符串)。任务处理程序中,在打开时,将该变量置为空。(下个环节的人打开后,就不能再被上个环节的人收回,而只能由下个环节的人退回。)流程定义需要注意的事项对需要提交后收回的节点,在执行后任务中对L_RetrievePersonAndStep赋值为L_StepParticipant+“;Step1”,其中Step1表示当前节点的L_StepName。注意:谨慎设置L_RetrieveFlag,特别考虑目标节点多人处理的情况、流程分支的情况和流程并发的情况。如果启动节点需要提交后收回,则需要单独画一个节点,并且设置L_StepName。然后在启动节点的执行后任务中,对L_RetrievePersonAndStep赋值为“启动人工号+新节点的L_StepName”。将该变量放到所有节点的读写参数中。特别注意,允许收回的节点,必须要把目标节点与收回到的节点通过路由用线连起来。4.任务列表相关注:已完成流程的流程变量并没有以“L_”开头,所以任务列表中,需要判断两类变量。另外,在启动节点,必须将前5个变量置于节点参数中,以便流程封装程序自动赋值。(L_Summary不需要,该变量通过流程定义在启动节点的“执行后任务”中赋值;)建议:将这6个变量置于所有的节点参数中,以便需要发送邮件时,可以使用其中的值。流程变量名称使用说明L_ProcNo流程编号流程启动时,doLaunch判断该流程是否配置有“流程编号前缀”,如果有,则自动生成流程编号,并赋给该变量。L_AgencyName所属机流程启动时,doLaunch将启动人所属机构名称赋内部机密第5页/共6页19-8-31构给该变量。L_AgencyCode机构代码流程启动时,doLaunch将启动人所属机构的机构代码赋给该变量。L_InputOperatorCode录入人工号流程启动时,doLaunch将启动人工号赋给该变量。L_InputOperatorName录入人名字流程启动时,doLaunch将启动人姓名赋给该变量。L_Summary摘要流程启动后,在启动节点的“执行后任务”中赋值;在后续节点中对流程变量有改动时,更新。5.节点名称定义相当于编程中的常量定义。每个人工节点对应一个变量,以“L_SN_”开头,并在描述中写该节点的中文名称。为了权限定义方便,从名称上将需要定义权限的节点和不需要定义权限的节点分开,需要定义权限的节点名称以“L_CSN_”开头(ControlledStepName),不需要定义权限的节点名称以“L_USN_”开头(UncontrolledStepName)。例如:录入节点——L_USN_Input,一级审批——L_CSN_Level16.动态选人的范围配置规则(SQL)针对需要配置选人范围的工作流组,找到对应的变量:工作流组过滤SQL——L_WfgFilterSql_XXX,其中XXX为对应工作流组的名称。配置语言为sql语句,目标位wfuser表,查询条件中可以包含的预置变量如下:$userNo$,当前登录人工号$agencyCode$,当前登录人所在机构编号$busiTypeCode$,当前登录人的业务类型编号*支持按照组过滤,在sqlExp中增加如下:*usernoin$G_组名*该函数将自动把“组名”对应的TDS的Group中的用户编号转换成('','uid1','uid2',...)的字符串,替换到原SQL中。其中第一个''是为了方便组为空的处理,无实际意义。*注意:组名需要写整个Dn,比如:cn=AgencyLeader,ou=Qs_Workflow,cn=groups,dc=km,dc=citics,dc=com示例:1.选取本部门的人员selectuserno,usernamefromwfuserwhereisjianzhi='N'andrzjg='$agencyCode$'2.在指定的人员范围中选择人员selectuserno,usernamefromwfuserwhereisjianzhi='N'andusernoin(‘000487’,’000272’,’005155’)内部机密第6页/共6页19-8-313.选取本部门的人员(不包含当前登录人本人)selectuserno,usernamefromwfuserwhereisjianzhi='N'andrzjg='$agencyCode$'anduserno'$userNo$'4.选取本部门并且在TDS营业部负责人组(BusDepLead