分享:工作流设计中高级条件的编写问题汇总
金蝶云社区-kdCHY
kdCHY
5人赞赏了该文章 2,486次浏览 未经作者许可,禁止转载编辑于2018年07月10日 11:09:36

工作流设计过程中做一般有几个地方用到高级条件:

1、流程连线上设置条件时:


2、流程节点设置参与人方案条件时:


3、流程设置中设置流程启动条件时:


高级条件页签上的语句是按pthyon语句进行解析的,所以这里不能用SQL语句的语法;

关于pthyon语句的语法可以参考这里:https://vip.kingdee.com/article/149225

下面整理了平时常用的一些语句的编写样例:
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。

同时也欢迎大家继续补充。