2011-08-12 11 views
0

Apexコードからユーザにメッセージを渡す使いやすい方法を見つけようとしています。私はリードの挿入/更新の後に起動するトリガーを持っています。これは、更新のリストをフィルタリングし、@futureメソッドをトリガーしてリードデータを外部Webサービスにプッシュし、変換されたアカウントをいくつかの返された値で更新します。SalesforceのApexトリガから現在のユーザに通知を提供

Iは、次の操作を行いたい(X、Y及びZは、1から50までのリード線の任意の数である)

  • Xを導くリードを変換ユーザに通知し、Y及びZであろうと思いエクスポートされました(私はトリガーの実行中にこれを知っています)。
  • は、エクスポートが成功したか失敗したかをユーザーに通知します(これは@futureメソッドの実行時にX、Y、Zのそれぞれについて認識されます)。

この情報をユーザーに戻すには、どのような方法が推奨されますか?私はではなく、のメールを使用することをお勧めします(これはレコードごとに1つのメールをトリガーするので、かなりスパムで不快です)。通知メッセージをページに挿入する別の方法はありますか?私はApexPages.addMessage()を試しましたが、それは私のために何もしていないようです(エラーも通知もありません)。

答えて

1

addMessage()は、現在のページがアクティブなときにVisualforceページと標準ページの両方で動作するため、ユーザーがボタン/ VFページからアクションを実行している場合、トリガーでこれを使用すると問題なく動作します。ただし、これは、バックグラウンドで非同期に実行されるため、@futureメソッドからは使用できません。

カスタムメッセージオブジェクトを使用するのが最適な解決策です。カスタムメッセージオブジェクトには、フィールドのリストが変更され、適切なユーザーにルックアップされ、所有者として参照されます。その後、現在のユーザーに関連するオブジェクト内のレコードのクエリを表示し、それらを削除するオプションを提供するシンプルなVFページとコントローラを作成できます(DBから取得した後に自動的に削除できますが、ユーザは実際にメッセージに気づいていない)。このページを取得してダッシュボードコンポーネントの一部として使用することができます。そのため、ユーザーは自分のホームページを表示しているときにいつでも通知のリストを見ることができます。

最後に、別のオプション、その後もダイジェストメールなどに表示されるものを介してユーザにメッセージをポンプ、びびりを利用する可能性があります。..

+0

私は 'そしてaddMessage(とエラーが出)'から呼び出された場合でも、保存するときのトリガーがリードに変わります。両方の他のソリューションはうまくいくとは言えますが、私は実際にメッセージを表示して、ユーザーに見せるだけではなく、メッセージを探してどこか別の場所に移動させたいと思っています。 –

+0

トリガーはどのように起動されますか?彼らはレコードを更新して、例えば、退屈していますか? ユーザーがChatterデスクトップを実行すると、そのルートに行った場合にストリームが更新されたときに通知が表示される場合、非同期プロセスからのメッセージを画面に表示する方法は考えられません。 –

+1

ええ、彼らはリードとヒットセーブを編集しているだけです。エラーは 'addMessage()'はvisualForceページからのみ呼び出すことができると言います。 Chatterアプローチについての良い点。私はブローカーがそれを使用しているかどうかをチェックします。もしそうなら、うまくいくでしょう。 Chatterに物事を注入する方法について、適切なドキュメントを教えてください。 –

関連する問題