工作流组件示例(全部开源)

1.概述

1.1简介

本文档旨在帮助开发人员快速使用工作流组件,完成OA或审批等涉及到工作流组件的系统开发工作

1.2组件构成

1.2.1组件层次图

组件的核心是工作流引擎,它负责存储工作流模板.引擎被服务所包围,也就是说,若用到工作流引擎操作,必须通过工作流服务

工作流服务包含几大部分:模板服务,流程实例服务,查询服务,跟踪服务,持久化服务,定时服务等

1.2.2与宿主关系图

宿主通过工作流服务提供的各种命令操作,来完成想要实现的功能.如发起模板,流转实例等

同时,工作流服务会反馈信息给宿主,通知宿主操作是否成功

1.2.3服务运行模式

1.2.4组件类图

1.2.4辅助接口

l 权限组件IpermissionService

方法详细描述如下图所示

l 数据库组件IDataBaseService

方法详细描述如下图所示

l 定时组件ItimingService

方法详细描述如下图所示

1.2.5数据库结构

l 工作流模板部分

l 工作流流程实例部分

l 工作流其他配置部分

2示例模板

示例模板如图-所示

2.1功能要求

l 模板发起权限:用户1

l 模板包含4个环节.其中,首环节为[拟稿];末环节为[发证].其环节办理对象如下所示


环节ID


处理决策


办理对象


用户列表


拟稿


第一用户


用户/用户1


用户1


审核


第一用户


用户/用户2


用户2


审查


任务共享


角色/角色1


用户1,用户2,用户3,用户4,用户5


发证


第一用户


用户/用户6


用户6

l 在[审核]环节包含子流程,并且是回归.即主流程需等待子流程完成后

l 所有环节均支持回退,跳转,挂起,取消挂起,强制归档,删除,备份等命令

3代码开发

3.1创建Db并导入脚本和数据

l 创建SQLServer数据库

l 打开02.db脚本文件夹,在查询分析器中

n 执行” init_workflow_sqlserver.sql”文件,用于创建脚本

3.2创建解决方案


名称


描述


Navi.Example.Workflow


整个解决方案名称


Navi.Example.Workflow.WinForm


WinForm场景示例文件


Navi.Example.Workflow.WebForm


WebForm场景示例文件


Navi.Example.Workflow.WebMVC3


WebMVC3场景示例文件

3.3项目引用DLL文件

3.4Config配置文件说明


结点名称


描述


RunMode


系统运行场景.包括:WinForm,WebForm,WebMVC


PermissionService


权限中心组件,实体操作类字符串,用于反射.继承自IpermissionService接口


PermissionDataBaseService


权限中心组件,数据库操作类字符串


PermissionDbConnectionString


权限中心组件,数据库连接字符串


WorkflowDebugMode


工作流组件.调试模式


WorkflowLoadMode


工作流组件.模板数据源类型.包括Xml和Db


WorkflowLoadFileName


工作流组件.模板数据文件名称


WorkflowService


工作流组件操作类字符串


WorkflowDataBaseService


工作流组件.数据库操作类字符串


WorkflowDbConnectionString


工作流组件.数据库连接字符串


WorkflowTimingService


工作流组件.定时服务操作类字符串

3.5环境变量注册

如上图所示.以WinForm应用场景为例

先增加异常捕获,再获取应用程序路径和名称,再注册权限组件和工作流组件,最后打开主页面

注:也可同时注册数据库组件,并且支持多数据库同时注册

3.6功能模块

3.6.1拟办列表

3.6.1.1检索

检索条件是模板名称,支持模糊查询

3.6.1.2发起

发起选中的模板列表.若发起成功,则提示下图,表示发起成功

若模板发起失败原因有多种,一般包括

n 用户没有发起模板权限

n 选中的模板,其版本不是最大版本号.不允许发起历史模板

n 在发起过程中出现问题.如:用户未找到角色或组织机构.或者传入参数不正确等,需具体问题具体分析

3.6.1.3发起(含业务)

功能与发起类似,区别是根据选中的模板,弹出模板对应的UI业务表单.在此示例DEMO中,不支持业务表单配置

3.6.1.4新增委托

功能描述

n 委托是精确至模板环节级别,并且可将委托对象设置为组织机构,角色或用户

n 委托是在某一时间段内.即需设置开始和结束时间.某人的待办数据交由另一人或多人办理

n 到期处理包括:撤消和继续.用于工作流定时引擎服务中使用

n 是否立即委托,是指委托数据增加成功后,立即实现委托功能,并不是根据开始和结束时间

n 待办是否隐藏:是指在用户待办信息中,是否过滤掉属于被委托者的待办件

3.6.1.5委托列表

功能描述

l 检索

检索条件包括:环节ID,开始和结束时间,是否使用.:数据本身已经根据模板ID和版本过滤

l 查看

查看模板委托详细信息.:只允许查看,不允许修改

l 撤消委托

撤消模板委托后,此模板再发起的流程实例将没有委托信息,之前已经发起的流程实例,其委托信息仍存在

l 删除委托

直接将模板委托数据删除.此功能已实现撤消委托功能,并且将数据直接从Db表中删除

3.6.2流程实例

3.6.2.1模块描述

l 左侧为树控件,按流程实例状态类型区分.选中一级结点,加载登录用户此状态的流程实例数据

l 检索条件可以根据模板名称,版本,流程实例ID和操作用户过滤.注:若为管理员登录,可使用操作用户检索条件,检索出属于此用户的流程实例数据

l 功能命令,采用工具栏布局.包括流转,完结,回退等功能

l 批量数据栏目名称包括:环节ID,办理时限和单位,开始时间,运动状态等.对应的实体类是WFWaitDealModel

3.6.2.2流转

l 点击[流转]弹出流转配置页面,如下图所示

l 功能说明

n 采用Tabpage控件,每个面板表示待流转的环节信息待办用户,是指待流转环节的待办用户

n 左侧为待选择的用户列表.此配置信息为模板环节办理权限.:无论办理权类型是组织机构,角色或用户.最终会转为用户,供用户选择

u 右侧顶部分,是记录已选中用户列表

u 办理权限

Ø 目标环节处理决策:在模板配置时已配置环节处理决策,此处允许再次修改.原因:流转到环节的情况有多种,包括正常流转,回退,跳转等

Ø 是否允许分发:用于并行操作.假设选中5个用户.不勾选此选项时,会生成1条环节数据,5条环节审批意见数据;如果勾选此选项,则会生成5条环节数据,每条环节数据各生成1条环节审批意见数据

Ø 预生成数据:用于环节处理决策是任务共享的情况.当环节的办理用户均要求办理时,第1个用户办理完结后,是不生成目标环节待办数据的.若勾选此选项,则先生成目标环节待办数据,但不允许操作

u 右侧底部为子流程列表,在流转过程中,需额外发起其他模板来辅助完成此流程操作

u 底部为发送信息配置选项.可发送信息至短信,邮件,站内信等.注:每个发送选项实现,已提供接口,直接实现即可

l 操作完成后,点击[确定]按钮,执行工作流组件服务中[SubmitWFInstance]方法.若操作成功,则将流程实例当前环节实例ID返回

3.6.2.3完结

完结命令,只适用于环节处理决策是任务共享.非最后一个用户使用.表示用户已经办理过此办理件.若操作成功,则将流程实例当前环节实例ID返回.若操作失败,可能原因如下所示

3.6.2.4回退

l 点击[回退]弹出回退配置页面,如下图所示

l 功能说明

n 与[流转]面板布局和功能相同

l 操作完成后,点击[确定]按钮,执行工作流组件服务中[BackWFInstance]方法.若操作成功,则将流程实例当前环节实例ID返回

3.6.2.5跳转

l 点击[跳转]弹出跳转配置页面,如下图所示

l 功能说明

n 左侧为跳转环节列表.注:允许跳转至任何环节,包括已发起或未发起的环节.通过状态栏目区分

n 右侧为左侧选中环节的办理用户列表,支持多选

n 底端为其他配置,是将此办件信息通过何种方式发送给待办用户

l 选中环节和环节办理用户后,点击确定按钮,执行工作流组件[SkipWFInstance]方法.若操作成功, 则将流程实例当前环节实例ID返回

3.6.2.6置换

l 点击[置换]按钮,弹出置换配置页面,如下图所示

l 功能说明

n 页面采用组织机构+用户列表布局

n 选中左侧树结点,右侧列表加载此组织机构下的用户,供选择

l 选中用户信息后,点击确定按钮.执行工作流组件的[ChangeWFInstance]方法

3.6.2.7归档

归档命令,是将流程实例的运行状态置为end.表示此流程实例已经流转完成,不需要其他操作.:此命令只将处于末级环节的流程实例数据归档.非末级环节时不允许归档

3.6.2.8强制归档

强制归档命令,功能与归档完全一致.不同之处,在于流程实例不限于处在末级环节.在任何环节都可以将流程实例归档

3.6.2.9撤消委托

撤消委托命令,并不是模板级别的撤消委托.是将流程实例中的委托数据删除,与模板中的撤消委托功能统一称之为撤消委托.分别对模板和流程实例撤消委托

3.6.2.10挂起

l 点击[挂起]弹出挂起配置页面,如下图所示

l 功能描述

n 开始和结束时间,表示流程实例挂起的起止时间

n 到期处理方式,包括撤消和继续.用于工作流定时服务

n 挂起原因,表明为何挂起

n 是否立即挂起,是不依赖于开始和结束时间,挂起数据保存成功后,直接将对应的流程实例数据挂起

l 数据录入完成后,点击确定按钮,完成挂起操作

3.6.2.11复制

复制命令,是指将流程实例数据完整拷贝一份新的,其流程实例ID也是新的.拷贝的数据包括流程实例,环节实例,环节审批意见以及流程监控数据

3.6.2.11备份

备份命令,是指将流程实例的运行状态修改为backup,表示此流程实例不在用户待办和已办中出现

3.6.2.12删除

删除命令,即将流程实例从Db表中直接删除.注:删除同时,将此流程实例数据存储至持久化表中,方便以后查找

3.6.2.13监控

l 点击[监控]命令弹出监控页面,如下图所示

l 功能说明

n 顶部展现流程实例基本信息,包括对应模板ID和版本等

n 左侧为环节流转信息

n 右侧为环节操作信息.如执行挂起,恢复,置换等,均有记录

3.6.3配置选项

3.6.3.1检索

检索条件是选项名称和启用状态.其中选项名称支持模糊查询

3.6.3.2新增

新增配选项,如下图所示

录入数据完成后,点击保存,将数据保存至数据库

3.6.3.3修改

修改列表中选中的配置选项值,如下图所示

修改数据完成后,点击保存,将数据保存至数据库

注:若配置选项为系统配置,则不允许修改,会提示如下图所示的对话框

3.6.3.4删除

将列表中选中的配置选项删除

注:若配置选项为系统配置,则不允许删除

3.6.4工作流日历

3.6.4.1检索

检索条件包括开始和结束日期,日期种类(日期和时间),日期类型(工作日和休息日)

3.6.4.2新增

新增日期,如下图所示

录入数据完成后,点击保存按钮,将数据保存至数据库

3.6.4.3修改

修改日期,如下图所示

修改数据完成后, 点击保存按钮,将数据保存至数据库

3.6.4.4删除

将列表中选中的日历删除

3.6.5默认审批意见

3.6.5.1检索

检索分为2部分.一是根据用户检索;二是根据审批意见检索,同时,支持模糊查询

3.6.5.2新增

新增审批意见数据.如下图所示

模板信息支持弹出页面选择,如下图所示

录入数据完成后,点击保存按钮,将数据保存至数据库

3.6.5.3删除

删除列表中选中审批意见数据

4设计器

4.1设计器(WinForm版本)

4.1.1模板列表

功能描述

l 左侧树控件.加载不同版本的模板名称.单击树结点,加载此模板名称不同版本的列表.:单击顶级节点,加载所有模板

l 右侧顶部为检索条件,检索条件是模板名称和启用状态

l 右侧顶部下面为工具栏列表.包括模板新增,复制新增,修改,删除,导入和导出

n 新增:弹出模板单据页面,用于新增

n 复制新增:获取选中行模板ID和版本并加载,其详细信息加载至表单中,供用户修改.:版本号自动+1处理

n 修改:修改选中行模板信息.:修改操作,不允许执行删除环节及环节其他信息

n 删除:删除功能包括删除当前选中行模板信息(某一版本);删除某一模板(所有版本)信息和删除某一模板(某一版本)生成的流程实例信息

n 导入和导出,支持将模板数据导出为Xml和Sql,共2种文件格式

l 右侧右半部分包括上下2个内容.上面显示此模板的发起权限列表;下面显示为模板环节列表

4.1.2模板表单

功能描述

l 顶部为工具栏,包括发起权限新增,发布模板和关闭

n 发起权限:维护此模板允许哪些人发起

n 发布模板:模板设计完成后,点击此按钮,保存至数据库

l 上半部分为模板基本信息.包括模板名称,发起时间,办理时限等

l 下半部分为模板环节信息.功能包括新增,复制,删除环节和快速录入

n 新增环节:弹出新增环节表单

n 复制环节:根据选中行环节信息,复制新增环节,其标识符+1处理

n 删除环节:将选中行环节删除

n 选中某行,点击”设置”按钮,弹出修改环节表单

4.1.3模板发起权限

功能描述

l 权限类型包括

n 到人

n 到角色

n 到组织机构

n 动态到模板环节办理人:是指模板环节配置的办理用户列表

n 动态到流程实例待办人:是指用户在模板环节配置的用户列列表中,选择此环节哪些人可以办理

n 动态到流程实例办理人:是指此环节实例真正办理的用户列表

l 发起权限允许有多条,而且权限类型可以不同

4.1.4模板环节表单.基础信息

功能描述

l 状态ID:环节标识符,在模板中唯一,不允许重复

l 办理时限:此环节需办理的时间限度.单位包括:分钟,小时,天

l 状态类型:标识此环节是否为模板的特殊环节:即首环节或末环节.首环节是指模板发起后,流转到的环节;末环节是指模板允许归档的环节.:整个模板中,有且仅有一个首环节和末环节

l 处理决策:允许此环节向下流转的条件类型.包括第一用户和任务共享.注:二者区别详见操作手册

l 并行设置:此选项用于并行分支的发起和汇聚.配置发起选项时,表示此环节的待流转分支都要生成用户待办数据;配置汇聚选项时,表示此环节的允许流转条件要额外判断是否所有流向此环节的待办数据已流转完成,若完成,则允许向下流转

4.1.5模板环节信息.办理权限

功能描述

:其配置方式与模板发起权限相同,

4.1.6模板环节信息.条件分支

功能描述

l 环节条件分支是指此环节允许向下流转的分支走向.相当于要达到目的地,可以有很多条路到达,这些条路就相当于条件分支.条件分支是供用户选择的

l 条件分支录入页面

功能描述

n 分支名称:环节ID.必须是环节ID

n 分支标签:并行分支时使用.若某几个分支的分支标签相同,表示这几个分支需并行处理

n 默认分支:定时引擎使用.若办理用户在规定时间内没有办理,则通过定时引擎此环节可以自动流转至默认分支

n 过滤组织机构和过滤角色,用于选择环节办理用户时,根据当前登录用户所在的组织机构和角色,过滤出与登录用户在同一组织机构或角色的办理用户

n 环节处理决策:是指目标环节的处理决策,允许在此处修改

4.1.7模板环节信息.子流程

功能描述

l 环节子流程是指在此环节中,允许另外发起某模板.注:同一环节允许发起多个模板

l 子流程录入页面

功能描述

n 子流程信息,通过选择模板表单加载.如下图所示

n 是否回归至主流程,表示主流程是否需等待发起的子流程

n 子流程版本使用Max代替:由于模板会根据业务不断调整,重新发起新的模板,则某一时间点的子流程,其版本就可能是历史版本的模板.选中此项,表示子流程的模板版本,永远保持最新,使用最大版本的模板信息

4.2设计器(WebForm版本)

暂不提供,请参考WinForm页面开发

4.3设计器(WebMVC版本)

暂不提供,请参考WinForm页面开发

5与其他系统整合

 

源码下载方式

1,关注微信公众号:小特工作室(也可直接扫描签名处二维码)

2,发送:示例4003

即可下载

时间: 2024-09-29 04:28:41

工作流组件示例(全部开源)的相关文章

DataWindow.Net组件示例(全部开源)

1概述 1.1功能简介 Sybase公司的PowerBuilder开发工具,在以前VS工具没有成事以前,是相当风光的.微软都要与其合作,学习它Db方面的技术,才成就了SQLServer数据库.PB开发工具的风光得益于它非常强大的数据窗口功能,这个技术的使用,使得开发管理类软件,尤其是开发数据库管理类软件变得异常简单,与使用VS.NET开发同一软件相比较,其开发周期可以缩短至三分之一,只是随着Sybase的没落,技术更新不及时,使得PB开发工具逐渐被遗忘在时间的长河中,很少被人提及和记起.但数据窗

ExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他组件示例篇)

N久没有写extjs的,作为一个新手,我为我的这种懒惰行为感到惭愧! 鉴于有朋友反应前面的文章过于简单,我决定以后的文章如果没有闪光点就放在新手区(如果不适合,请跟帖),不放在首页! 11.checkbox简单示例 效果图: js代码: Ext.onReady(function(){ Ext.QuickTips.init(); var myform=new Ext.FormPanel({ frame:true, width:330, layout:"form", labelWidth:

E-MapReduce集群使用Oozie工作流简单示例

本文简单介绍了E-MapReduce集群上的Oozie工作流的使用,并且提供了可以直接使用的示例代码.全文使用Zeppelin notebook演示.欢迎下载导入[notebook.json],直接就能在zepplein上运行.或者在ZeppelinHub Viewer页面上浏览:[ZeppelinHub Viewer].

使用React实现轮播效果组件示例代码_javascript技巧

前言 我发现React和AngularJS思想完全不同,AngularJS是基于双向绑定,在Modal层中定制数据,然后双向改变.但是React是通过prop和state来改变view层的状态.下面是我写的一个轮播图组件,可以直接看一下.代码很简单.原理就是通过React在componentDidMount后改变setState,来动态改变css样式. 说明以下:看gif很卡,但是实际效果还是很好的. 以下是示例代码 LunBo.js require('styles/App.css'); req

js实现通用的微信分享组件示例

 这篇文章主要介绍了微信分享通用组件,用于微信浏览器内浏览网页的分享信息定义,需要的朋友可以参考下 一.可定义的信息   1.分享时显示的LOGO: 2.分享LOGO的宽度: 3.分享LOGO的高度: 4.分享出去显示的标题(默认调用网页标题): 5.分享出去显示的描述(默认调用网页标题): 6.分享链接(默认为当前页面的URL). 7.分享微信的APPID(一般为空).   二.使用方法   1.引入微信分享组件js: 代码如下: /******************************

WebUploader文件上传组件示例

 JAVASCRIPT 首先创建Web Uploader实例:  代码如下 复制代码 var uploader = WebUploader.create({     auto: true, // 选完文件后,是否自动上传     swf: 'js/Uploader.swf', // swf文件路径     server: 'upload.php', // 文件接收服务端     pick: '#imgPicker', // 选择文件的按钮.可选     // 只允许选择图片文件.     acc

Android SwipeRefreshLayout下拉刷新组件示例

SwipeRefreshLayout概述 SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果.该控件集成自ViewGroup在support-v4兼容包下,不过我们需要升级supportlibrary的版本到19.1以上. 用户通过手势或者点击某个按钮实现内容视图的刷新,布局里加入SwipeRefreshLayout嵌套一个子视图如ListView. RecyclerView等,触发刷新会通过OnRefreshListener的onRefresh方

一个真正的热插拔开源的日志记录组件

前两天发现一个开源日志组件ELMAH,一下子就喜欢上了,喜欢他的原因是它支持"热插拔"(不需要改动任何的程序).简单的配置(几行配置).多种记录方式(数据库.文件.Email).支持多数据库(Access.SqlServer.Oracle.Sqlite.VistaDB),而且查看结果也不需要编写(并且支持rss发布查看). ELMAH最新版本是ELMAH-1.0-BETA3,他是基于HttpModules.HttpHandlers的处理方式,只是记录错误日志不进行处理,不过这已经足够了

安卓UI设计与开发教程 滑动菜单栏(二)开源项目SlidingMenu的示例

通过上一篇文章的讲解,相信大家对于开源项目SlidingMenu都有了一个比较初步的了解(不了解的可以参 考上一篇文章),那么从这一章开始,博主将会以SlidingMenu为重心,给大家带来非常丰富的示例演示,让 大家对SlidingMenu有一个更加深入的了解以及如何去实现一些比较炫的滑动效果. 这篇文章会给大家 带来7个不同效果的示例,每个示例都包含了最基本的使用方法,从易到难,循序渐进.能够让初学者可以快 速的掌握SlidingMenu的使用方法.下一篇文章会给大家带来三种不同的动画效果来