【问题标题】:How can I set the approvers for all steps in an approval process?如何为审批流程中的所有步骤设置审批人?
【发布时间】:2012-05-17 21:17:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: salesforce apex-code


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      相关资源
      最近更新 更多