0

我正在尝试提交一个自定义对象以供 remoteAction 批准。到目前为止,我们一直在使用 Apex pageReference 控制器方法,该方法一直按预期工作。

Approval 请求的构建如下:

public static string submitQuote(id quoteId){
    Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
    req1.setComments('Submitting for Approval');
    req1.setObjectId(quoteId);
    req1.setNextApproverIds(new ID[]{UserInfo.getUserId()});
    Approval.ProcessResult pr = Approval.process(req1);
    return 'Success';
}

如果我们从标准方法调用 submitQuote,它适用于我们确定的所有情况。当我们使用远程操作调用该方法并且正在运行的用户不是商机所有者或报价创建者(这些是批准工作流中的初始提交者)时,他们会收到以下错误:

NO_APPLICABLE_PROCESS, No applicable approval process found.

机会所有者和/或报价创建者可以使用远程操作提交而不会出错。

是否有理由使工作流程在由 remoteAction 调用时不适用,但在不适用时会被接受?有没有办法让两个调用在相同的上下文中运行,所以它们会工作而不是类似地工作?

编辑:更正以解决杰拉德的评论

4

1 回答 1

1

Salesforce 文档使用共享或不共享关键字

Apex generally runs in system context; that is, the current user's permissions, 
field-level security, and sharing rules aren’t taken into account during code execution.

Note
The only exceptions to this rule are Apex code that is executed with the executeAnonymous call. 
executeAnonymous always executes using the full permissions of the current user. 
For more information on executeAnonymous, see Anonymous Blocks.
于 2012-08-22T17:57:41.037 回答