【问题标题】:SalesForce.com - Reporting on approval process workaroundsSalesForce.com - 报告审批流程变通办法
【发布时间】:2010-12-17 17:33:54
【问题描述】:

我试图解决的问题是我们无法报告待批准的情况。

我已经看到了我们在每个步骤之后执行的操作中更新正在路由的对象上的字段的建议 - 但是当该步骤用于并行批准时,这不起作用。

我找不到一个可以附加触发器的对象,该触发器会在每个人批准后触发。

在一天结束时,我需要能够生成一份报告,说明谁需要批准什么(我知道每个人都会在他们的主页上看到他们需要批准的内容,我需要其他人能够拉所有待批准的报告)。

有什么想法吗?

【问题讨论】:

    标签: triggers workflow salesforce apex-code


    【解决方案1】:

    由于我确实需要任何人都能够在任何给定时间检查特定用户的所有待处理批准或待处理批准,因此我创建了一个 VisualForce 页面并使用以下查询,具体取决于查找每个待处理批准或用户的批准.

    对于所有待批准:

    [SELECT Status, TargetObject.Name, TargetObjectId, TargetObject.Type, (SELECT Actor.Id, Actor.Name, Actor.Email, CreatedDate FROM WorkItems)
                                        FROM ProcessInstance
                                        WHERE TargetObject.Type = 'ObjectICareAbout__c' and Status='Pending']
    

    对于给定用户的待批准:

    [SELECT ActorId, Actor.Name, Actor.Email, CreatedDate, ProcessInstance.Status, ProcessInstance.TargetObjectId, ProcessInstance.TargetObject.Name
                                                FROM ProcessInstanceWorkitem
                                                WHERE ActorId = :user AND ProcessInstance.Status = 'Pending' AND ProcessInstance.TargetObject.Type = 'ObjectICareAbout__c']
    

    然后将它们映射到通用视图模型以显示在 VF 页面中。

    【讨论】:

      【解决方案2】:

      首先 - 转到报告 -> 管理报告 -> 所有待处理的批准请求

      检查一下,看看是否可以对其进行微调以满足您的需求。如果您需要能够与非管理员共享它 - 考虑用它制作一个仪表板(可以是表格)并安排它用于日常运行和电子邮件发送......

      如果您觉得仍然需要解决方法 - 我们当然可以尝试

      但是,当该步骤用于并行批准时,这不起作用

      您是否尝试过在更新中使用公式?像someHiddenNumberField +1 这样的东西可能会起作用(我目前无法在我的开发版中测试它);如果不是直接这样,那么使用一些语法糖,如PRIORVALUE()。或者甚至更好 - 有一个文本字段并在其中附加日期/时间 + 谁批准。然后在最后一步清除“计数器”并完成。

      如果基于公式的更新技巧不起作用(没有承诺,这只是一个想法),那么可能会保留设置特殊字段的旧方法,但还要在此对象上定义“更新前”触发器(或工作流? 但这又是一个公式),它将检查值、更新“计数器”并将隐藏字段设置回原始值。

      【讨论】:

      • 在“报告 -> 管理报告 -> 所有待处理的批准请求”中刚刚听说了这一点,但由于某种原因,它在我们的组织中不可用。 SFDC 的人不知道为什么 - 想一想。
      • 仅供参考-确实发现我可以使用以下 SOQL 访问此信息; [SELECT Status, TargetObject.Name, TargetObjectId, TargetObject.Type, (SELECT Actor.Id, Actor.Name, Actor.Email, CreatedDate FROM WorkItems) FROM ProcessInstance WHERE TargetObject.Type = 'ObjectICareAbout__c' and Status='Pending']这在 VF 页面后面是我的核心选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多