+ Start a Discussion
whitesnakewhitesnake 

Developer Editionのワークフロー・アラートメールが届くのが遅くないですか?

投稿デビュー&Salesforceデビューしたばかりです。

 

DeveloperEditionをフリーで入手して、正規版と同じ機能が無料なんて・・・すごいと思って、ガシガシ作ってみていたのですが、

あれ、ワークフローでルールしたアラートメールが届くのが遅いようなと感じてます。

やはり、無料だからでしょうか。正規版だとさくさく行くのでしょか?

 

仕組みを簡単に:

1) VisualForceの入力画面があり、そこでメールテンプレートを選択してメール送信ボタンを押します。

2) メール送信ボタンを押すと「メールを送信します」フラグをONします。

3) トリガ(Before)が動いて、「メールを送信します」フラグがONの時、メールアドレス(オブジェクトのカスタム項目のメール)にセットします。

4) ワークフロールールが起動して、メールを送信します

5) ワークフロールールが起動して、「メールを送信します」フラグをOFFにします。

 

御存じの方、教えてください。

 

whitesnakewhitesnake

いろいろと試してみた所、次のような現象が発生していました。

 

ワークフロールールA : 対象オブジェクト Object_XXX

[アクション]アラートメール送信

 

ワークフロールールB : 対象オブジェクト Object_XXX

[アクション]アラートメール送信(タイムトリガ―)

 

 としていた場合に、ワークフロールールBの方だけが送られてきました。

ワークフロールールAだけにした所、Aだけに送られました。

 

ワークフロールールC : 対象オブジェクト Object_XXX

[アクション]アラートメール送信

[アクション]アラートメール送信(タイムトリガ―)

 

として、統合してみた所、「[アクション]アラートメール送信」を送信した後に、「時間ベースのワークフロー」にあった「[アクション]アラートメール送信(タイムトリガ―)」(レコード)が

予定時刻になっていないにも関わらず、消えた!

 

 

 

 

Taiki YoshikawaTaiki Yoshikawa

ワークフローって便利ですけど、いろいろとややこしいですよね。

 

他にもワークフローの自動更新でUpdateした後にUpdateトリガーが実行されるとか、

同じ条件で動くワークフローが複数あった場合は順番が保証されないとかがあるみたいです。

 

ちなみにDeveloper Editon と他のEditonで処理速度の違いは多分ないと思います。

ちゃんと検証したことはないので、多分ですけど...(^_^;

whitesnakewhitesnake

情報ありがとうございます。

いろいろやってみて、分かったことを残します。

 

1) Apexクラス内でUpsertを実行した順序通りにトリガは実行されています。

  後先はUpsertの実行順で、その時の状態でトリガには入ってました。

 

2) トリガからバッチに移動すると、実行順序はシステムに委ねられるようです。

  (具体的な順序があるのかは不明ですが、株式会社ウフル技術さんのブログに有益な情報がありました。)

   http://deferloader.blog.uhuru.co.jp/?p=975

  ある程度、開発側で管理できるのは、トリガまでかなと思います。

 

3) バッチに入ってからの動作は、毎回実行されるタイミングがいつなのかはっきりしない。

  バッチがキューに入っている時に、Updateやワークフローの項目更新などを行うと、訳が分からない動作をすることがあった。

  監視→デバッグログで時刻を時系列に並べてみると、なるほどでした。