起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18526|回复: 9

[分享] 流程图中的条件分支环节

  [复制链接]

89

主题

374

帖子

811

积分

高级会员

Rank: 4

积分
811
QQ
发表于 2014-3-23 02:08:57 | 显示全部楼层 |阅读模式
版本: X5.2.6 小版本号:
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 7 浏览器: IE8
本帖最后由 奶糖 于 2014-3-23 02:53 编辑

在X5开发时,想开发出更符合客户需求的应用,就需要在流程中添加比较多的条件分支环节。
而在条件分支环节的使用上,有几种不同的形式。小菜分享,大神勿喷。

1:业务数据表单中包含判断条件需要的数据
流程图1:

1-流程图

1-流程图

选择流程图1中的条件分支环节,设置其中的条件属性。
条件:relationValue('Sa_qj',getProcessData1(),null,null,'sLeaveDays','/OA_db/management/data') >= 3
上面的条件表达式的意思就是:根据业务数据的id(getProcessData1()),取得请假申请表('Sa_qj)中的请假天数(sLeaveDays),并判断是否大于3。
由此可见,条件表达式返回的结果是true或者false。在设置条件分支环节属性时也能看到,见条件分支环节属性图1:

2-条件分支环节属性

2-条件分支环节属性


这种流程图是客户需求,开发中使用的流程图可详见解决方案1和解决方案2中的流程图
但有时候客户需求永远就是那么复杂、那么奇葩。客户要求应该有下面的流程图,见条件分支流程3:

3-条件分支流程图

3-条件分支流程图


当请假天数<3时,仅需要项目经理审批;
当请假天数>=3并且<15时,还需要总经理审批;
当请假天数>=15时,不要总经理审批,需要董事长审批;

这时候,目前X5提供的条件分支环节就不能进行3路分支了。
解决方案1:修改流程图

4-修改过的条件分支流程图

4-修改过的条件分支流程图


在两个条件分支环节设置条件表达式即可,方法和上面设置一样。
分支1:
relationValue('Sa_qj',getProcessData1(),null,null,'sLeaveDays','/OA_db/management/data') >= 3
分支2:
relationValue('Sa_qj',getProcessData1(),null,null,'sLeaveDays','/OA_db/management/data') >= 15
其实这种情况下,已经是在写硬代码了,如果客户进行了需求变更:
当请假天数<5时,仅需要项目经理审批;
当请假天数>=5并且<10时,还需要总经理审批;
当请假天数>=10时,不要总经理审批,需要董事长审批;
这时候,就需要打开开发工具,修改流程图中的条件表达式,如果大神更熟悉代码,当然也可以在流程图对应的代码文件中进行修改。
根据软件开发规范,进行了需求变更、代码更改,就应该进行测试。
那我们就应该重新进行UT测试、IT测试(集成测试应该也需要吧?)。
这种需求变更带来的,不应该是这么复杂的测试,所以我们应该放弃这种解决方案。
解决方案2:
流程图:

5-修改过的条件分支流程图

5-修改过的条件分支流程图

方案思路:
在请假申请环节的流转后事件中添加代码:根据配置文件中定义的天数,设置请假天数类型,并保存到Sa_qj中。
在流程图中判断请假天数类型。
从此妈妈再也不担心客户变更需求了o(∩_∩)o

2:根据用户在业务页面中的操作进行流转
在项目经理审批环节对应的页面上有两个按钮:“提交给项目总监审批”和“进行开发部内部讨论”
流程图:

6-根据页面按钮进行流转

6-根据页面按钮进行流转

这时候不能仅仅根据业务数据表单中包含判断条件需要的数据进行处理了。
因为此时业务数据中没有包含判断条件需要的数据,那么我们需要在点击不同按钮的时候,将不同的类型Flg更新到数据表中的字段:

进行开发部内部讨论按钮对应的JS代码:
  1. var param = new justep.Request.ActionParam();
  2. param.setString("sign", "NEED");
  3. justep.Request.sendBizRequest2({
  4. dataType : "json",
  5. action : "setInsideD",
  6. parameters : param,
  7. callback : function(result) {
  8. if (!result.state) {
  9. throw new Error(result.response.message);
  10. }
  11. }
  12. });
  13. justep.xbl("flw").advanceQuery();
复制代码
同样,提交给项目总监审批按钮会将对应的flag设置为“NONEED”,此时就可以在条件分支中加入自定义Fn函数判断了。

评分

参与人数 1 +12 收起 理由
jishuang + 12 赞一个!

查看全部评分

89

主题

374

帖子

811

积分

高级会员

Rank: 4

积分
811
QQ
 楼主| 发表于 2014-3-27 10:17:37 | 显示全部楼层
求赞啊~
回复 支持 反对

使用道具 举报

89

主题

374

帖子

811

积分

高级会员

Rank: 4

积分
811
QQ
 楼主| 发表于 2014-4-5 17:33:28 | 显示全部楼层
如下图:根据项目的不同,申请可能需要财务审批。
1)不需要财务部审批的情况,直接提交给总部研发部审批,流程状态由保存变更为申请状态。
2)需要财务部审批的情况,提交给财务部审批,然后提交给总部研发部审批,此时流程状态由保存变更为申请状态。
可以在项目申请的流转后事件businessActivity1AfterAdvance加入以下代码:
  1.         // 项目申请 流转后事件
  2.         public static void businessActivity1AfterAdvance() {
  3.                 // 当非流向财务部时,保存0-->1申请
  4.                 if(!ProcessUtils.isFlowTo("businessActivity3")) { // businessActivity3 -- 财务部审批
  5.                         //更新状态
  6.                         。。。
  7.                 }
  8.         }
  9.         
  10.         // 财务部审批 流转后事件 保存0-->1申请
  11.         public static void businessActivity3AfterAdvance() {
  12.                 //只要经过财务部审批,状态就一定更新为1 申请
  13.                         。。。
  14.         }
复制代码
条件分支环节.jpg
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-4-8 16:02:29 | 显示全部楼层
在处理流程分支时,平台提供了两种环节,一个是条件分支环节,一个是条件环节
一般情况下,一进两出的情况使用条件分支环节,更多条件时,使用条件环节
条件分支环节,就像代码中的if  else
条件环节,就像代码中的case
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

89

主题

374

帖子

811

积分

高级会员

Rank: 4

积分
811
QQ
 楼主| 发表于 2014-4-9 10:17:27 | 显示全部楼层
zhaixin 发表于 2014-4-8 16:02
在处理流程分支时,平台提供了两种环节,一个是条件分支环节,一个是条件环节
一般情况下,一进两出的情况 ...

按照翟老师的提示,使用条件环节,那么对应的流程图应该是这么画。
感觉也挺清晰的说,又学习了一招,谢谢翟老师~~~
tianjian.jpg
回复 支持 反对

使用道具 举报

6

主题

26

帖子

48

积分

新手上路

Rank: 1

积分
48
QQ
发表于 2014-4-25 17:06:56 | 显示全部楼层
受教了。
回复 支持 反对

使用道具 举报

53

主题

313

帖子

1134

积分

金牌会员

Rank: 6Rank: 6

积分
1134
QQ
发表于 2014-9-18 13:31:22 | 显示全部楼层
好啊@!
回复

使用道具 举报

发表于 2014-9-18 13:55:54 | 显示全部楼层
mark
回复

使用道具 举报

13

主题

34

帖子

93

积分

初级会员

Rank: 2

积分
93
QQ
发表于 2015-4-16 16:02:25 | 显示全部楼层
太好了
回复

使用道具 举报

3

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
QQ
发表于 2016-5-24 17:53:12 | 显示全部楼层
奶糖 发表于 2014-4-9 10:17
按照翟老师的提示,使用条件环节,那么对应的流程图应该是这么画。
感觉也挺清晰的说,又学习了一招,谢 ...

这个教教我
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-3 10:22 , Processed in 0.104389 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表