分享:工作流设计中高级条件的编写问题汇总 精华
12人赞赏了该文章
2,638次浏览
编辑于2018年08月02日 20:36:12
摘要由AI智能服务提供
工作流设计常在高级条件中设置,如流程连线、节点参与人及启动条件。高级条件使用Python语法,不支持SQL。文中列举了多种条件设置示例,包括执行人、岗位、数值、复选框、单选按钮、文本等类型字段的条件编写。特别指出,当条件涉及多部门或复杂字段时,应使用in、not in或find语句,并给出具体编写方法。此外,单据体字段需二次开发实现条件判断,提供了单据体循环判断示例。
有用
反馈
工作流设计过程中做一般有几个地方用到高级条件:
1、流程连线上设置条件时:
2、流程节点设置参与人方案条件时:
3、流程设置中设置流程启动条件时:
高级条件页签上的语句是按pthyon语句进行解析的,所以这里不能用SQL语句的语法;
下面整理了平时常用的一些语句的编写样例:
1、使用节点执行人做条件时:语句为,上一节点执行人='张三';
2、使用节点执行人岗位做条件时:语句为,上一步执行人岗位='岗位编码';
3、使用整数类型的字段做条件时:语句为,整数字段= 123,数值字段=null;
4、使用复选框类型字段做条件时:语句为,复选框字段=true或false;
5、使用单选按钮字段做条件时,语句为,单选按钮=枚举项值;
6、文本型字段做条件时,语句为,文本型字段='XXX
7、使用多个基础资料多条级,例如有十几个部门走一条分支路线,此时在基本页签用部门名称或部门编码=XXX要设置十几行,但是基本页签行数大于5行后,因为解析引擎解析的耗能,流程的运行速度会变慢,此时,在高级条件中用in和not in来实现,部门名称字段 in ['部门名称1','部门名称2',.....],另外一个分支条件则为:部门名称字段 not in['部门名称1','部门名称2',.....]
另外如果有几十个部门要走一条分支路线,且部门名称很长,用in语句写会导致语句超过可输入范围而被截断,此时建议用find语句,需要部门名称中有共性的字符串,例如所有部门名称中都有一个采购字样,则用 FPurchaseDeptId.FName .find('采购')>= 0,采购部门中名称有采购字样的部门走这条路线。
8、高级条件如果用到单据体字段,是不能通过选择单据体字段编写,需要进行二开,单据体循环判断的例子:
可以使用如下语句,对单据体行进行循环,寻找符合条件的行:
len(filter(lambda x : (x.FExpID.FNumber = 'CI001'), FEntity)) > 0
表达式说明:
【假定需求如下,其他以此类推】:单据体为FEntity,费用项目字段为FExpID,需求是判断单据体中存在费用项目编码为“CI001”的分录,则条件满足。
则对单据体FEntity的全部行,进行循环;
逐行判断单据体字段费用项目编码是否为“CI001”,如果是,则计数加一;
循环结束,如果计数器大于0,返回真:即起码有1行,符合条件;
9、单据上的部门的上级部门的使用方法:例如
费用报销单流程高级条件中的申请部门下的上级部门作为条件时的写法:FExpenseDeptID.FParentID.Number== 'BM000025' 字段后面要手工 加number。
同时也欢迎大家继续补充。
1、流程连线上设置条件时:
2、流程节点设置参与人方案条件时:
3、流程设置中设置流程启动条件时:
高级条件页签上的语句是按pthyon语句进行解析的,所以这里不能用SQL语句的语法;
下面整理了平时常用的一些语句的编写样例:
1、使用节点执行人做条件时:语句为,上一节点执行人='张三';
2、使用节点执行人岗位做条件时:语句为,上一步执行人岗位='岗位编码';
3、使用整数类型的字段做条件时:语句为,整数字段= 123,数值字段=null;
4、使用复选框类型字段做条件时:语句为,复选框字段=true或false;
5、使用单选按钮字段做条件时,语句为,单选按钮=枚举项值;
6、文本型字段做条件时,语句为,文本型字段='XXX
7、使用多个基础资料多条级,例如有十几个部门走一条分支路线,此时在基本页签用部门名称或部门编码=XXX要设置十几行,但是基本页签行数大于5行后,因为解析引擎解析的耗能,流程的运行速度会变慢,此时,在高级条件中用in和not in来实现,部门名称字段 in ['部门名称1','部门名称2',.....],另外一个分支条件则为:部门名称字段 not in['部门名称1','部门名称2',.....]
另外如果有几十个部门要走一条分支路线,且部门名称很长,用in语句写会导致语句超过可输入范围而被截断,此时建议用find语句,需要部门名称中有共性的字符串,例如所有部门名称中都有一个采购字样,则用 FPurchaseDeptId.FName .find('采购')>= 0,采购部门中名称有采购字样的部门走这条路线。
8、高级条件如果用到单据体字段,是不能通过选择单据体字段编写,需要进行二开,单据体循环判断的例子:
可以使用如下语句,对单据体行进行循环,寻找符合条件的行:
len(filter(lambda x : (x.FExpID.FNumber = 'CI001'), FEntity)) > 0
表达式说明:
【假定需求如下,其他以此类推】:单据体为FEntity,费用项目字段为FExpID,需求是判断单据体中存在费用项目编码为“CI001”的分录,则条件满足。
则对单据体FEntity的全部行,进行循环;
逐行判断单据体字段费用项目编码是否为“CI001”,如果是,则计数加一;
循环结束,如果计数器大于0,返回真:即起码有1行,符合条件;
9、单据上的部门的上级部门的使用方法:例如
费用报销单流程高级条件中的申请部门下的上级部门作为条件时的写法:FExpenseDeptID.FParentID.Number== 'BM000025' 字段后面要手工 加number。
同时也欢迎大家继续补充。
赞 12
12人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读