您所在的位置:首页>> 头条新闻>> 正文

好的流程让错误率减小

企业报道  2015-11-18 09:48:16 阅读:

  把工作流管理系统引入到企业内部的设备检修管理系统中,不仅可以实现企业业务流程的自动化和规范化,而且可以显著提高效率,减少错误发生率。

  在企业信息化的普及过程中,相应出现了一系列问题,例如,业务流程固化在软件系统中,缺乏有效控制和管理, 不能很好地满足企业的要求;并且业务流程设计得过于简单,而实际业务一般都比较复杂。本文开发了工作流管理系统(Workflow Management System, WFMS),并把它引入到企业内部的设备检修管理系统中以适应这种转变。

  整体系统设计

  Microsoft .NET Framework是微软推出的一套下一代开发平台。.NET框架是创建、部署和运行Web服务及其他应用程序的一个环境,所提供的ASP.NET可以快速方便的地部署三层架构——数据层、业务逻辑层和显示层。

  数据层通过调用.NET所提供的SqlClient类库接口函数实现数据库的各种操作,因此业务逻辑层在实现工作流引擎时只需把精力集中在逻辑关系设计上,有关数据库的操作直接调用数据层提供的接口。在显示层可以直接调用业务逻辑层提供的接口来响应用户的各种请求。

  工作流系统的核心是工作流引擎,而控制模型是工作流引擎的控制中心。因此本文着重讨论在控制模型驱动下的工作流引擎架构设计,并对三个主要模型进行详细说明如图。

  1.控制模型设计

  > 完成任务接口

  该接口主要判断任务是否完成,有两个输入参数:任务ID和完成人ID。在函数内部,首先调用接口GetTaskStatus判断任务是否满足完成条件,如果不满足完成条件退出当前函数,并返回0。否则,使用接口SetTaskComplete完成当前任务并调用CreateNextTask生成新任务。若生成的后继任务是自动处理任务,则递归调用FinishCurTask处理。函数所调用的三个接口均由信息模型类EngineInfo所提供。

  > 回退任务接口

  该接口主要判断任务是否满足回退条件,有四个输入参数:任务ID、完成人ID、回退实体ID和每个实体所回退到的活动ID;在函数内部,调用接口GetTaskStatus判断任务是否满足回退条件,如果不满足回退条件退出当前函数,并返回0。否则,使用接口SetTaskComplete完成当前任务并调用CreateBackTask生成回退任务。函数所调用的三个接口均由信息模型类EngineInfo所提供。

  > 取得任务接口

  该函数响应外部请求“取得任务”,有两个输入参数:人员ID和任务状态代码;在函数内部,根据任务状态分别调用了EngineInfo类的两个接口函数GetWaitingTask或GetTaskByStatus用来取得用户的待处理任务和用户已挂起、处理中和已处理的任务。

  > 挂起/恢复任务接口

  该函数响应外部请求“挂起/恢复任务”,有两个输入参数:任务ID与人员ID;在函数内部,通过调用EngineInfo类接口SetTaskStatus设置当前任务状态来实现。

  > 启动业务流程接口

  该函数响应外部请求“启动业务流程”,有两个输入参数:业务流程ID和人员ID;在函数内部,通过调用EngineInfo的接口CreateWfInstance创建工作流实例并生成工作流实例的第一个活动的任务,并返回任务ID。然后调用控制模型EngineController类的FinshCurTask函数处理由接口CreateWfInstance生成的开始任务,以便生成第一个由人处理的交互式任务。

  2.信息模型设计

  > 生成当前任务的后继任务接口

  该函数响应请求“生成当前任务的后继任务”,函数有两个参数:人员ID和任务ID;在函数内部,需要根据后继活动与当前活动之间的关系分三种情况来考虑:顺序关系、或分支关系、与分支关系。

  > 生成当前任务的回退任务接口

  回退任务接口是我们工作流引擎设计中的最大特色,以前的工作流引擎不能随意实现任务的回退功能,这在实际的业务流程操作过程中带来很多不便。我们结合检修管理流程 的实际操作而设计了任务回退功能。该函数响应请求“生成当前任务的回退任务”,有四个参数:任务ID、完成人ID、回退实体ID和每个实体所回退到的活动ID;在函数内部实现时,根据当前活动与回退活动之间携带实体的关系分两种情况来考虑:当前活动的任务与回退活动的任务所携带的实体相同时,直接对回退活动生成回退任务;回退活动任务所携带的实体为当前活动任务的一部分,这又有两种情况:若要对所有任务实体进行回退,则分别对每个回退活动生成回退任务;若要对部分任务实体进行回退,对回退的实体生成相应的回退任务,由于存在未回退的实体,因此要生成状态为Appending的“与汇聚”任务,其前驱任务列表中包含未回退的任务ID;另一种情况是在顺序关系中,前驱任务的实体传递到当前任务,并且当前任务也生成了新的实体的情况。此时对回退活动生成回退任务,该任务携带的实体为当前活动任务实体中与回退活动实体名相同的实体。

  3.表单文档模型设计

  与其他工作流管理系统中的表单文档相比,我们主要在安全性上做出了更好的改进。每个用户只能添加或审阅自己对应的部分。而且对数据库中的表单生成的正式文档进行“归档”。生成不可修改的HTML文件,然后统一管理。

  根据输入参数文档实体名在文档实体名与文档模板的对应关系表中查找到该文档对应的模板名称,然后打开该模板,并在模板已定义书签的位置插入表单相应字段内容即可生成正式文档。Office组件提供了在模板指定位置插入数据的接口函数,通过指定书签名与表单对应字段同名,就可以在已定义书签处插入对应的内容。

  信息模型在何时调用该接口函数呢?在活动表中有两个字段EntityTableName和EntityTableType联合定义了文档的创建与分支转发规则,而该表中的字段EntityCreated定义了文档的归档时机,该字段为文档实体的归档活动ID。信息模型在CreateNextTask接口的内部实现过程中,如果判断该任务的活动EntityCreated字段为1,则调用文档模型类的接口进行归档。

  设备检修管理系统的设计

  设备检修管理系统是根据某公司的具体业务设计的,我们把系统设计为:流程管理模块,文档管理模块,企业管理模块,系统管理模块。

  1.流程管理模块

  流程管理模块中有个人工作区,用户登陆系统后,首先进入该区域,接收任务,处理后再转发给下一位执行者,直到该流程结束。在流程管理模块中,主要是流程管理员监视流程的进度情况,在该区域每个流程的详细信息都会显示出来,可以查看文档审批情况,以及文档内容。在设备管理问题中,主要是点检站部门负责查看近期设备出现的问题,然后针对某个问题启动检修流程。整个模块的设计都突出方便性原则,让用户以最简捷的方式接受并处理完任务,并且可以按照各种条件实现复杂查询,可以对流程和其中的文档实现同步管理。

  2.文档管理模块

  文档管理模块分别进行各种文档的查询和汇总功能。“文档管理员”根据文档类型列表和查询条件,可以查询到文档列表和文档详细内容。在数据查询模块中,可以进行“委托项目查询”,“项目预算统计”,“固定项目结算”,“维检大包计算”等内容的详细信息查询。文档管理模块的设计就是给系统提供辅助性的功能。让用户对文档进行统一管理。这样既条理清楚,又提高了安全性,我们可以查到系统运行中处理的每一个表单的具体内容。

  3.企业管理模块

  企业管理模块除了对一些常见的企业部门的添加、删除,人员的管理和人员角色的配置之外,我们增添了给企业部门配置维护单位,这是设备检修管理中必须要有的一项功能。 还有配置相应的部门人员及企业公章,这是这个模块的特色,它可以实现对流程中审批完的文档进行电子盖章和个人签字,这样提高了文档安全性,而所盖的公章就是在企业管理模块进行统一配置的。

更多专题
印尼政府公布第三波经济振兴方案

印尼政府继本年9月9日及9月29日分别宣告实施第一、二波之经济政策方案后,续于昨(7)日再公布第三波经济振兴...

让城市转型步伐加速度

我国许多大城市都在面临转型的压力,都不同程度地出现了城市制造成本上升,制造业空心化的现象,而总部经济...