FileNet流程之旅

题记


我的第一支流程(文档借阅审批流程)结束了,从需求分析到编码实现,历时9天,尽管这支流程还不是很完善,但让我对FileNet中的流程设计有了整体的认识,由WorkStep 到 Workflow,这是质的变化。


需求分析


文档借阅审批流程,是我在众多流程中选取的一条有代表性的流程。其一,文档借阅在大型企业中是经常发生的一个事件流;其二,文档借阅过程中会有多个不同概念节点的参与;其三,这支流程是我以前未处理过的流程。鉴于以上原因,考虑到公司对业务的要求,我设计出如下所示的流程图:


流程图分析


这支流程包含了两种结点:Component和Activity。这两种节点是流程设计中最常用的两种节点。Component节点是Document Permission,Activity节点包括Inner Dept Manager和Other Dept Manager。

  Component节点主要使用以前开发好的程序Jar包来对节点进行验证,这里Document Permission的作用就是读取该文档是否具有借阅权限,如果有则进入下一步,否则流程结束。

 Activity节点与Component节点的不同之处在于,Activity处理的程序不是使用已编译好的Jar来处理,而是独立写程序来实现相应的功能。其次,Activity节点在处理过程中需要暴露相应的字段,使系统有权限去自动处理。Activity节点还需要指定参与人,只有相关权限的用户在分配相应的任务后才可进行任务处理。

  在该流程图中,Inner Dept Manager指定了Work Queue负责处理该节点,当任务发起后,Work Queue中的任何人都可以对任务进行处理,谁先拿到任务谁进行处理,也就是我们平时所说的“抢单”。

 Other Dept Manager,我指定的是Participant,这里Partcipant中的所有都审批通过时,该流程才正式结束,它与Work Queue的不同之处在于这里需要所有人都参与,而Work Queue只需其中一人进行处理即可。


代码里的哲学


在FileNet开发过程中,应该考虑到面向对象的三大特征,将系统的可重用性,可维护性,灵活性发展到极致。在这里,对CE以及PE操作步骤都是确定的,我们无需自己去创造一种实现方式。

 但是我们应该将我们常用的模块进行封装,以提高程序的重用性,比如我们对FileNet中的Session的处理,应该写成一个单独的模块去包装它。对于对象的处理,我们可以将它包装在现有的Map中,而不用再一行行的去写Set方法,增强程序的可读性。


MAP封装对象


private static Map<String,Object>getDataFieldMap(DocumentBorrowserVO documentBorrowser){ Map<String,Object>map = new HashMap<String,Object>(); map.put("documentName", documentBorrowser.documentName); map.put("documentExplain", documentBorrowser.documentExplain); map.put("documentType", documentBorrowser.documentType); map.put("applicant", documentBorrowser.applicant); map.put("dept", documentBorrowser.dept); map.put("stepName", documentBorrowser.stepName); return map; }


尾声


Workflow将我近期所学的知识串成一条线,从Flex界面设计,通过Cairgorm架构,借助BlazeDS,穿越到Java,过渡到FileNet。这条线只是Business图案中第一条,我还需要继续穿越,直到整个Business成为一个完整的图案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值