还记得头号玩家的闯关么?第一关,所有人每次都是急不可待的向前冲啊冲,直到男主发现向后反向冲,才是正确的道路。
有时候学会反向思考,才能出奇制胜。
今天接到一个需求,很简单的需求,要求OA变更流程:
A、若申请人等于张三,则走A流向
B、若申请人不等于张三,则走B流向。
按道理说这么简单的需求,OA审批流应该很好设置,想着5分钟解决的事情,结果搞了一下午。。。
事情是这样滴,OA审批流公式管理器只提供了相等比较的例子,没有更多的公式写法案例,只是说要有较强的JAVA功底,你妹!
谁家OA管理员改个流程还得有JAVA功底!!!
流程加了个判断节点,若满足条件A,则走A流向,若满足B条件,则走流向。
只找到了如下写法:
1
|
$字符串.相等$($申请人$.getFdName(), "张三" |
或者
1
|
$申请人$.getFdName().equals( "张三" ) |
意思让若申请人=张三,则返回true,否则为flase。而OA的判断,有两个支线,每个支线需要写一个条件公式:就是A和B的情况。
但是这个条件公式很操蛋啊,只接受true的结果,否则不执行。
首先A条件很好写,就是这个B没法写。我在网上找了一下午的不等于的写法,都无法生效。
原因是== 和 equals 只是比较是否相等,而!=不能准确的判断字符串,因为我的条件是汉字,而不是数字(数字就简单多了)
后来想,条件公式的结果无非就是要true嘛,换个思路得了。
结果就成下面了:
1
2
3
4
|
---满足分支A公式 if($字符串.相等$($申请人$.getFdName(), "张三" )){ return "true" ; } else { return "flase" ;} ---满足分支B公式 if($字符串.相等$($申请人$.getFdName(), "张三" )){ return "flase" ; } else { return "true" ;} |
是的,我只要true嘛,这不就行了。
12.28 原来JAVA是这么写的。
!就是代表非的意思,那么
$字符串.相等$($申请人$.getFdName(), “张三”)为符合
!$字符串.相等$($申请人$.getFdName(), “张三”)即不符合