ExtFrame里的工作流
这个工作流其实是个比较简化的版本了,因为没人帮我做图示化的设计器:-(
在我大致搞出来后意识到,其实如果有图示化设计器,可以很容易的搞定图示版本引擎,只是偶实在是不会做SilverLight,又调不到人手(光杆司令,郁闷)
项目又要马上投入使用,只能上比较简单而又比较死的节点定义了,也就是从节点1只能提交到节点2,2只能提交到3这样的流程
这个工作流的设计和我过去在另一个比较大的项目(比较早了,还是CS版本的)写的引擎不太一样,设计机制就完全不一样,那个引擎完全是独立运转的,也就是用户拖拖拽拽定义下流程就行了,而这个引擎,是需要实施人员(其实应该是开发人员,实施人员根本搞不定)对每个流程进行配置,虽然看起来前面那个似乎更灵活些,但我觉得实际上这个新的更好,更容易扩展,主要是机制完全采用的ExtFrame里的框架
先上几个简单的图了:
1:流程列表
这个查询的Grid,操作列什么的,包括上面的添加和查询按钮,都是框架设计的一部分,这里不解释了,在ExtFrame的框架里会进行描述
代码就是ID,用来指定的流程定义,在系统里是直接使用指定的ID来启动流程的,例如启动用车流程,就是Flow.Start('CarRequest')这样的封装
添加流程界面:
这个是简单的添加界面了,添加功能也是框架的一部分
添加了流程后,点流程定义按钮,弹出流程设置的界面
流程设置么,就是添加一个一个的节点了,这个图就省了
另外就是给每个节点设置人员了,用的是Ext.ux.MultiSelect的控件,图也省了
重点是节点动作这个字段,这是啥呢:这就是当前用户可以拥有的操作名称,而这些操作是定义在系统的配置文件里的,例如,对用车申请有一系列的操作可能,而审批这个节点只放置了通过和否决两个操作,那么用户就只能看到这两个按钮,而如果节点有特殊的逻辑,只需要配置额外的操作就可以了,这样就完美的把业务逻辑和工作流结合起来了,例如如果一个节点允许用户修改怎么办,那就放置个edit操作在这个节点上就可以了,这里其实是用的ExtFrame框架的核心设计:采用Command模式封装操作(嗯,其实前面那个Grid列也是这个设计的复用)
下面继续放图,如何启动用车申请流程?前篇的树的介绍记得么?有个新增申请,嗯,点开,下面有个用车申请
点一下,弹出了用车申请界面:
填写完毕后,点提交申请,窗口关闭了,我这里流程是管理员提交给管理员自己,多提交几个,然后点等待我审批项目看看(这个树节点定义的是每次展开都会刷新)
点一个,进去看看?
下面不继续了,点通过或否决会出来个意见窗口,不贴了
神马我过去的申请,我过去的审批记录之类的,就不是我的事了,开发人员自己写去,简单的很