Salesforce 对象自定义按钮上的批准/拒绝功能

Salesforce 对象自定义按钮上的批准/拒绝功能,salesforce,apex-code,Salesforce,Apex Code,我正在尝试实现在对象中的自定义按钮上具有“批准”和“拒绝”按钮的功能 我有两个问题 我们可以从自定义按钮调用apex方法吗 我们如何模拟apex类中的批准/拒绝功能 谢谢1)您需要创建一个VF页面来完成您需要的工作,并将其重定向回您希望用户所在的位置。此处描述: 2) 请看一下本例的下半部分(需求2的部分):。 然后,您可能希望从ProcessInstanceWorkitem表中查询它,而不是从结果中获取newworkItemId.get(0)值 希望这能帮助您继续前进选项1:Apex代码(ht

我正在尝试实现在对象中的自定义按钮上具有“批准”和“拒绝”按钮的功能

我有两个问题

  • 我们可以从自定义按钮调用apex方法吗
  • 我们如何模拟apex类中的批准/拒绝功能
  • 谢谢

    1)您需要创建一个VF页面来完成您需要的工作,并将其重定向回您希望用户所在的位置。此处描述:

    2) 请看一下本例的下半部分(需求2的
    部分):。
    然后,您可能希望从
    ProcessInstanceWorkitem
    表中查询它,而不是从
    结果中获取
    newworkItemId.get(0)


    希望这能帮助您继续前进

    选项1:Apex代码(http://blog.jeffdouglas.com/2010/01/04/automating-salesforce-approval-processes-with-apex-triggers/)

    以下apex代码可用于提交记录供批准

    // create the new approval request to submit
    Approval.ProcessSubmitRequest req = new Approval.ProcessSubmitRequest();
    req.setComments('Submitted for approval. Please approve.');
    req.setObjectId(Trigger.new[i].Id);
    // submit the approval request for processing
    Approval.ProcessResult result = Approval.process(req);
    // display if the reqeust was successful
    System.debug('Submitted for approval successfully: '+result.isSuccess());
    
    选项2:点击JS(http://jamesrsullivan.com/salesforcecom-start-and-approval-process-from)

    导航到:设置>自定义>机会>按钮和链接按“新建”按钮并使用以下详细信息: 标签:批准 姓名:批准 显示类型:详细信息页面按钮 行为:执行JavaScript OnClick JavaScript:

    如果((Modal.confirm&&Modal.confirm)()一旦您提交此记录 批准时,您可能无法编辑它或从 审批流程取决于您的设置。是否继续?'))|| (!Modal.confirm&&window.confirm('一旦您将此记录提交 批准时,您可能无法编辑它或从 审批流程取决于您的设置。是否继续?')) navigateToUrl('/p/process/Submit?id={!Opportunity.id}&retURL=%2F{!Opportunity.id}')


    将Opportunity替换为您的对象API名称。

    谢谢您提供的信息。。我可以提交以供批准,我想做的一件事是允许经理通过按钮批准提交的记录。我有一个VF页面,用于提交记录以供批准。我希望经理查看记录,然后批准或拒绝iti我不确定我是否理解您指的是从ProcessInstanceWorkItem查询在示例中,正在批准的WorkitemId(使用req2变量)是从示例启动批准流程时获取的。在代码中可能不是这样。我假设批准流程已经启动,您只想批准下一步。因此,您希望在数据层中找到WorkItemId。您可以通过查询来自ProcessInstanceWorkitem的。类似这样的内容应该为您提供所需的id:[从ProcessInstanceWorkitem中选择id,其中ProcessInstance.TargetObjectId=:idOfObjectToApprove];