HF工作流引擎与现有业务系统的整合

     最近忙于项目,流程原理的介绍要放后一些,见谅!该篇先来解答朋友们的几个问题,BPM系统是企业业务流程的一个统称,HF是我们开发的BPM系统的名字,HF分三部分:流程设计器,流程引擎和业务平台,三者是高松散低耦合的,三部分在设计上是完全独立,都可以单独拿出来重新定制,HF的流程设计器和引擎这两部分可以结合使用,业务展现平台完全可以自己开发。目前大部分客户是使用流程设计器和流程引擎来改造现有的业务系统,这里把整合的过程大体介绍一下。

    HF工作流解决方案提供了流程引擎、流程设计器和业务展现平台,依靠这些我们可以从零搭建业务系统。但是在我们实际应用中经常遇到客户已经有了业务系统,如果再重新搭建业务系统势必造成重复投资,这时候就需要对原有业务系统进行改造,他们只需要在原有业务系统上增加工作流的功能即可。HF工作流引擎的设计是完全满足这个需求的,引擎的设计是开放式的,可以与任何第三方业务系统整合,第三方业务系统可以是java的系统,也可以是Php的系统,它的实现过程也非常简单,下面介绍一下HF流程引擎与业务整合的关键步骤:

实现工作流系统的整合一般从下面几个方面进行:

一、组织机构的整合

工作流系统的核心是人和任务,工作流系统离不开人,人是靠组织机构进行管理的,这是创建工作流系统的前提。HF工作流系统有一套自己组织机构,这套组织机构的划分是按照部门、岗位和人员划分的,与国内企业组织机构划分模式基本一致。如果现有业务系统中也存在组织机构,那么就要考虑两个组织机构合二为一或者通过其他手段让组织机构达到同步。

二、业务数据与流程数据的关联

在使用工作流之前业务数据是“孤立”的,像一个个的信息孤岛,工作流引擎的作用就是把它们互相串连起来,形成一个有机的整体。那么如何把二者有机的结合起来,实现流程数据与业务数据的关联,让工作流引擎知道如何组织业务数据,这需要在流程模板中配置任务数据的表单,业务平台可以根据配置加载表单,表单对应数据库里的表,数据表中指明所属的流程实例和任务实例,具体的做法是在业务数据表中增加四个字段worflowid,worktaskid,workflowinstanceid,worktaskinstanceid,也许这是唯一改变现有业务系统的地方,不需要流程流转的业务数据表不必改动的。业务表单整合后,表单提交的代码包括两部分,一部分是保存表单数据,一部分是调用流程引擎实现流转,实例代码如下:

#region 执行流转,处理任务

private void button7_Click(object sender, EventArgs e)

{

//

//此处是原来的业务数据提交代码,增加保存WorkflowInsId等四个字段与流程实例关联

//

//

//下面是通知流程引擎开始流转

//

string OperatorInsId = dataGridView3.SelectedRows[0].Cells["OperatorInsId"].Value.ToString();

WorkflowRuntime wfruntime = new WorkflowRuntime();

wfruntime.RunSuccess += new WorkflowRuntime.RunSuccessEventHandler(wfruntime_RunSuccess);

wfruntime.RunFail += new WorkflowRuntime.RunFailEventHandler(wfruntime_RunFail);

wfruntime.isSave = checkBox3.Checked;//true 表示保存草稿,执行Run方法的时候流程不流转

wfruntime.Run(textBox3.Text, OperatorInsId, "提交");//命令分支,必须与建模中的命令定义名相同,否则无法流转

}

#endregion

就是上面这几句代码完成了一个业务的整合,非常简单,对原有系统改动较小。

三、支持工作流系统的用户任务管理界面

工作流系统是一个人机交互很强的系统,任务必须人工干预,也就是处理任务(包括流程的发起和任务的处理)。所以必须提供发起流程的业务界面和接收任务的处理界面,这样用户才能发起流程,处理任务。HF工作流的设计充分考虑到了用户实际的需求,任务需要认领才能处理,认领任务后其他人就不会再看到该任务。

clip_image002

四、其他功能

HF工作流引擎还支持流程回退、流程授权、任务指派、动态指定下一任务处理人等复杂情况。

我的程序人生
原文地址:https://www.cnblogs.com/legweifang/p/2667137.html