4

3 つのステップを含む承認プロセスがあり、そのすべてが割り当てられた承認者 = 手動選択に設定されています。ユーザーが承認のためにレコードを送信するときに、Apex コードで 3 人の承認者を特定したいと考えています。ただし、承認リクエストの送信にフックする方法がわかりません。

Apex UsingApproval.process()で承認を送信すると、 で最初の (最初の承認者のみ) 承認者を設定できProcessSubmitRequest.setNextApproverIds()ます。この呼び出しは、ID の配列を受け取るため、複数の承認者を指定できると思わせますが、配列には 1 つの要素しか含めることができません。そうしないと、実行時にエラーが発生します。

最初の承認者の応答がわかったら、Apex を使用して彼女の応答を送信し、ProcessWorkitemRequestインスタンスを に渡してすぐに次の承認者を設定しますApproval.process()。ここで重要なことは、承認者は標準 UI を介して承認してはならないということです。代わりに、次の承認者を設定できるように、Apex コードを呼び出す何かを行う必要があります。レビュー中のオブジェクトのトリガー、またはカスタム ボタン + VF ページを使用して、Apex を呼び出すことができます。

私の主な質問は、ユーザーが標準の承認ボタンを使用しないようにするにはどうすればよいですか? これらは承認関連リストと Salesforce ホーム画面に表示されます。他の場所にもあるかもしれません。繰り返しますが、彼らが標準の送信ボタンと承認ボタンを使用している場合、次の承認者を設定するためにフックする方法がありません。

4

1 に答える 1

3

しばらく前に同様の問題に遭遇し、特定のユーザーにカスタム ルックアップ フィールドを作成することで解決しました。たとえば、承認リクエストをディレクター、次に VP にルーティングする場合は、Director__c および MarketVP__c フィールドをオブジェクトに追加しました。これらのフィールドは、リクエストが送信されるたびにロール階層を登ることによってコードに取り込まれました。次に、承認プロセスのステップで、これらのフィールドの値に基づいて担当者が選択されます (最初のステップは関連ユーザー: ディレクターに割り当てられ、2 番目のステップは関連ユーザー: 市場 VP などに割り当てられます)。

標準の承認ボタンの問題 (非表示にする理由は他にもありました) を回避するために、それをホームページのレイアウトから非表示にし、独自の VF ページを作成してカスタム ホームページ コンポーネントに含めました。このコンポーネントは、ユーザーの承認待ちのレコードへのリンクを含む受信箱として機能しました。承認オブジェクトとのすべてのユーザー操作は、独自の承認ボタンと拒否ボタンを備えた他の VF ページを通じて処理されました。あなたが承認プロセスに提出しようとしているオブジェクトが VF ページを使用しているかどうかはわかりません。そのため、これはあなたの状況では実行できない可能性があります。

それを必要としないはずのものの多くのカスタマイズ、私は知っています。あなたが探している答えではないかもしれませんが、うまくいけば、それが考えの材料になることを願っています.

于 2012-05-18T17:24:09.653 に答える