工作流引擎详细设计说明书(GB8567——88).doc_第1页
工作流引擎详细设计说明书(GB8567——88).doc_第2页
工作流引擎详细设计说明书(GB8567——88).doc_第3页
工作流引擎详细设计说明书(GB8567——88).doc_第4页
工作流引擎详细设计说明书(GB8567——88).doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安华信息工作流引擎详细设计说明书2012-3-21该文档主要描述工作流引擎的实现细节。目录1引言41.1编写目的41.2背景41.3定义41.4参考资料42 程序详细设计52.1 工作流运行时(WorkflowRuntime)52.1.1 程序概述52.1.2 功能设计52.1.3 外部接口112.1.4 尚未解决的问题122.2工作流设计器(WorkflowDesigner)122.2.1 程序概述122.2.2 功能设计122.2.3 外部接口162.2.4 尚未解决的问题171.3公共对象171.4数据库结构说明202.4.1地区表202.4.2业务附件文件202.4.3流程业务数据包202.4.4流程业务数据包定义212.4.5流程实例表212.4.6流程日志222.4.7已处理消息队列表222.4.8待处理消息队列表232.4.9流程状态结点232.4.10流程状态参与角色关系表232.4.11流程模板表242.4.12流程模板与业务类别、险类标识关系表242.4.13日志项表242.4.14状态操作附加规则252.4.15流程状态后活动252.4.16流程状态前活动262.4.17流程状态表单信息262.4.18流程状态操作表262.4.19流程状态操作消息表2728详细设计说明书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类l 命名空间:AHIT.WorkflowEnginel 关键字: sealedl 类职责: 确定工作流模板:根据业务类型(1核保、2核赔)和险类标志(1农险、2非农险)确定使用的工作流模板 创建工作流实例:根据工作流模板表,状态结点表,结点的角色、操作、规则表创建工作流实例表和流程日志表(如果已加载日志服务,调用日志服务)。 加载流程业务数据包加载的业务数据包必须符合流程业务数据包定义表的规则,否则触发异常。 加载业务附加文件 获取工作流实例任务列表包括待处理任务列表、已处理任务列表、逾期任务列表 获取单体工作流实例主要返回指定实例的流程业务数据包 工作流操作从待处理任务列表选择要处理的流程实例取流程状态参与角色关系表判断操作的流程实例结点是否有权限取状态操作附加规则表判断操作的流程实例结点的规则(由规则引擎实现)在符合规则的前提下取流程状态操作表判断结点的下一步操作将要更改工作流实例的操作添加至消息队列(交由消息队列服务处理)l 字段及属性:字段名称字段描述字段类型备注OperatingInstanceCount当前实例数量Int静态存储StartTime开启时间DateTime静态存储OperatingServiceCount当前服务数量Int静态存储l 方法:a) 获得待处理任务列表Public List GetInstanceList(string operatorNumber);(参数是否加业务类型、险类标识)根据操作者的ID,先取流程状态参与角色关系表取全部可操作的节点信息,排除特例表的不应自己操作的节点信息,然后内关联流程实例表的当前节点字段,再左关联流程状态节点表的主键,得出所有待操作的实例信息及节点状态并返回。b) 根据操作员编号、实例编号获得待处理任务的详细信息Class InstanceColletionT_FlowInstance flowInstance;T_FlowBizDataBag flowBizDataBag;List operationMessageList;Public InstanceColletion GetInstance(string instanceNumber,string operatorNumber)根据instanceId获取数据包BizDataBag、单体WorkflowInstance、还有可执行的操作集List这三者组合而成的大对象InstanceColletion。c) 将流程业务数据包传给规则引擎返回可操作的流程列表Public List GetOperations(BizDataBag bag)根据RecentNode和取出下一步可进行的操作列表,然后将Bag传入规则引擎,返回操作代码,再关联操作表的主键得到操作的List。d) 创建工作流实例Public bool CreateInstance(BizDataBag bag,string bizNumber,string templateCode, attachFile file)根据传入的数据包、业务单据号、模板编号创建实例,组装一个Message对象,传入调用MessageService. AddToMessageQueue(T_FlowMessage QueueWaited 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);l 限制及约束:WorkflowRuntime是一个密封类,没有派生者,以单件模式创建,随Windows Service启动,运行时常驻内存。2. MessageService类l 命名空间:AHIT.WorkflowEnginel 关键字:staticl 类职责: 将消息添加至消息队列(物理表) 轮询消息队列并处理Task 判断某一具体Task是否合法l 字段及属性:无。l 方法说明:a) public static Void AddToMessageQueue(T_FlowMessageQueuqWaited msg)将Message加入引擎待处理消息表。b) public static void ExecuteTask()循环访问待处理消息表,取时间戳最早的一条记录处理,共处理三件事情,第一是增加流程状态操作信息表的记录,二是更新实例表,三是写日志项表,在一个事务中控制,当处理结束时同时更新两张表,即在待处理消息表中删除记录和在已处理消息表中增加记录,若事务完成则回到循环体继续访问待处理消息表。c) private static bool JudgeTask(T_FlowMessageQueuqWaited msg)利用message携带的实例信息判断该实例的当前操作是否满足要求。如防止重复操作。l 限制及约束:无。3. LogService类l 命名空间:AHIT.WorkflowEnginel 关键字:staticl 类职责: 填写日志在创建流程实例时写流程日志在操作工作流结点时写日志项 查看日志列表 查看单体日志l 字段及属性:无l 方法:Public static void WriteFlowLog(T_FlowLog flowLog)写流程日志。Public static void WriteLogItem(T_LogItem logItem) 写日志项Public static List GetLogs(string instanceCode)根据实例编码取该实例的操作日志列表。Log为流程日志和日志项的组合类Public static Log GetLog(string logItemNumber)根据日志编码主键访问单体日志。Log为流程日志和日志项的组合类l 限制及约束:写日志受Task执行成功与否的制约,被包含在ExecuteTask()所触发的事务里。4. ExceptionHelper类l 命名空间:AHIT.WorkflowEnginel 关键字:staticl 类职责: 抛出自定义异常l 字段及属性:无l 方法:Public static string GetCustomizeException(string exceptionCode)l 限制及约束:无。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 程序概述工作流设计器是定义工作流模板、流程节点、操作与规则的工具,是对静态定义的描述。2.2.2 功能设计1. TemplateConfiguration类l 命名空间:AHIT.WorkflowDesignerl 关键字:无l 类职责: 根据业务类型(核保、核赔)和险类标识(是否农险)创建不同的双核工作流模板 设置工作流模板的流程业务数据包定义 构建工作流模板的各个结点 指定各个结点的权限 设置各个结点的级别、关系 设置结点之间的流转规则 指定各个结点的流程状态前活动事件和状态后活动事件 指定各个结点的流程状态表单信息(结点对应审批窗体显示信息实体类名,运行期从流程业务数据包读取)l 方法:创建工作流模板方法Public bool CreateFlowTemplate(Template flowTemplate);传入Template公共类,内部调用“其它模板配置相关类“构建工作流模板、节点、操作、规则等。其它模板配置相关类: 2. T_FlowTemplate类(1) 根据模板编号获取模板实体Public T_FlowTemplate GetFlowTemplate(string flowTemplateNumber);(2) 根据业务类型、险类取模板实体Public T_FlowTemplate GetFlowTemplate(string businessType, string classFlag);(3) 创建流程模板Public bool AddFlowTemplate(T_FlowTemplate flowTemplate);3. T_FlowStatusNode类(1) 根据模板编号取状态结点列表Public List GetFlowStatusNodeList(string templateNumber);(2) 根据结点编号取状态结点实体Public T_FlowStatusNode GetFlowStatusNode(string nodeNumber);(3) 添加状态结点实体Public bool AddFlowStatusNode(T_FlowStatusNode flowStatusNode);4. T_FlowStatusNodeRole类(1) 根据角色、状态结点编号取流程状态参与角色关系表实体Public T_FlowStatusNodeRole GetFlowStatusNodeRole(string RoleNumber, string FlowStatusNodeNumber);(2) 也可以根据用户名,暂不考虑(3) 添加流程状态参与角色关系表Public bool AddFlowStatusNodeRole(T_FlowStatusNodeRole flowStatusNodeRole);5. T_StatusOperation类(1) 根据状态结点编号取流程状态操作实体Public T_StatusOperation GetStatusOperation(string flowStatusNodeNumber);(2) 添加流程状态操作实体Public bool AddStatusOperation(T_StatusOperation statusOperation);6. FlowBizDataBagDefinition类(1) 添加流程业务数据包定义Public bool AddFlowBizDataBagDefinition(T_FlowBizDataBagDefinition dataBagDefini tion)(2) 根据模板编号取数据包定义实体Public List GetFlowBizDataBagDefinition(string flowTemp lateNumber);7. T_StatusBeforeAction(1) 根据模板编号取流程状态前活动实体列表List GetStatusBeforeAction(string flowTemplateNumber);(2) 添加流程状态前活动实体Public bool Add StatusBeforeAction(T_ StatusBeforeAction statusBeforeAction);8. T_StatusAfterAction(1) 根据模板编号取流程状态后活动实体列表List GetStatusAfterAction(string flowTemplateNumber);(2) 添加流程状态后活动实体Public bool AddStatusAfterAction(T_ StatusAfterAction statusAfterAction);9. T_StatusFormInfo(1) 根据状态结点编号取流程状态表单信息实体T_StatusFormInfo GetStatusFormInfo(string flowStatusNodeNumber);(2) 添加流程状态表单信息实体Public bool AddStatusFormInfo(T_StatusFormInfo statusFormInfo);1. Designer类(Version 1.1 的内容)l 命名空间:AHIT.WorkflowDesignerl 关键字:无l 类职责: 以图形化的方式配置工作流模板3. RuleDefinition类l 命名空间:AHIT.WorkflowDesignerl 关键字:无l 类职责: 创建并保存规则 修改并保存规则 停用规则规则定义相关类a) RuleDefinition类(1) 调用规则引擎设计窗体Public string CallRuleEngine(Rule rule);传入Rule类(内含规则表达式及规则涉及到的实体对象),返回规则引擎编号(2) 保存规则引擎编号,调用T_StatusActionRule类Public bool SaveRule(string ruleNumber);b) T_StatusActionRule类(1) 根据流程状态操作编号取状态操作附加规则(主要取规则引擎编号)Public T_StatusActionRule GetStatusActionRule(string statusOperationNumber);(2) 添加状态操作附加规则Public bool AddStatusActionRule(T_StatusActionRule statusActionRule);2.2.3 外部接口1. 调用的外部接口(External Interface)a) 获取系统级人员信息b) 获取系统级角色信息c) 获取地域字典描述d) 获取险种字典描述e) 定义规则2. 被调用的外部接口(Public Interface)无。2.2.4 尚未解决的问题1. 与规则引擎的衔接2. 子流程的需求1.3 公共对象1、Template类字段名称字段描述字段类型备注FlowTemplateNumber流程模板编号Int静态存储Name流程模板名称String静态存储Version流程模板版本String静态存储FlowTemplateType流程模板类型String静态存储StopFlag停用标识bool静态存储FlowTemplateRelationNumber流程模板地区关系编号int静态存储BusinessType业务类型String静态存储RiskFlag险类标识string静态存储FlowBizDataBagDefinitionNumber流程业务数据包定义编号Int静态存储DataBagDefinitionXSD流程业务数据包定义内容xml静态存储RiskCodeNumber险种编号String静态存储List结点集合List静态存储2、Node类字段名称字段描述字段类型备注FlowStatusNodeNumber流程状态节点编号int静态存储FlowTemplateNumber流程模板编号int静态存储StatusName流程状态节点名称String静态存储StatusFormInfoNumber流程状态表单信息编号Int静态存储FormClassName流程状态表单信息类名string静态存储FlowStatusNodeRoleNumber流程状态参与角色关系编号int静态存储RoleNumber角色编号int静态存储UserNumber用户编号int静态存储List流程状态操作集合List静态存储3、Operation类字段名称字段描述字段类型备注StatusOperationNumber流程状态操作编号int静态存储FlowStatusNodeNumber流程状态节点编号int静态存储TargetStatusNodeNumber目标状态节点编号int静态存储OperationName操作员姓名varchar静态存储List状态操作附加规则集List静态存储4、Rule类字段名称字段描述字段类型备注StatusActionRuleNumber状态操作附加规则编号int静态存储StatusOperationNumber状态操作编号int静态存储RuleText规则表达式varchar静态存储FlowBizDataBagXml数据包存储对象XML(一个Rule在规则引擎只能对应一个实体对象)Xml静态存储1.4 数据库结构说明2.4.1地区表T_Area 字段名称字段类型字段长度是否必填是否主键字段描述AreaNumberint4是是地区编号2.4.2业务附件文件T_BizAttachFile字段名称字段类型字段长度是否必填是否主键字段描述BizAttachFileNumberint4是是业务附件文件编号FlowInstanceNumberint4否否流程实例编号FileNamevarchar200否否文件名FileContentvarchar500否否文件内容FileSizedecimal9否否文件大小2.4.3流程业务数据包T_FlowBizDataBag字段名称字段类型字段长度是否必填是否主键字段描述FlowBizDataBagNumberint4是是流程业务数据包编号FlowInstanceNumberint4否否流程实例编号FlowBizDataBagDefinitionNumberint4否否流程业务数据包定义编号FlowBizDataBagXMLxml-1否否流程业务数据包内容2.4.4流程业务数据包定义T_FlowBizDataBagDefinition字段名称字段类型字段长度是否必填是否主键字段描述FlowBizDataBagDefinitionNumberint4是是流程业务数据包定义编号DataBagDefinitionXSDxml-1否否流程业务数据包定义内容RiskCodeNumberint4否否险种编号FlowTemplateNumberint4否否流程模板编号2.4.5流程实例表T_FlowInstance字段名称字段类型字段长度是否必填是否主键字段描述FlowInstanceNumberint4是是流程实例编号FlowTemplateNumberint4否否流程模板编号ParentFlowInstanceNumberint4否否父流程实例编号StartTimedatetime8否否开始时间EndTimedatetime8否否终止时间LastDealTimedatetime8否否最后处理日期AreaNumberint4否否地区编号RiskCodeNumberint4否否险种编号Amountdecimal9否否金额EndFlagbit1否否结束标识CurrentStatusNodeNumberint4否否当前状态结点编号BusinessNumberint4否否业务号(如投保单号,赔款计算书号)2.4.6流程日志T_FlowLog字段名称字段类型字段长度是否必填是否主键字段描述FlowLogNumberint4是是流程日志编号FlowInstanceNumberint4否否流程实例编号OperationDatedatetime8否否操作日期2.4.7已处理消息队列表T_FlowMessageQueueDone字段名称字段类型字段长度是否必填是否主键字段描述FlowLogNumberint4是是流程日志编号FlowInstanceNumberint4否否流程实例编号OperationDatedatetime8否否操作日期2.4.8待处理消息队列表T_FlowMessageQueueWaited字段名称字段类型字段长度是否必填是否主键字段描述StatusOperationMessageNumberint4是是未处理流程状态操作消息队列编号StatusOperationMessageInQuequeNumberint4否否状态操作信息编号OperationDatedatetime8否否操作日期2.4.9流程状态结点T_FlowStatusNode字段名称字段类型字段长度是否必填是否主键字段描述FlowStatusNodeNumberint4是是流程状态节点编号FlowTemplateNumberint4否否流程模板编号StatusNamevarchar50否否流程状态节点名称2.4.10流程状态参与角色关系表T_FlowStatusNodeRole字段名称字段类型字段长度是否必填是否主键字段描述FlowStatusNodeRoleNumberint4是是流程状态参与角色关系编号FlowStatusNodeNumberint4否否流程状态节点编号RoleNumberint4否否角色编号UserNumberint4否否用户编号2.4.11流程模板表T_FlowTemplate字段名称字段类型字段长度是否必填是否主键字段描述FlowTemplateNumberint4是是流程模板编号Namevarchar50否否流程模板名称Versionvarchar50否否流程模板版本FlowTemplateTypevarchar50否否流程模板类型StopFlagbit1否否停用标识2.4.12流程模板与业务类别、险类标识关系表T_FlowTemplateRelation字段名称字段类型字段长度是否必填是否主键字段描述FlowTemplateAreaRiskCodeNumberint4是是流程模板地区关系编号BusinessTypevarchar50否否业务类型 1 核保 2 核赔RiskFlagvarchar50否否险类标识 1 农险 2 非农险FlowTemplateNumberint4否否流程模板编号2.4.13日志项表T_LogItem字段名称字段类型字段长度是否必填是否主键字段描述LogItemNumberint4是是日志项编号FlowLogNumberint4否否流程日志编号StatusOperationMessageNumberint4否否状态操作信息编号ItemTimedatetime8否否项目时间StatusCommentvarchar200否否状态注释2.4.14状态操作附加规则T_StatusActionRule字段名称字段类型字段长度是否必填是否主键字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论