去年换了工作到现在这家公司,当时我进入的部门工作效率低下,为了短期内
提高效率,在仓促之间封装了一套姑且称之为工作流驱动吧,极大的提高了工
作效率,但毕竟在很短时间内完成,有些问题妥协了一些不太完善的解决办法
,今年优先的计划就是调整工作流,如果有必要将重新设计。
现在要说的是一个非常关键的问题的解决方案调整:当单据将要流转到下一个
节点时,如何根据单据中业务数据选取下一个节点。
如何选取下一个节点的前提是要有判断条件,可以在流程配置时设置条件,根
据条件的判断结果来决定流转到的相应节点,判断条件的依据则是来至于业务
单据的数据,而这里的问题就是如何将业务数据传给工作流。
一:直接将单据中的数据提交给工作流,这个办法被首先排除掉了,因为这会
造成工作流的驱动依赖于业务数据的提交,而我们的业务是多种多样,我来之
前的各种软件系统没有任何整体规划,当然现在也没有条件去重新规划那些系
统,如果想适应所有的系统,工作流和业务之间的耦合必须完全解开,业务和
工作流之间就不能有直接的联系。
二:我采取的方式:条件中包含参数保存的位置并且保存在数据库中,由存储
过程去根据条件到指定表中获取所需业务数据,这种方式能满足现下的需求,
但确定也很明显:1,不利于维护,给流程模板的配置增加了很大复杂度,因为
指定节点条件不止包含判断的逻辑还要包含参数在数据库中的保存位置;2,不
利于扩展,比如一旦业务系统规模增大,增加了缓存,存储过程将可能无法获
取的最新的业务数据,从而判断错误。
三,我目前准备采取的方法:在业务与工作流之间增加一个值对象来解耦,业
务只负责业务数据变更时更新值对象中对应的值,工作流所需的参数都从该值
对象获取,值对象的生命周期为流程启动到流程结束,值对象所含内容可以由
配置来决定结构,内部只包含流程模板中条件所需的判断参数,这样业务不用
关心工作流驱动需要什么,工作流不直接依赖于业务单据提供的信息,流程模
板也不必关心判断条件所需的参数从何而来,而值对象只包含判断所需信息,
虽然一直在内存中,但一个对象不会浪费多大内存。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。