工作流中高级条件python的编写示例

在工作流设计中,连线条件和参与人设置条件上都可以使用高级页签的pyhton语句来实现。
下面对一些常用的python语句的编写进行了整理,希望能对设计者有所帮助。
首先,如果您写了一个python语句如果不知道可否正常运行,建议使用表达式测试进行测试。

下面开始举例:
一、流程变量:
1、发起人=XXX
python语句:WF.Originator == 'XXX',使用单引号,XXX为发起人名称;
2、发起人岗位=XXX
python语句:WF.OriginatorPost = 'GW000001',GW000001是岗位编码,高级条件中的岗位都是记录的岗位编码。
3、发起人岗位存在多个岗位时或不同发起人,判断发起人岗位
python语句:WF.OriginatorPost in['GW000001', 'GW0000012', 'GW000003',...],只要发起人岗位编码为其中的一个值都会为true;如果不在其中,使用 not in。
4、节点执行人为空
python语句:WF.GetApprovalActionExecutor(17) ='',单引号中间没有空格键;
节点执行人不为空:WF.GetApprovalActionExecutor(17) <>''
5、节点执行人岗位为空
python语句:WF.GetApprovalActionExecutor(17) ='';单引号中间没有空格键;
节点执行人岗位不为空:WF.GetApprovalActionExecutorPost(17)<>''
二、单据变量:
1、文本类型字段
文本字段为空:F_JD_Text1=null
文本字段内容=XXXX:F_JD_Text1 = 'XXXX'
搜索字段中是否包含某段文本:XXXX:F_JD_Text1.find('XXXX') >= 0
多行文本字段
文本字段为空:XXXX=null or XXXX=" "
文本字段不为空:XXXX<>null and XXXX<>" "
2、复选框类型字段
勾选:F_JD_CheckBox1 = true;
不勾选:F_JD_CheckBox1 = false;
3、数值类型
字段值为1判断:F_JD_Decimal1 = 1
4、下拉列表类型
下拉列表字段,存储的是枚举项值,显示的是枚举项名称,公式中,需要与枚举项值进行比较
如F_JD_Combo1绑定的枚举类型为价格类型,有两个枚举项('1' : 到岸价; '2' : 出厂价)
F_JD_Combo1 = '1'
5、基础资料类型
因为基础资料字段有恨多属性,不能直接使用基础资料和期望的值进行比较。
需要明确的指定属性与常量值进行比较:
基础资料的ID:F_JD_Base1.Id = 100001
基础资料的编码:F_JD_Base1.FNumber = 'GW0001'
基础资料的名称:F_JD_Base1.FName = '采购员'
6、日期字段
字段值为日期型,不能与字符串常量进行比较。
可以采用公用函数,把日期转换为字符串进行比较:
F_JD_Date1.ToString('yyyy-MM-dd') = '2016-07-07'
如:日期字段等于当前日期:
FDate.ToString('yyyy-MM-dd') == WF.CurrentDate(WF.CurrentDate目前已经提供的变量)
当前日期-单据的创建日期大于2天
(datetime(WF.CurrentDate) - FCreateDate.Date).Days > 2
7、单据体字段
工作流高级条件的界面没有展示出单据体字段,但是通过写python是可以支持到的。
因为单据体是多行数据,需要lambda表达式,对单据体行,进行循环,逐行取基础资料字段值进行比较:
len(filter(lambda x: ( x.维修次数 == '2' ), FEntity))>0 维修次数是字段的标识,如果名称需要加Fname
表达式说明: FEntity是单据体标识,bos设计器中点击单据体,属性中显示的标识;
x 代表单据体当前行, 逐行判断单据体字段维修次数是否为'2',如果是,则计数加一; 循环结束,如果计数器大于0,返回真:即起码有1行,符合条件。
举例1:采购入库单单据体中仓库不等于XXX
len(filter(lambda x: ( x.FStockId!=None and x.FStockId.FNumber <> 'CK001'), FInStockEntry))>0
例如:所有分录数量都大于15
len(filter(lambda x : x.FReqQty>15 , FEntity)) = len(FEntity) 所有分录数量都大于15
例如:所有分录有一条数量都小于10
len(filter(lambda x : x.FReqQty<10 , FEntity)) >0
例如: 所有分录中最低的数量在10和15之间
min(map(lambda x:x.FReqQty, FEntity)) >= 10 and min(map(lambda x:x.FReqQty, FEntity)) =<15
单据体字段为下拉列表类型时,单据体中有下拉列表字段为:收货 的行时
len(filter(lambda x : x.F_dev_Combo ='1' , FEntity))>0 ,1为单据体下拉列表收货的枚举项值
举例2:其他出库单单据体仓库名称等于CK作为条件:为true
len(filter(lambda x: ( x.FStockId!=None and x.FStockId.FName = 'CK'), FEntity))>0
举例3: 单据体日期字段只要有一行日期字段为空判断条件就为true
len
工作流中高级条件python的编写示例
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



