在政府和企业信息化实施中工作流几乎是必备的子系统。现在的主流工作流系统几乎可以图形化构建出能想象到的所有流程和表单,即便如此,实际项目中实施成功的却凤毛麟角,在企业中实施成功的例子更是少得可怜。为什么会造成这种情况呢?根据笔者分析,应该是下面几个重要原因导致这些工作流系统实施的不成功。
实施成本高、难度大
虽然国际上有WfMC(工作流联盟)提出了工作流规范和参考模型,但实际上在国内大家各干各的,每家产品都不一样,政府企业在用这些软件时需要对流程配置人员进行深入培训,对使用者进行较大规模现场培训。
为了能够涵盖可能的所有流程特例工作流系统越变越复杂,一般的政府企业内部管理人员在长时间培训后,在实施后很长一段时间内,出了问题通常想到的还是给提供服务的公司打电话解决问题,即便如此,对于大量个性化的需求,通常还需要大量的定制开发,这也应该是市场上影响力大的OA(办公自动化)软件需要很多专门做定制开发的小型服务商一起实施项目的主要原因。
维护成本高
在系统实际运转过程中,尤其是国内中小企业,其业务经常变化,同样的业务其流程也经常是过一个月一个样。这种情况下需要有专门的技术服务人员不断调整流程设置,在业务变化比较大的情况下,客户不得不考虑继续对系统进行不断的定制开发,通常在使用一年以后,其后期维护成本经常能超出初期成本。
对企业帮助不大
我相信大家在实施工作流系统的过程中,都有实施阻力大的感慨。在政府办公中,这样的阻力比企业要小一些,但在中小企业中,这样的系统给大家带来的好处不多,却经常让人感觉到增添了不少额外工作,这种情况下,实施阻力加大,成功概率进一步降低。
我们需要什么样的工作流?现有工作流系统的问题显而易见,笔者经过长期思考和实践,认为更加理想的工作流应该具备以下特征:
开发成本低
一般工作流产品都不便宜,很多项目中大部分成本是工作流产品本身的授权费用,其次才是二次开发费用。对于一般没有成熟工作流产品的公司来说,工作流产品成为很大成本负担,如果能有实用的工作流设计思路还不如自己从头开发。
易配置、易维护
纵然成熟的工作流产品都提供了图形化的配置管理工具,在面对一些流程套流程的复杂流程时,有经验的IT人员也会倍感压力;在我国大部企业中,流程变化频率非常快,且不说不断修改多麻烦,万一工作流产品本身有点小问题可能会造成更大困扰。
必须灵活
在我们实施的企业内部管理系统的一个真实案例中,文档中包含了上百个字段,在此文档中对十几个字段选择不同的内容,会启动不同的任务,而且说不好什么时候还会有变化……
我们的业务软件必须能足够灵活以适应这种复杂需求。
大道至简—标签驱动的极简工作流系统一般中小企业的实际需求是效率第一,业务规范化第二。这种“标签驱动的极简工作流系统”刚好非常契合这种要求。
工作流系统的最核心功能是引导员工正确的进行业务处理,避免犯错,提高效率,减少对新员工的培训成本。从技术上来讲,工作流实际上是驱动文档在不同员工间流转的大脑,是的,只要能正确的驱动文档即可。传统的设计思路是文档绑定流程,根据流程的逻辑走,遇上一个文档可能会启动十几个不同流程的情况,其配置和修改维护都会变得很麻烦。
(图;传统工作流模型)
“标签驱动的极简工作流系统”摒弃了文档必须通过流程(即:流程实例)驱动的思路,依据大道至简的原则,采用更加直观的设计理念,让文档来驱动任务进行业务处理。
首先,系统提供一个任务池,其中每个任务可以有自己的界面表单、自己的特殊业务逻辑;其次,文档处理过程中可以根据业务特殊情况选择标签或者修改已有标签的内容;最后,因为每个任务都有用标签来逻辑确定的激活条件,所以文档中的这些标签可以确定下一步可以执行的任务。
(图:标签驱动的工作流模型)
在文档中添加标签
关联文档和任务的最重要实体是标签,这些标签实际上是一些自定义字段,一般情况下,标签按种类分为“系统预置”和“自定义”两种。
顾名思义,系统预置是根据业务情况预置在系统里的,用户直接选择使用就可以了,这些标签也有可能绑定了特殊逻辑,比如:选择某个标签时,弹出警告信息;自定义标签是用户随意命名的,想加什么加什么。
按类型来分,标签可以分为单值标签、名值对标签。当我们把标签添加到文档中以后,这些标签将成为文档的一部分。
单值标签的添加方式可以做得很简单,可以参考新浪博客的方式,如下图:
(图:添加单值标签示意图)
(图:添加名值对标签示意图)
在添加单值和名值对标签时,标签可能是系统预置的,也可能是自定义的,在具体实现时可以进一步优化界面,方便操作。
为任务设置标签
为任务设置标签其实是设置任务的激活条件。简单来说,一个任务主要包含了特殊的处理界面、特殊的处理逻辑,每个任务通常有责任人(可能是多人),用户可以用不同的任务完成不同的业务操作。
任务的激活条件可能是多个标签的与或关系。
(图:为任务设置标签示意图)
如上图所示,可以简化设置标签的形式,每一个多行输入框里面的标签是或的关系,两个大的多行输入框之间是与的关系。
特殊情况
用这种思路进行任务设置时各任务之间完全没有耦合,在实际使用时难免发生一些问题。
未找到任何任务
文档在提交时,根据标签未找到任何匹配的任务,此时建议允许用户手工搜索或者选择一个任务执行;同时应提供一种备用任务处理以应对未曾预料到的特殊情况。
找到多个符合条件的任务
一般遇到这种情况,应该允许用户手工选择下一个阶段要执行的任务。
实施效果我们通过这样的工作流已经成功为某客户作了业务系统的实施,达到了不购买昂贵的工作流平台确达到了比主流工作流平台更好的使用效果!
在整个开发和实施的过程中,我们发现这确实是一种简单高效的方法。虽然程序员们之前没有任何工作流系统的使用和开发经验,但是因为这种思路简单直接,大家迅速就进入到了工作角色。另外,因为这些任务几乎没有任何耦合,多任务可以多人并行开发,效率很高。
在实际使用的过程中,绝大部分情况下企业管理员为任务配置的标签都是非常简单的,这些标签也非常容易理解,在修改的时候也根本不用考虑流程,哪个任务出现的不合适,就配置哪个任务就可以了。
在成功实施后,使用者可以看到文档已经流转过的痕迹,却不像主流的工作流平台那样可以“宏观”的看到整个流程图。不过实际上看不看得到未来的流程对绝大部分员工来讲根本不重要,大家只是关注我要干啥,我干完以后交给谁干:)
总结在我们看来,对于一般应用于中小企业的管理软件来说,做一个酷炫的流程配置并没有什么用,企业里更加关注的是软件能否为工作提供方便,而不是增加负担,其次才是管理的规范性,而传统的工作流系统把太多精力都放在了流程规范性上了。
亲爱的像我们一样奋战在一线的码农们,强烈建议你们再实施工作流系统时,如果客户是很务实,那就忘掉那些复杂的工作流产品吧:)