找回密码
 立即注册

QQ登录

只需一步,快速开始

zhangsheng
金牌服务用户   /  发表于:2023-2-16 09:47  /   查看:2032  /  回复:7
本帖最后由 zhangsheng 于 2023-2-16 09:55 编辑

       如业务过程需要按照预设程序办理,情形简单时可以通过权限、页面、字段等进行简单控制;当情形复杂时,需要借助工作流框架。活字格8.1对工作流引擎进行了升级优化,最显著的变化是工作流与业务设计完全分离。工作流与业务解耦有很多优点,比如设计扩展性、复用性增强,流程设计简捷,需求变更扰动少等,项目开发与维护工作难度降低,。但流程与业务分离后也有新的问题,需要在业务流程总体设计时就要提前处理好,才能在后面具体开发阶段避免大量重复修改。在这里举出本人应用8.0.104工作流引擎进行业务设计过程中实际遇到一些问题与解决思路,欢迎各位格友给出更优化的方案。


一、使用活字格8.0版本进行业务流程设计遇到的问题

1、每个节点同时生成多个任务(一个负责人对应一个任务),抢签模式下允许不同负责人同时进入节点办理,某个负责人率先提交后工作流引擎自动关闭其它负责人的任务(即使正在打开办理过程)。如业务系统布置应用后,企业采用多用户同时处理任务的管理机制(类似超市、银行等的多柜台服务模式),频繁莫名被关闭任务用户心情效率都受影响,现场也会产生秩序混乱。这是如何处理同一节点任务抢签顺序的问题。

2、工作流任务处理不能放在事务中,所以在服务端流程处理与业务处理不能实现事务性。这是如何捕捉并处理业务与流程不一致性的问题。

3、现有流程的回退,不是重新进入本节点的撤销,而是进入下一节点的驳回,现有视图没有暴露节点关系查询的借口。当某个节点有并行的后续节点/节点/节点时,如节点②回退时,节点③或节点④已经提交完成了,此时会产生严重错误。这是如何处理并行任务回退合法性的问题。

4、流程中心中不显示业务数据信息,不支持点选办理。这是如何在业务页面直接办理流程的问题。

5、任务管理明显比一般业务的计算复杂(一次任务管理大概1-2秒)。大部分业务流程处理过程只涉及一次任务管理,有延迟感觉但在可接受范围内,不用特别处理。有些业务流程过程涉及多次任务管理计算,例如:并行分支进行回退,分支节点任务的用户数量多,需要进行多个任务的删除。遇到多次任务管理计算会造成页面等待响应过久。


二、解决思路

1、抢签问题解决方案:建立节点冻结的数据表。每个节点在首个负责人进入任务后进行节点冻结,冻结时间内其他负责人不能办理,页面提示冻结相关的负责人与时间。

2、业务流程事务性解决方案:建立有关业务流程同步的数据表。先将业务处理与同步记录放在一个事务中完成;再进行流程任务处理,更新业务流程记录;没有更新至目标状态的记录,推送到自建的“我要同步”通知栏。

3、并行分支回退合法性解决方案:建立节点并行分支的数据表。回退前检查上级节点有无并行分支任务/有无提交/有无业务流程不一致等情形;满足条件的先回退,再删除并行分支的可执行任务。

4、业务页面直接办理流程解决方案:业务浏览页增加流程办理按钮,按钮显示流程办理的交互信息;增加最新提交任务名称,该列超链接显示该“流程追踪”;业务关键数据超链接显示业务浏览页面。

5、多次任务管理计算解决方案:优化设计结构,尽多可能将非关键的任务管理计算分离出来,在页面由单独服务端命令采用异步模式完成,可以在客户端响应后,后台服务端继续计算完成。

t.jpg

7 个回复

倒序浏览
muto
金牌服务用户   /  发表于:2023-2-16 10:05:41
沙发
9.0 不是又要改了吗  ,等胡布斯。。。
回复 使用道具 举报
zhangsheng
金牌服务用户   /  发表于:2023-2-16 10:11:07
板凳
muto 发表于 2023-2-16 10:05
9.0 不是又要改了吗  ,等胡布斯。。。

是要全面升级么?
回复 使用道具 举报
zhangsheng
金牌服务用户   /  发表于:2023-2-16 10:41:24
地板
本帖最后由 zhangsheng 于 2023-2-16 10:44 编辑

问题1活字格可以增加配置解决;
问题2与3,如果活字格固定方案,可能会因为任务处理速度慢产生问题。测试用十个用户几个角色连接外库,回退要6-7秒,用异步方式优化后才正常。
回复 使用道具 举报
experdot
高级会员   /  发表于:2023-2-16 10:42:37
5#
本帖最后由 experdot 于 2023-2-16 10:47 编辑

3. 并行分支回退

解决思路:
1. 定义一个流程全局变量,“并行分支是否已通过”,初始值为 0
2. 设置所有分支的后继连线经过事件,修改“并行分支是否已通过”值为 1
3. 设置所有回退按钮的显示条件为“并行分支是否已通过”等于 0
4. 这样任何一个并行分支提交以后,其他分支的回退按钮就会消失

后继连线:
image.png926070251.png

回退按钮显示条件:
image.png360312804.png
回复 使用道具 举报
zhangsheng
金牌服务用户   /  发表于:2023-2-16 10:50:25
7#
experdot 发表于 2023-2-16 10:42
3. 并行分支回退

解决思路:

考虑过这个方案,这样不方便复用,每个业务要修要改一次有关流程的部分。
回复 使用道具 举报
zhangsheng
金牌服务用户   /  发表于:2023-2-16 12:31:33
8#
如果采用流程变量方案,分支是否执行01变量还不够,删除并行分支任务要知道具体下流有那些节点,要设置更多变量。一个流程可能多个有分支的节点。流程与业务设计分离,如果业务过多耦合流程,复用特别复杂,就失去了一些优势。所以最后还是采用了自建表的方案。没测试之前和孙老师探讨并行回退问题,还想有没有可能暴露节点上下流关系的查询视图。实际设计完测试,发现工作流的处理都慢。要是活字格考虑暴露节点视图,要考虑实际测试的速度表现。
回复 使用道具 举报
zhangsheng
金牌服务用户   /  发表于:2023-2-16 19:34:53
10#
lh123 发表于 2023-2-16 16:20
一看脑瓜子头疼,直接不用。

是挺让人头疼,也折腾了挺长时间才做完。赶上8.0有了组件,全封装在框架和组件里,后面业务设计个性改动工作量很少。做完感觉工作流分离后,开始的框架设计要费时间,但后面业务开发省更多工作量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部