0

remoteAction からの承認のためにカスタム オブジェクトを送信しようとしています。この時点まで、Apex pageReference コントローラ メソッドを使用してきましたが、これは期待どおりに機能しています。

承認リクエストは次のように作成されています。

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 によって呼び出されたときにワークフローが適用されず、そうでない場合は受け入れられる理由はありますか? 両方の呼び出しを同じコンテキストで実行する方法はありますか?

編集:Gerardのコメントに対処するために修正

4

1 に答える 1

1

Salesforce ドキュメントwith shared または without shared キーワードの使用

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 に答える