`
nlx0201
  • 浏览: 28876 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

工作流引擎开发系列三类设计

 
阅读更多

前面两章讲解了工作流的整体设计和数据库设计,从这章开始就讲类的设计。整体来说我们分为4个部分:数据库访问部分,Activity活动部分,业务接口部分,引擎核心部分和生成待办部分。

一. 数据库访问部分设计. 也就是工作流的底层访问部分。这部分主要是用来操作工作流数据库的,功能点上主要包括:工作流模板信息,工作流活动信息,工作流活动角色信息,工作流活动条件信息,工作流实例信息,工作流实例节点信息,工作流实例节点角色信息,工作流实例条件信息和审批日志。下面是具体接口的代码:

1. 工作流模板.

    public interface IWorkflowTemplateService
    {
        /// <summary>
        /// Get the entity of WorkflowTemplate by entity id
        /// </summary>
        /// <param name="workflow">entity id which is from XML and ready it by Foundation service</param>
        /// <returns>return the WorkflowTemplate result which only one</returns>
        WorkflowTemplateResult ReadByWorkflow(string workflow);

        /// <summary>
        /// Get the entity of WorkflowTemplate by template id
        /// </summary>
        /// <param name="workflow">the primary key which belongs to WorkflowTemplate</param>
        /// <returns>return the WorkflowTemplate result which only one</returns>
        WorkflowTemplateResult ReadByTemplateID(Guid templateID);

        /// <summary>
        /// Save the entity of WorkflowTemplate
        /// </summary>
        /// <param name="data">the entity of WorkflowTemplate</param>
        /// <returns>operation result which true or false</returns>
        [OperationContract]
        bool Save(WorkflowTemplateParameter data);

        /// <summary>
        /// Delete the entity of WorkflowTemplate
        /// </summary>
        /// <param name="templateID">The entity of primary key</param>
        /// <returns>return operation result which true or false</returns>
        bool Delete(Guid templateID);

        /// <summary>
        /// Update the entity of WorkflowTemplate
        /// </summary>
        /// <param name="data">the newer entity of WorkTemplate</param>
        /// <returns>return operation result which true or false</returns>
        bool Update(WorkflowTemplateParameter data);
    }

2. Activity活动

 public interface IWorkflowTemplateFlowService
    {
        /// <summary>
        /// Get the entity of WorkflowTemplateFlow by Flow id
        /// </summary>
        /// <param name="FlowID">the primary key of WorkflowTemplateFlow</param>
        /// <returns>return the WorkflowTemplateFlow result which only one</returns>
        WorkflowTemplateFlowResult ReadByFlowID(Guid FlowID);

        /// <summary>
        /// Get the entity of WorkflowTemplateFlow by workflow template id
        /// </summary>
        /// <param name="templateID">workflow template id which belongs to WorkflowTemplateFlowResult</param>
        /// <returns>return the WorkflowTemplateFlow array</returns>
        List<WorkflowTemplateFlowResult> ReadByTemplateID(Guid templateID);

        /// <summary>
        /// Get the first entity of WorkflowTemplateFlow by entity id
        /// </summary>
        /// <param name="templateID">workflow template id which belongs to WorkflowTemplate</param>
        /// <returns>return the first WorkflowTemplateFlow which only one</returns>
        [OperationContract]
        WorkflowTemplateFlowResult ReadFirstByTemplateID(Guid templateID);

        /// <summary>
        /// Get the closed entity of WorkflowTemplateFlow by Flow id
        /// </summary>
        /// <param name="FlowID">workflow template id which belongs to WorkflowTemplate</param>
        /// <returns>return the WorkflowTemplateFlow array</returns>
        List<WorkflowTemplateFlowResult> ReadNextByFlowID(Guid flowID);

        /// <summary>
        /// Get the entity of WorkflowTemplateFlowResult which is container by entity id
        /// </summary>
        /// <param name="templateID">the parent Flow id</param>
        /// <returns>return the WorkflowTemplateFlowResult result which only one</returns>
        WorkflowTemplateFlowResult ReadNoContainerNextByFlowID(Guid flowID);

        /// <summary>
        /// Get the entity of WorkflowTemplateFlowResult by entity id
        /// </summary>
        /// <param name="templateID">entity id which is from XML and ready it by Foundation service</param>
        /// <returns>return the WorkflowTemplateFlow array which contains the Flow's child</returns>
        List<WorkflowTemplateFlowResult> ReadContainerNextByFlowID(Guid flowID);

        /// <summary>
        /// Save the entity of WorkflowTemplateFlow
        /// </summary>
        /// <param name="data">the entity of WorkflowTemplateFlow</param>
        /// <returns>operation result which true or false</returns>
        Guid Save(WorkflowTemplateFlowParameter data);

        /// <summary>
        /// Delete the entity of WorkflowTemplateFlow
        /// </summary>
        /// <param name="templateID">The entity of primary key</param>
        /// <returns>return operation result which true or false</returns>
        bool Delete(Guid flowID);

        /// <summary>
        /// Delete the list of WorkflowTemplateFlow
        /// </summary>
        /// <param name="flowIDs">the list of keys</param>
        /// <returns>return opeation result which true or false</returns>
        bool DeleteList(List<Guid> flowIDs);
        /// <summary>
        /// Update the entity of WorkflowTemplateFlow
        /// </summary>
        /// <param name="data">the newer entity of WorkflowTemplateFlow</param>
        /// <returns>return operation result which true or false</returns>
        bool Update(WorkflowTemplateFlowParameter data);

        /// <summary>
        /// Delete the entity of WorkflowTemplateFlow
        /// </summary>
        /// <param name="templateID">The entity of primary key</param>
        /// <returns>return operation result which true or false</returns>
        bool SaveAndUpdateChild(WorkflowTemplateFlowParameter nowData, Guid childFlowID);
    }


3. 日志

   
    public interface IWorkflowRunLogService
    {
        /// <summary>
        /// Save the workflow run log
        /// </summary>
        /// <param name="data">the entity of WorkflowRunLog</param>
        /// <returns>return the operation record's primary key</returns>
        Guid Save(WorkflowRunLogParameter data);

        /// <summary>
        /// Get the list of WorkflowRunLogResult by workflow instance id
        /// </summary>
        /// <param name="instanceFlowID">the workflow instance id</param>
        /// <returns>return the WorkflowRunLogResult array</returns>
        List<WorkflowRunLogResult> ReadByFlowID(Guid flowID);

        /// <summary>
        /// Get the list of WorkflowRunLogResult by workflow instance id
        /// </summary>
        /// <param name="instanceFlowID">the workflow instance id</param>
        /// <returns>return the WorkflowRunLogResult array</returns>
        List<WorkflowRunLogResult> ReadByInstanceID(Guid instanceID);

        /// <summary>
        /// Get the entity of WorkflowRunLogResult by primary key
        /// </summary>
        /// <param name="logID">the primary key of WorkflowRunLogResult</param>
        /// <returns>return the one WorkflowRunLogResult</returns>
        WorkflowRunLogResult Read(Guid logID);

        /// <summary>
        /// Update the logs's status by flowID
        /// </summary>
        /// <param name="flowID">the key of WorkflowInstantceFlow</param>
        /// <param name="status">the target status</param>
        /// <returns>return true or false</returns>
        bool UpdateStatus(Guid flowID, RunStatus status);

        
        /// <summary>
        /// Update the logs's status by flowID
        /// </summary>
        /// <param name="flowID">the keys of WorkflowInstantceFlow</param>
        /// <param name="status">the target status</param>
        /// <returns>return true or false</returns>
        bool UpdateListStatus(List<Guid> flowIDs, RunStatus status);
    }


在设计的过程实例和这个上面2个接口差不多,就是参数多一些。(由于临时有事离开,待续)

分享到:
评论

相关推荐

    毕业设计:asp.net基于工作流引擎的系统框架设计开发(源代码+论文)

    其中基于工作流引擎信息系统框架的数据模型又分为框架模型、机构模型和信息模型三类。控制模型将信息模型、机构摩型和框架模型有机的结合在一起,它根据其中定义的业务规则来流转业务流程,控制模型是工作引擎的控制...

    asp.net基于工作流引擎的系统框架设计开发(源代码+论文)_new.rar

    一类资源描述:Java ASP系统毕业设计资源 1. 概述:该资源集中于Java与ASP结合的Web系统毕业设计。对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容...

    Simpleflow工作流套件V20080307

    1.Application.nsf 工作流应用库(工作流运行库,三个流程定义中,外出申请可以实际运行,其它为示意流程,不能实际运行) 2.Process.nsf 流程定义库(附加三个经过测试的简单流程定义) 3.Organization.nsf ...

    iFactr-UI:使用MVC设计模式的跨平台UI控件和应用程序工作流引擎

    MVC应用程序工作流引擎。 用于文件访问,网络,设备集成和IoC容器的支持库。 您可以: 快速构建移动和桌面应用程序。 将完全本机视图与跨平台视图混合并匹配。 将平台特定的第三方库和视图集成到应用程序中。 轻松...

    快速应用开发平台-流程建模

    火龙果软件工程技术中心 工作流...XPDL是至今工作流领域最为重要的一个标准,目前大多数工作流引擎是依据该标准设计开发的。工作流的中的三类数据:1.工作流控制数据(WorkflowControlData):工作流引擎通过控制数据来辨别

    纷享销客自定义函数:实战100例(全网最全,持续更新!)

    1. 纷享销客自定义函数能够通过执行简单的程序脚本更新相关CRM模块或第三方应用程序中的数据,并且可以进行数据校验判断和执行动作,记录与工作流标准匹配时,工作流引擎自动触发自定义函数并更新 CRM 记录。...

    基于Delphi的仓库管理系统开发论文

    第三阶段的主要工作的测试工作,并要写出测试分析报告,项目开发总结报告。 2)、条件与限制: 1).本软件运行的最短寿命估计为5年; 2).不考虑经费来源和使用限制; 3).无法律和政策方面的限制; 4).本项目开发所需...

    Delphi6分布式开发

    10.1 在 delphi 6开发 midas三层应用程序 10.1.1 在 delphi 6中创建应用服务器 10.1. 2 在delphi 6中创建客户程序 10.1.3 与应用服务器链接 10.1.4 调用服务器上的接口 10.1.5 在客户端纠错 10. ...

    ASP.NET3.5典型模块开发源代码

    1.1 开发站点前的配置 1 1.1.1 创建Web站点 1 1.1.2 使用站点安全工具配置身份验证模式 2 1.1.3 配置站点的数据存储方式 4 1.1.4 定制自己的数据存储方式 4 1.2 最普通的登录方式 6 1.2.1 用户注册功能...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作。 然而,由于HTML5的W3C标准规范还未制定,安卓系统中类...

    java8源码-spring-boot-plus:弹簧靴加

    集成驰骋工作流引擎表单引擎jflow - 预告 springboot-plus 将于jflow合作,把开源的驰骋工作流引擎集成到框架里面去. 驰骋BPM官方网站 JFlow下载地址. JFlow 的在线文档 ,视频教程: springboot-plus 一个基于...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制 自动化代码检查 sonar 代码规范 阿里巴巴Java开发规范手册 UMPAY——编码规范 日志规范 异常规范 网络 ...

    新版Android开发教程.rar

    � 现有应用完善度不太够,需要的开发工作量较大。----------------------------------- Android 编程基础 6 � 基于 QEMU 开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度慢。 � 暂不具备 Push Mail ...

    JEECG快速开发平台 v4.0

    复杂流程业务采用表单自定义,业务流程使用工作流来实现、扩展出任务接口,供开发编写业务逻辑。实现了流程任务节点和任务接口的灵活配置,既保证了公司流程的保密行,又减少了开发人员的工作量。 JEECG功能特点 1、...

    ActionScript开发人员指南中文版

    第章:在三维(D)环境中工作 D显示对象的基础知识 了解FlashPlayer和AIR运行时中的D显示对象 创建和移动D显示对象 将D对象投影到D视图上 示例:透视投影 执行复杂的D转换 通过三角形获得D效果 第章:文本使用基础知识 ...

    国内外主流的三维GIS软件

     特点:该平台集成了国内领先的Uniscope三维GIS引擎技术,覆盖全域的高分辨率卫星影像(CBERS-02B、SPOT5)、较高精度的地形高程数据、导航用道路和POI等矢量信息,符合保密规定的政府用户还可以享受航空影像数据...

    基于Java开发的OA办公审批系统源码+项目详细说明.zip

    | 工作流引擎:Activiti | | 前端技术:vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios | | 微信公众号:公众号菜单 + 微信授权登录 + 消息推送 | 三、项目模块 - oa-parent:根目录,管理子模块...

Global site tag (gtag.js) - Google Analytics