95. 基于Notes/Domino的文档工作流系统(七)

本文深入探讨了基于Notes/Domino的文档工作流系统的实现,包括流程子表单设计、工作流类的构建以及错误处理。文章详细介绍了流程引擎的各个组成部分,如AbstractFlow、SimpleFlow和BatchFlow类,以及如何处理特定流程的QuerySubmit和PostSubmit业务逻辑。同时,提出了在 LotusScript 中模拟事务和错误处理的方法,以确保数据一致性。
摘要由CSDN通过智能技术生成

本文继续剖析基于Notes/Domino的文档工作流系统的设计和代码,以方便用户能应用和创建自己的工作流。(CSDN的下载资源一旦上传就不能修改,很不方便,现已将下载地址改到GitHub,若发现下载有问题,请与我联系。)
在前文对工作流建模时,我们抽象出以下几类对象:
工作流:每个工作流实例都存放工作流名称、当前节点等信息,并负责处理流程各节点的操作。
采用工作流的业务对象:在这里也就是采购单。
工作流的配置对象:不同工作流实例以及各个节点的操作的实际差异都是从配置数据中读取的。
最后一类对象体现为工作流、节点和操作三种配置文档,在上文已经介绍。前两类对象在我们的Notes工作流里保存于同一个文档,即流程文档主文档合一。现在我们就来看看与这个文档对应的表单设计和代码类。

流程子表单

流程文档的字段都包含在FlowControls子表单内,主文档对应的则是主表单,这样只要将该子表单嵌入主表单,主文档就具备了运行工作流的数据。
这里写图片描述
应用它创建你的工作流时需注意以下几点:
1. 能进行工作流的操作的用户有三类,一是流程在当前节点的处理人,保存在FlowControls子表单的PersonInCharge字段里。二是能进行像取消Cancel这样的操作的特殊用户,保存在FlowHandlers字段里。三是特权用户角色,像本演示流程用的[IT]角色,能进行上述两类操作。这个[IT]不宜配置,所以在Actions按钮的隐藏公式和代码里都直接用的。所以须将它换成你的系统里代表特权用户的角色。
2. 流程名称保存在FlowName字段里。因为位于通用的子表单内,无法直接写入特定的流程名称,所以在创建主文档时,要将应用的流程名称写入该字段。例如:

    Dim doc As NotesDocument
    'CreateDoc is a function in LS library lsNotes
    Set doc=CreateDoc("fmPurchasing")
    doc.FlowName="Purchasing"

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值