1、工作流系统有什么用?
可以简化您关于 业务对象状态的判断的流程。举例:如果一个对象每个阶段有2个状态(通过或不通过),一共有3个价段,分别可能有4个人参与到流程中,并且状态处理的方向可能与当前操作员相关,有些操作员权限大,可直接跳转到下一阶段,如是没有工作流系统,我们的代码可能会是什么样子呢?
if( 阶段1.Statu1 == obj.Status)
{
//您的代码
if( operatorID == obj张三。ID )
{
...
}
}
else if( 阶段1.Statu2 == obj.Status )
{
//您的代码
....
}
else if( ....)
{
.....
}
您能想象会出现多少 if else ,更糟糕的是如果哪天客户告诉你,要在某阶段增加一个 特殊状态,或特殊逻辑,你肯定有想自杀的想法,或者你想把客户杀掉。为什么?因为难度成指数级别在增长。
另外,这只是处理逻辑上代码的增长,如果您根据每个状态都在界面上对应有个交互界面,比如:等您审核的XXX,等待您审批的XXX。。。,您知道会出现多少用户交互界面嘛?况且,用户哪天突发奇想说要增加审批环节的时候,就是入地狱的时候了。
所有变更都是侵入性的,必须重新编写代码,编译、发布、重新布置,啊,我的天哪,“天尽头,何处有香丘?”。
2、关于工作流学习的文章或成功应用太少,不免让很多同学感到大海茫茫,如何开始?
首先,感谢WXWinter ,关于WF4.0,我的基础学习基本上是参考他的例子理解基本概念的,但是当你理解了基本概念后,想建立一个审批工作流系统您还是无从下手,如何办?
困难澄清:
2.1.工作流如果要良好运行,必须有外围用户系统的支撑,比如,关于如何进行权限检查及认证哪是业务对象的事,不应该侵入到工作流中。
2.2.工作流并不是孤立的运行,有时他需外部审批人的动作,因此必须有渠道为流程添加审批节点,并指定审批人,因此您必须提供相应的流程设计器供用户或实施人员使用。
2.3.有时流程运行需要与人做交互,由操作员决策节点应如何向下走,并且要向运行中的流程提供运行参数,外部支撑系统应如何提供流程的运行参数呢,这和流程运行上下文有关,可能还与当前用户有关。
2.4.关于节点自身的审批结果,有多种多样的组合,比如:一票通过、多票通过、一票否定、多票否定、按比例通过、按比例否定等。或者他们的组合。
看到这里,也许您的大脑已被许多概念交织在一起,一片混乱了。别急,总有解决方法的,下面我们先预览一下我心目中的工作审批系统是什么样的?和您的期望是否一致,我们之间能产生些许共鸣嘛?
3.以公司常见的“借款申请”为例,我们一步一步的演示:
环境交待:张三 是公司员工,因要出差处理某事,出差前向公司申请借款 5000元,借款申请必须先征得部门经理 李四的同意,后经财务经理 赵五 审核同意,才能用署名后的借款单到出纳处换取 现金。
流程:发起借款申请->李四审批-> 赵五审批-> 出纳付款
3.1 发起申请
3.2 启动流程
3.3 流程启动后的结果: 等待部门经理审批
3.4 部门经理审批:
首先,查看待办事项:
双击查看:
点击同意流转到下一节点:财务审批
3.4审请人查看流程进度:
3.5 财务审批
双击打开申请单:
点击同意,弹出付款账户供财务选择,点击确认流程结束。
4.流程设计器预览:
Oh yeah….!!!!完成,感觉如何呢?
另外,我想表达一点,如果您的解决方案连自己都觉得在哪一点有不自然或觉得繁琐的地方,说明设计与实现肯定有问题,应反思,因为用户很少给自己第二次机会,提供用户使用的软件应是能解决实际问题,有价值且优秀的产品,这样您就有了市场需求了。
期待下文吧,OK,整个系统如何动作?审批工作流系统的设计要点是什么?
预知后事,敬请关注!!!!