课程章节介绍
大家好,今天我们来看一下在 Salesforce 里怎么用 Apex 代码自动处理审批流程。
简单来说,审批处理能让记录的审批过程完全由程序来控制,不用人手动点。你可以做两件主要的事:第一,把一条记录提交进某个审批流程;第二,对已经产生的工作项进行批准或拒绝。
先说提交。在 Apex 里我们要先创建一个 `Approval.ProcessSubmitRequest` 对象。通过这个对象,你可以指定要提交哪条记录,还能带上提交人、留言备注,甚至可以指定走哪个审批流程的定义。如果希望跳过流程里设置的“进入条件”检查,就直接调用 `setSkipEntryCriteria(true)`,这样无论条件满不满足都会提交。然后,调用 `Approval.process` 方法把这个请求送出去。这个方法会返回一个结果对象,我们通常叫 Process Result,里面包含了操作是否成功,以及审批实例的状态,比如状态是“待定”还是“已批准”。结果对象上还有一个 `getNewWorkitemIds` 方法,可以拿到这次提交产生的新工作项的 ID 列表。这些 ID 在下一步要用到。
好,接下来就是处理那些挂起的审批工作项,也就是执行批准或拒绝动作。这时候你需要创建一个 `Approval.ProcessWorkitemRequest` 对象。把刚才拿到的工作项 ID 设进去,然后通过 `setAction` 方法来指定动作,比如传字符串 `'Approve'` 就是批准,`'Reject'` 就是拒绝。设置好之后,同样调用 `Approval.process` 方法。这个方法也会返回 Process Result,里面就有这次操作是否成功,以及审批实例的最终状态,比如最终变为“已批准”或“已拒绝”。
有一点要特别注意,`Approval.process` 方法是受事务限制(TLR)影响的。也就是说在一个事务里你不能无限次地调用它,否则会碰到系统限制,比如 DML 操作次数上限或者审批处理次数上限。所以写批量代码时一定要考虑
关键词
Apex
Salesforce
Developer Guide