Posted on 2010-07-14 16:48
delvin 阅读(598)
评论(0) 编辑 收藏 所属分类:
工作流
按:从2004年到2006年,本人一直在一家公司参与开发支持XPDL规范的工作流管理系统。由于各方面的原因,产品最终没有向市场发布,只是内部使用。2006年底,团队解散,团队成员都相继离开公司。从2007年到现在,就没有怎么做过工作的东西,但以前困扰的问题,还时时在折磨着我。为此我准备抽时间把以前对工作流的一点思考写下来或重新整理下。
1.前言
1.1 为什么需要分析现实任务执行
1)规范对国内的人工参与的流程关注不够
在分析XPDL和其他规范时,发现这些规范大多数都是关注于国外的情况,就是比较关注流程自动化,对国内经常要求的那种人工干预和自由流等场景不大关注。你可以说国内客户把工作流用偏了,假若你站在国外的情况,但我们也可以这样来看,国内的这样情况,是不是工作流新发展的一个动力,是工作流从不成熟到成熟的一个阶段。总之,关注客户的需求,比规范本身重要,不管是国外客户或是国内客户,客户需求是技术法中的永恒动力。
2)对工作流类任务和其他任务认识不清
1.2 目的
设法分析现实任务类型和执行情况,为设计任务模型做理论准备。
2.内容
现实中任务执行情况非常复杂,
我们有必要对现实的复杂情况进行分析,在分析的基础上抽象成几种基本情况,其他的复杂情况可有这些基本情况组合而成。最好能拿出一个面向对象的任务执行模型(最好用UML
表达)为我们的工作流工作项处理作准备。在实现时再分析一下那些现实的处理情况可以支持,
那些情况不能支持,
对不能支持的情况要说明情况(
现实分析不清,
工作项处理模型不能表达现实情况,
模型能表达但没时间,
其他原因)
。
为分析现实情况,让我们用case的方式来分析,重点关注任务执行情况。为了分析的真实性,我重点分析了一个真实的转正流程(注:考虑了隐私,我隐去具体公司的名字和人名),下表是转正流程的图示表示,该图可能没有表示此流程的所有内容,若分析需要我可能加一点东西来满足现实的需要,我们尽量严格遵循现实流程的运行情况,不考虑权限控制等实现问题,侧重控制流程的运转和任务产生,分派等):
图 1 XX公司员工转正申请
1 直接完成任务
定义:任务接受者完成任务。
例子:(XX转正流程)张三在XX公司实习了三个月,文秘发送转正资料给张三(文秘发送转正资料就相当于启动一个转正流程实例,现实中并没有流程实例创建的概念,都是隐含的),此时该转正流程走到填写转正申请,张三有了一个任务,填写转正申请;张三在规定时间内填写转正申请,完成该任务,流程到达初审活动。
2 暂停某项任务
暂停某项任务又分几种情况(可能不全)
情况1 :暂停某项任务,不限定时间,在该任务未超时的情况下,可以随时继续。
例子:(XX公司转正流程)张三转正流程走到复审这一步,部门经理有一项任务,复审张三的转正申请,但部门经理因有事要出差(多长时间不能确定),只能暂停复审任务,等到有时间再复审。
情况二:暂停某项任务一段时间
例子:(XX公司转正流程)张三转正流程走到复审这一步,部门经理有一项任务,复审张三的转正申请,但宋刚因有事要出差(时间为一个星期),只能暂停复审任务一个星期,等过了一个星期,复审继续。
情况三:暂停某项任务,具体时间不知道,但重新开始的条件知道
例子:(XX公司转正流程)张三转正流程走到答辩这一步,答辩委员会成员(部室主任,部门经理,文秘)和答辩人吴红军都有一项任务,参加答辩会,但是部门经理有事要出差,不能参加,所有人的任务都处于暂停,部门经理的情况属于情况一,其他人的任务继续的条件是部门经理回来,他的任务重新开始。
此处有一个问题(对参加答辩会的产生的任务看法问题):把参加答辩会是看作一个任务,有多人协作完成,还是看作多个任务,还是既看作一个任务,也看作多个任务。现实情况好象有一个隐含视角问题,从公司的角度(top-level ,不限于是公司)来看答辩会是一个任务,很可能郭安艳代表公司在公司日程上有一条答辩会条目(相当于待办任务),从个人来说,每人都有一个任务,现实中,他们很可能每人都在自己的待办事宜内记录一条参加答辩会的条目(相当于待办工作项)。
3 拒绝某项任务(不考虑原因)
例子:(精论软件转正流程)吴红军转正流程走到答辩这一步,答辩委员会成员(部室主任,部门经理,文秘)和答辩人张三都有一项任务,参加答辩会,因为部室主任正在准备电力ppt,不想参加,他就发消息给部门经理不想参加(实质上就是拒绝此任务),部门经理就召集其他的人开答辩会(此处又涉及对拒绝任务的处理)。
4 终止(取消,结束)某项任务
例子:(XX公司转正流程)张三转正流程走到答辩这一步,答辩委员会成员(部室主任,部门经理,文秘)和答辩人张三都有一项任务,参加答辩会,因为不知道什么原因,张三突然离开公司(假设情况),以上任务只能终止,实际上整个流程只能终止(此处涉及到一个任务结束对活动和流程的影响,但不在此处祥解)。
注:在现实世界,终止,结束和取消的含义差不多,我们在现实生活中可以经常不加区分的使用这些词,不过在软件世界这些词需要区别对待,具体区别有待在软件产品分析中定义,主要是精确区分对资源的销毁和回收情况。
5 指派/分派某项任务
指派任务的情况本身也非常复杂,以下把暂时能想到的情况列一下:
情况一:把自己的任务指派给他人
例子:(XX公司转正流程)张三转正流程走到答辩这一步,答辩委员会成员(部室主任,部门经理,文秘)和张三都有一项任务,参加答辩会,因为部室主任正在准备一个竞标书,不想参加,他就指派另外一个人(被委托人)代表他参加答辩会,这样部室主任的任务就变成了被委托人的任务。
分析:此处假定任务能被重新指派给他人。在现实中,有些任务可以重新指派给他人,但有些任务就不可以,比如涉及某些需要签署法律效应的文件就不可以。在现实世界,一般也没有详细定义那些可以,那些不可以,人们基本随机或按某种隐性规则处理。但若要在软件领域处理此类情况,就需要精确定义,而要精确定义之前,就需要分析现实情况,并进行抽象建模。
情况二:部门领导(主管等等)把本部门的任务指派给具体的员工。
例子:(XX公司转正流程)张三转正流程走到答辩这一步,部门经理指派答辩委员1和答辩委员2参加答辩会。
以上只是对现实中各种可能情况的描述(注:不够全面,仅侧重于参与者[执行者]是人的情况),并不是合理的抽象,(暂时不知道如何抽象好)不知你有什么看法?