通常工作流软件系统都会有自己的表单工具,能方便的可视化的设置出业务表单。但是很多客户在做工作流软件产品调研时,都会很关心工作流系统是否能方便的集成第三方的表单。大概是对自定义表单工具的能力不信任,也或者是对表单工具的不熟悉,抱着万一自定义表单工具不能实现自己的要求哦,还可以自己写代码来实现。
当然工作流软件产品中包含的表单工具,是能应付所有的要实现的需求的。可视化的设置功能达不到,还可以通过编程的方法来达到,因为表单工具本身也是一个开发工具,用传统的dotnet或java能实现的,表单工具也一样能实现。
如果达不到那就是表单工具的问题了,象我们的eform是完全可以达到的,eform封装了很多业务模块实现的通用功能和控件,常见的录入方式,都可以通过界面配置来完成,当需求特殊,不具通用性,eform没有提供时,可以通过代码来实现。eform本身也是一个类似jquery的工具,大量运用了ajax,并封装了大量的函数,代码实现的时候也很得心应手。就象jquery一样,如果要自定义代码,需要熟悉一下框架的一些基本函数,熟悉了,就很快了。但毕竟需要自定义代码的地方不多。
eform表单设计器
当客户觉得自己的应用还是够复杂,需要自己写实现模块的时候,工作流系统也需要提供集成第三方页面的方法。集成第三方的页面,可以是htm,jsp,aspx等。用dotnet的通常就是aspx页面了。
在流程设计器中,需要能将aspx页面挂接到流程的节点上,当流程运行到此节点时,能打开关联的aspx页面。这是最基本的要求。
挂接到流程中的aspx页面,要实现两个方面的基本功能,首先要做好自己份内的事,实现业务录入,界面编辑,保存用户录入的数据。另一方面需要执行流程的节点,使得流程得到递进。
业务信息的录入,保存按应用系统的mvc方式来实现。执行流程的递进,就需要调用流程引擎对外提供的api接口了。
如下面这样一个请假的流程:
在集成aspx页面的时候,需要按照如下过程进行:
在流程定义的时候,节点上挂接aspx页面,同时,加上?1=1 ,在流程引擎打开这个页面时,会将流程的相关信息按&关键字=值 这样的方式拼接到url后面。在aspx页面中按关键字获取这些流程相关的信息,为表单提交时,执行流程递进做好准备。
启动流程,运行的url如下:
../aspx_dj/leave_init.aspx?wfName=wf_leave_init_aspx&wfVersion=1&initActionId=4960&actionId=4926
打开leave_init.aspx页面,后面的参数标明业务流程名称,版本。初始化动作id,和第一个动作节点id
aspx业务表单在提交的时候,做好了业务数据的提交之后,再调用流程引擎的api执行流程节点的动作,使得流程得以递进。
集成的api接口函数调用代码如下:
业务数据的提交,和流程的动作执行,应该在一个事务中,保证整个流程的事务一致。