工作流软件系统包含流程引擎,流程设计器,流程发布运行等监控环境。流程引擎实现业务流程建模以及流程的流转,流程建模包含流程的基本节点模型,流程的流转就涉及到流程的提交,以及相关节点的轨迹记录。
流程引擎是抽象的业务流程的流转,里面不涉及任何业务部分,业务的实现是在表单中完成的,表单再挂机到流程的节点上。这样在流程流转时,相应的节点完成后,节点上的业务也就完成了,并进行到下一步。
在节点上挂机的业务表单中需要能获取到流程上下文的信息,供表单和流程关联,表单中涉及的业务数据和流程相关联。
在流程引擎中,也需要能获取到业务表单中的信息,供流程引擎的流转使用,有的如条件节点,需要靠业务数据来指引下一步的流转。如报销金额做是否需要多级审批的条件,这个报销金额就是从用户填写的表单中来的。
在流程流转的时候,节点的执行顺序中,还需要提供一些接口,如节点办理之前事件接口,节点办理之后事件接口。当流程流转到节点的时候,自动触发这些前置后置事件。这些接口事件中也可以完成一些业务处理过程,以补充业务表单中的实现。
无论是引擎中引入的业务数据,还是业务表单中引入的流程上下文信息,都可以以外挂的事件接口的方式提供,表现为流程引擎的扩展性。实现这些事件接口,就可以写自己的实现了,天马行空,任意的读写表数据都可以。这种对开发人员是很乐意接受的,但是当作为一个工作流软件产品提供给用户使用的时候,终端用户是很犯怵的,就需要提供一个可视化的编辑器让终端用户可以自己去设置现实。
为实现可视化的设置功能,界面上需要做好向导式的供用户配置生成脚本,同时流程引擎中需要引入脚本编辑,动态编译脚本的功能。在eworkflow工作流软件产品中,就有做好这方面的功能,界面上可视化的向导式的提供设置界面,然后根据用户设置生成脚本,流程运行的时候,交给后台动态编译执行。for dotnet版的,脚本是c#的,for java版的,脚本就是java的语法了。
有了界面设置,再加上脚本编译器,动态编译脚本,就能使得工作流软件产品操作更加方便快捷。