当前位置:文档之家› 工作流引擎详细设计说明书(GB8567——88)

工作流引擎详细设计说明书(GB8567——88)

安华信息工作流引擎详细设计说明书2012-3-21[该文档主要描述工作流引擎的实现细节。

]目录1引言 (4)1.1编写目的 (4)1.2背景 (4)1.3定义 (4)1.4参考资料 (4)2 程序详细设计 (5)2.1工作流运行时(W ORKFLOW R UNTIME) (5)2.1.1 程序概述 (5)2.1.2 功能设计 (5)2.1.3 外部接口 (11)2.1.4 尚未解决的问题 (12)2.2工作流设计器(W ORKFLOW D ESIGNER) (12)2.2.1 程序概述 (12)2.2.2 功能设计 (12)2.2.3 外部接口 (16)2.2.4 尚未解决的问题 (17)1.3公共对象 (17)1.4数据库结构说明 (21)2.4.1地区表 (21)2.4.2业务附件文件 (21)2.4.3流程业务数据包 (21)2.4.4流程业务数据包定义 (22)2.4.5流程实例表 (22)2.4.6流程日志 (23)2.4.7已处理消息队列表 (23)2.4.8待处理消息队列表 (24)2.4.9流程状态结点 (24)2.4.10流程状态参与角色关系表 (24)2.4.11流程模板表 (25)2.4.12流程模板与业务类别、险类标识关系表 (25)2.4.13日志项表 (25)2.4.14状态操作附加规则 (26)2.4.15流程状态后活动 (26)2.4.16流程状态前活动 (27)2.4.17流程状态表单信息 (27)2.4.18流程状态操作表 (27)2.4.19流程状态操作消息表 (28)详细设计说明书1引言1.1编写目的工作流引擎的开发人员。

1.2背景说明:a.本系统名称:工作流引擎。

b.本系统概要设计工作由秦超完成,详细设计由王思远完成,刘云峰执行开发任务。

1.3定义Workflow 工作流Runtime 运行时Designer设计器MessageQueue 消息队列1.4参考资料列出有关的参考资料,如:a.本项目的经核准的计划任务书或合同、上级机关的批文;b.属于本项目的其他已发表的文件;c.本文件中各处引用到的文件资料,包括所要用到的软件开发标准。

列出这些文件的标题、文件编号、发表日期和出版单位,说明能够取得这些文件的来源。

2 程序详细设计2.1 工作流运行时(WorkflowRuntime)2.1.1 程序概述工作流运行时是工作流概念的核心部分,作用于工作流服务生命周期的全部场景,挂接各项工作流的配套服务,如工作流实例状态跟踪、记录轨迹、消息分发等。

2.1.2 功能设计1.WorkflowRuntime类●命名空间:AHIT.WorkflowEngine●关键字:sealed●类职责:✓确定工作流模板:根据业务类型(1核保、2核赔)和险类标志(1农险、2非农险)确定使用的工作流模板✓创建工作流实例:根据工作流模板表,状态结点表,结点的角色、操作、规则表创建工作流实例表和流程日志表(如果已加载日志服务,调用日志服务)。

✓加载流程业务数据包加载的业务数据包必须符合流程业务数据包定义表的规则,否则触发异常。

✓加载业务附加文件✓获取工作流实例任务列表包括待处理任务列表、已处理任务列表、逾期任务列表✓获取单体工作流实例主要返回指定实例的流程业务数据包✓工作流操作从待处理任务列表选择要处理的流程实例取流程状态参与角色关系表判断操作的流程实例结点是否有权限取状态操作附加规则表判断操作的流程实例结点的规则(由规则引擎实现)在符合规则的前提下取流程状态操作表判断结点的下一步操作将要更改工作流实例的操作添加至消息队列(交由消息队列服务处理)●字段及属性:●方法:a)获得待处理任务列表Public List<WorkflowInstance> GetInstanceList(string operatorNumber);(参数是否加业务类型、险类标识)根据操作者的ID,先取流程状态参与角色关系表取全部可操作的节点信息,排除特例表的不应自己操作的节点信息,然后内关联流程实例表的当前节点字段,再左关联流程状态节点表的主键,得出所有待操作的实例信息及节点状态并返回。

b)根据操作员编号、实例编号获得待处理任务的详细信息Class InstanceColletion{T_FlowInstance flowInstance;T_FlowBizDataBag flowBizDataBag;List<T_StatusOperationMessage> operationMessageList;}Public InstanceColletion GetInstance(string instanceNumber,string operatorNumber)根据instanceId获取数据包BizDataBag、单体WorkflowInstance、还有可执行的操作集List<Operation>这三者组合而成的大对象InstanceColletion。

c)将流程业务数据包传给规则引擎返回可操作的流程列表Public List<T_StatusOperation> GetOperations(BizDataBag bag) 根据RecentNode和取出下一步可进行的操作列表,然后将Bag传入规则引擎,返回操作代码,再关联操作表的主键得到操作的List。

d)创建工作流实例Public bool CreateInstance(BizDataBag bag,string bizNumber,string templateCode, attachFile file)根据传入的数据包、业务单据号、模板编号创建实例,组装一个Message对象,传入调用MessageService. AddToMessageQueue(T_FlowMessageQueueWaited msg)。

e)根据传入的instanceNumber 反持久化Workflow实例。

public bool DePersistentInstance(string instanceNumber)工作流运行时相关类a) T_FlowBizDataBag类(1) 验证业务数据包,调用T_FlowBizDataBagDefinition类的相关方法进行验证Bool ValidateFlowBizDataBag(string flowInstanceNumber);(2) 加载业务数据包Bool AddFlowBizDataBag(T_FlowBizDataBag bizDataBag);b) T_BizAttachFile类(1) 加载文件Bool AddBizAttachFile(T_BizAttachFile bizAttachFile);c) T_StatusOperationMessage类(1) 添加流程状态操作消息Bool AddStatusOperationMessage(T_StatusOperationMessage statusOperationMess age);(2) 根据实例编号导入流程状态操作消息Bool GetStatusOperationMessage(string flowInstanceNumber);●限制及约束:WorkflowRuntime是一个密封类,没有派生者,以单件模式创建,随Windows Service启动,运行时常驻内存。

2.MessageService类●命名空间:AHIT.WorkflowEngine●关键字:static●类职责:✓将消息添加至消息队列(物理表)✓轮询消息队列并处理Task✓判断某一具体T ask是否合法●字段及属性:无。

●方法说明:a)public static Void AddToMessageQueue(T_FlowMessageQueuqWaitedmsg)将Message加入引擎待处理消息表。

b)public static void ExecuteTask()循环访问待处理消息表,取时间戳最早的一条记录处理,共处理三件事情,第一是增加流程状态操作信息表的记录,二是更新实例表,三是写日志项表,在一个事务中控制,当处理结束时同时更新两张表,即在待处理消息表中删除记录和在已处理消息表中增加记录,若事务完成则回到循环体继续访问待处理消息表。

c)private static bool JudgeTask(T_FlowMessageQueuqWaited msg)利用message携带的实例信息判断该实例的当前操作是否满足要求。

如防止重复操作。

●限制及约束:无。

3.LogService类●命名空间:AHIT.WorkflowEngine●关键字:static●类职责:✓填写日志在创建流程实例时写流程日志在操作工作流结点时写日志项✓查看日志列表✓查看单体日志●字段及属性:无●方法:Public static void WriteFlowLog(T_FlowLog flowLog)写流程日志。

Public static void WriteLogItem(T_LogItem logItem)写日志项Public static List<Log> GetLogs(string instanceCode)根据实例编码取该实例的操作日志列表。

Log为流程日志和日志项的组合类Public static Log GetLog(string logItemNumber)根据日志编码主键访问单体日志。

Log为流程日志和日志项的组合类●限制及约束:写日志受Task执行成功与否的制约,被包含在ExecuteTask()所触发的事务里。

4.ExceptionHelper类●命名空间:AHIT.WorkflowEngine●关键字:static●类职责:✓抛出自定义异常●字段及属性:无●方法:Public static string GetCustomizeException(string exceptionCode)●限制及约束:无。

2.1.3 外部接口1.调用的外部接口(External Interface)a)获取系统级人员信息b)获取系统级角色信息c)将核赔后的业务状态传递至理赔子系统d)将核保后的业务状态传递至承保子系统e)获取地域字典描述f)获取险种字典描述g)获取规则引擎的判断结果2.被调用的外部接口(Public Interface)a)查看当前核保流程状态b)查看当前核赔流程状态c)查看流程轨迹2.1.4 尚未解决的问题1.与规则引擎的衔接2.子流程的需求2.2工作流设计器(WorkflowDesigner)2.2.1 程序概述工作流设计器是定义工作流模板、流程节点、操作与规则的工具,是对静态定义的描述。

相关主题