Salesforce Apexの並行性の提案
-
30-09-2019 - |
質問
機能しているインバウンドメールハンドラーがあります。ただし、今のところ、ユーザーが同じオブジェクトに対して2つのメールを同時に送信するとき、私は並行性の問題について心配しています。 (私にはビジネスドキュメントフォームと、Salesforceに送信される技術ドキュメントフォームがあります。)会社名を除いて、さまざまなものが含まれています(他の誰かからSalesforceに直接送信されます)。
最後にカスタムオブジェクトを挿入しているので、同時実行の問題が心配です。これは起こるでしょうか?私のインバウンドメールハンドラーは、同じ会社の2つのカスタムオブジェクトを作成し、両方が情報の半分しか入力していません。
もしそうなら、どうすれば並行性の問題が発生するのを防ぐことができますか?現在のアイデア:-Custom_Objectのクエリは、最後にではなく、関連するアカウントを使用してすぐに実行します。 custom_objectが存在しない場合は、作成します。
乾杯、
クエン
解決
従来の意味での「並行性」は、プラットフォーム上の問題ではありません。インバウンドメールのそれぞれは、プラットフォーム上に個別のプロセス(ハンドラー)を作成し、独立して動作します。マルチパートの電子メールシナリオに対処するためのいくつかのオプションがありますが、それらを組み合わせたい場合は次のとおりです。
- スケジュール可能な頂点を使用すると、既存のアカウントを定期的に(毎日、毎週、何でも)2つのカスタムオブジェクトの存在を確認し、標準マージを使用してそれらをまとめることができます。欠点は、ユーザーがプロセスがマージする時間があるまで両方のオブジェクトを見ることができることです。モデルの「ガベージコレクター」または「クリーニングプロセス」タイプと考えてください。
- 1つのインバウンド電子メールタイプを「メイン」フォームとして使用し、他の電子メール(たとえば、Tech Doc)を非同期方法で処理できます。あなたはそれらを正しい順序で処理する可能性を高めるでしょうが、保証はありません。
- あなたの方法(クエリの最初)も完全に問題ありませんが、繰り返しますが、クエリは挿入後にオブジェクトを「キャッチ」しない可能性があり、そうでない場合は完全に見逃します。
あなたの靴の中で、私はおそらく2の組み合わせを行い、3つの組み合わせを行い、あなたが見逃しているものをきれいにします。
所属していません StackOverflow