4 工作流治理系统功能分析 前面已经介绍过,一个完整的通用工作流治理系统应当包括七个部件,这里限于篇幅的原因,只对工作流治理系统的核心部分:工作流执行子系统和工作流引擎进行分析。
图1表示工作流执行子系统的用例图。活动者包括WfClient(工作流客户端)、Monitor(工作流监控端)、DefinitionDB(工作流定义数据库)、EnactmentDB(工作流运行数据库)、OrganizationDB(组织机构数据库)、ApplicationDB(应用程序数据库)、WorkItemDB(工作项数据库)、ConfigFile(工作流系统配置文件)。这里,WfClient 作为接收用户交互的界面部分,将用户所作的行为,依照固定的规则,将请求送给工作流执行子系统进行处理。Monitor 作为接收系统治理员交互的界面部分,将系统治理员对系统作出的调整,发送给工作流执行子系统进行处理。其余的DefinitionDB 等活动者,负责将工作流执行子系统每一步的操作与状态记录到数据库中, 以永久保存。用例包括ResourceLocate ( 资源定位)、EngineContainer ( 引擎容器)、ProcessDefLoad(定义装载)、ProcessMonitor(过程监控)、Util(公用程序)。其中,EngineContainer 通过ResourceLocate 定位所有系统所用到的资源,表EngineContainer 用例使用ResourceLocate 用例,用带有箭头的实线表示。EngineContainer 不直接与用户交互,活动者对工作流的参与都是通过ProcessMonitor 这个工作流执行子系统的入口来进行的。EngineContainer 通过ProcessDefLoad 将现有的工作流定义装入,这样才能运行该工作流,EngineContainer 用例与ResourceLocate 用例之间是使用关系。
图2表示工作流引擎的用例图。其中的活动者包括EngineManager(引擎治理器)与LogFiles(日志文件)。EngineManager 负责控制工作流中所有元素的状态,是工作流调度的核心。LogFiles 阶段性将固定格式的文字记录为日志,用以保存。这里的用例有ProcessControl(控制过程实例)、TransitionControl(控制转移)、ActivityControl(控制活动)、WorkItemControl(控制工作项)、DanamaticModify(动态修改流程)、CreateLogfile(创建日志文件)。EngineManager 根据一定的条件,通过ProcessControl、TransitionControl、ActivityControl、WorkItemControl 与DanamaticModify,控制工作流各个组成元素的状态,以达到控制工作流的目的。 c.过程监督
图3表示过程监督用例图。其中的活动者包括EnactmentDB(工作流运行数据库)与engineContainer(引擎容器)。用例有EngineQuery(对引擎的查询)、ProcessDefQuery(对过程定义信息的查询)、EngineContainerQuery(引擎容器运行状况的查询)、ProcessInstanceQuery(对过程实例进行查询)、ActivityInstanceQuery(对活动实例进行查询)、WorkItemQuery(对工作项进行查询)、TransitionQuery(对转移信息查询)。 这里仅对用例ProcessInstanceQuery 进行具体功能分析,对其余用例的分析方法与之类似。
图4 表示处理请求用例的顺序图。图中五个方框分别表示五个对象:ProcessMonitor、EngineManager、Engine、EntactmentDB、Logfiles。这个用例是由ProcessMonitor 接收用户操作,再将这些操作转换成固定的请求,发送给引擎执行而产生的。
图5表示对应于处理请求用例的协作图。这个用例是由ProcessMonitor 接收用户操作,再将这些操作转换成固定的请求,发送给引擎执行而产生的。这个协作图表现了处理请求用例所涉及的五个相关对象之间相互协作的关系。
图6 表示过程实例的状态机视图。从图中可以看出,一个工作流定义的过程实例,在运行时可能有五种不同的过程,分别为初始状态、就绪状态、运行状态、挂起状态与结束状态。 一个过程实例在初始时,均为初始状态(initial state)。根据需要,某个过程实例被创建(create),成为就绪状态(Ready)。随后,用户可以根据需要,选择就绪状态的过程实例进行启动(start),被启动的过程实例的状态就变为运行状态(Running)。处于就绪状态和运行状态的过程实例都可以通过取消操作(abort)转变为结束状态(end state)。处于运行状态的过程实例,通过挂起操作(hold),可以转变为暂时停止的挂起状态(Holded),同时处于挂起状态的过程实例也可以通过运行操作(run)转变为运行状态。挂起状态与结束状态的区别在于挂起状态并不释放所占用的资源,因而是可以恢复的。最后,一个处于运行状态的过程实例假如运行完毕,通过完成操作(finish)转变为结束状态。 状态机可以用于描述用户界面、设备控制和其它交互式子系统。它们还可用于在生命期中经历了若干特定阶段,每个阶段拥有非凡的行为的对象。 5.4 创建活动视图活动视图是用于显示执行某个计算过程中的运算活动的状态机的一种非凡形式。活动状态代表了运算执行的状态:流程的步骤或操作的执行。活动图描述了顺序和并发活动分组。活动视图表达为活动图。 活动图包含活动状态。活动状态表现了过程中语句的执行或工作流中活动的运行。与一般等待状态等待事件不同,活动状态等待的是运算的结束。当活动结束时,执行处理到图中的下一个活动。前一个活动结束时,活动图中的结束迁移被激发。活动状态通常没有外部事件的迁移,但它们可以由外围状态的事件而被取消。 在活动图中,用左右两段是圆弧的长方形表示活动,用较粗的横线表示活动的分发,用带有箭头的线表示活动处理的先后顺序。
图7 表示用户的操作活动图。用户在使用系统所提供的功能之前,首先应当登录系统,也就是说,操作的第一步是登录(login)。登录之后,用户可以在三种操作中任选一个执行:选择过程定义(choose process define)、选择过程实例(choose process instance)以及选择工作项(choose workitem)。这三个活动的执行,没有先后顺序,完全由用户进行选择。 当用户选择了过程定义后,可以创建一个所选的过程定义的实例,也就是执行创建过程定义活动(create process define);当用户选择了一个过程实例后,根据这个过程实例状态的不同,可以对这个过程实例进行终止(abort)、启动(start)、挂起(hold)与运行(run)等操作,这些操作的执行是没有先后顺序的;当用户选择了一个工作项后,可以执行这个工作项,也就是做这个工作项的内容(do workitem)。 根据以上使用用例视图、交互视图、状态机视图以及活动视图对工作流治理系统所应具有的功能层次进行的分析,对通用工作流治理系统要达到的目标,应当有了一个较为清楚的熟悉。而这些熟悉与理解,将为进一步的设计,奠定良好的基础。 编辑推荐专题:UML统一建模语言(责任编辑:铭铭)新闻热点
疑难解答