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