4

我有一个包含三个步骤的审批流程,所有这些步骤都设置为分配的审批者 = 手动选择。当用户提交记录以供批准时,我想让 Apex 代码确定三个批准者是谁。但是,我看不到一种方法可以连接到批准请求提交。

如果我使用 Apex Using 提交批准Approval.process(),我可以使用 设置初始(并且只有初始)批准者ProcessSubmitRequest.setNextApproverIds()。此调用使您相信您可以指定多个批准者,因为它需要一个 Id 数组,但该数组只能有 1 个元素,否则运行时会发生错误。

一旦我知道第一个审批者的响应是什么,我就可以使用 Apex 提交她的响应,然后再次通过将ProcessWorkitemRequest实例传递给Approval.process(). 这里需要注意的是,审批者不得通过标准 UI 进行审批。相反,他们必须执行一些调用 Apex 代码的操作,以便我们可以设置下一个批准人。审查对象上的触发器或自定义按钮 + VF 页面可用于调用 Apex。

我的主要问题是,如何确保用户不使用标准的批准按钮?它们出现在 Approvals 相关列表和 salesforce 主屏幕上。它也可能在其他地方。同样,如果他们使用标准的提交和批准按钮,我没有任何方法可以设置下一个批准者。

4

1 回答 1

3

不久前我们遇到了类似的问题,并通过为某些用户创建自定义查找字段来解决它。例如,如果我们想将批准请求发送给 Director,然后是 VP,我们将 Director__c 和 MarketVP__c 字段添加到对象中。每当提交请求时,这些字段通过爬升角色层次结构填充到代码中。然后,我们的审批流程步骤根据这些字段中的值选择受让人(第一步将分配给相关用户:主管,第二步将分配给相关用户:市场副总裁等)。

为了解决标准批准按钮问题(我们有其他原因隐藏它),我们只是将其从他们的主页布局中隐藏并构建了我们自己的 VF 页面并将其包含在自定义主页组件中。该组件用作收件箱,其中包含指向等待用户批准的任何记录的链接。所有用户与批准对象的交互都是通过其他 VF 页面处理的,这些页面有自己的批准和拒绝按钮。我不知道您提交到审批流程的对象是否甚至使用 VF 页面,因此这对于您的情况可能不可行。

我知道,对不需要的东西进行了很多定制。可能不是您正在寻找的答案,但希望它是一些值得深思的东西。

于 2012-05-18T17:24:09.653 回答