欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Asp.Net Mvc2 OA 工作流设计思路[图]

程序员文章站 2024-03-05 16:40:13
回老家上班的新公司,第一个项目:oa。以前没有做过oa,因为设计到工作流这一块的东西,所以自己去进行了相关的了解,于是有了这篇博客(以下文字只是个人理解,高手漂过)。环境:...

回老家上班的新公司,第一个项目:oa。以前没有做过oa,因为设计到工作流这一块的东西,所以自己去进行了相关的了解,于是有了这篇博客(以下文字只是个人理解,高手漂过)。环境:mvc2+sql2008

工作流分为几个步骤:表单(设计、解析)、流程(设计)、合并就是一个完整的工作流。先上个一个图:

Asp.Net Mvc2 OA 工作流设计思路[图]

第一步:表单

因为没有使用图形化设计表单,所以我们的思路是强制定义表单格式,后台解析。如图:

Asp.Net Mvc2 OA 工作流设计思路[图]

上图的html是强制定义的,像table>tbody>tr>td必须按照这个格式定义,虽然不灵活,但是功能也算实现了。说说思路:这个表单将解析成11个节点(申请人、申请日期、部门、假期类别、请假时间、扣薪形式、请假理由、审批人、审批日期、审批结果、审批意见)

Asp.Net Mvc2 OA 工作流设计思路[图]

如上图所示,解析节点是通过[爱好]中的id获取的,采用htmlagilitypack来解析,具体代码:

selectnodes("//table/tbody/tr/td[@id='title']")

这样就可以知道表单的所有节点,而标题所对应的选项则用class来对应,从上图也可以看出来(用来控制表单节点是否可以填写项,下面会介绍)。

特殊控件处理:譬如时间的话也是通过定义class='time'而后,通过jquery动态绑定加载。

Asp.Net Mvc2 OA 工作流设计思路[图]

第二步:流程,同样通过文字形式来制定流程步骤

定义流程与表单关联

Asp.Net Mvc2 OA 工作流设计思路[图]

这里的经办权限是直接跟用户关联的,用来标识哪些人拥有该流程的办理权限。

接下来就是定义流程的步骤了。

Asp.Net Mvc2 OA 工作流设计思路[图]

上图是一个请假流程的全部步骤,下面介绍怎么制定这些步骤。

Asp.Net Mvc2 OA 工作流设计思路[图]

节点序号:用来表示当前流程为第几步,节点名称用来标识当前步骤名称,是否允许附件、会签,用来控制附件与会签区的显示和隐藏。下一步标识当前步骤可以流转到哪些步骤,左边是已经选择好了的(可以是多个步骤,这里考虑的是,不同的职位使用相同的流程会有特殊情况发生,譬如正常的流程是需要四步[员工填写》经理审批》总监审批》人事备案],但是当总监请假的时候就不需要这么多步骤[填写表单》人事备案]),右边是拉取当前流程下的所有步骤。不可写字段标识,当前步骤时,表单有哪些节点为不可以填写,譬如:员工填写请假申请单,流转到经理时,那么经理看到的表单就有员工姓名、部门等信息不能填写,只能填写审批意见等节点信息。这样流程与表单就关联好了,接下来就是工作流流转了。

第三步:工作流流转,模拟流程流转,新建流程

Asp.Net Mvc2 OA 工作流设计思路[图]

定义工作流的名称

Asp.Net Mvc2 OA 工作流设计思路[图]

点击确认新建是,直接跳转到流程页面,并且在数据库存入第一步流程的相关信息。

Asp.Net Mvc2 OA 工作流设计思路[图]

然后填写表单内容,选择下一个步骤及经办人就可以流转至下一步。说明:表单内容我是把整个表单的html代码全部存入数据库,然后流程流转时再把填写好的表单内容存入下一步,这样流程到下一步时,看到的表单就是最新的了。这是一个很笨的办法,因为使用$("#表单tableid")是获取不到表单的value值的,所有需要进行处理,获取表单内容通过jquery直接attr(value,文本值)上去,这样就可以把表单内容存入数据库。

Asp.Net Mvc2 OA 工作流设计思路[图]

这里还涉及到多人办理的情况,当经办人选择为多人时,除非是最后一个人,否则流程不允许流转至下一步,但是可以填写会签意见及修改表单,修改的表单将覆盖当前步骤表单,至最后一个转交至下一步,如此重复就可以实现流程流转了。

语言组织能不强,所有只能说成这个样子,整个流程还是有缺陷的,表单设计和流程设计都只能使用文字的形式,可能以后会考虑更换成图形化,还有就是不支持子流程。今天就写这么多了,也是最近才接触自定义工作流,也看过很多非常强大的工作流,所以以后还继续完成、改进和学习。