ご回答ありがとうございます!
> これが既におかしい気がします。
> ワークフローの起動オプションを「作成」と「更新」に設定したなら、
> ・ワークフローの処理で更新 → ワークフロー起動せず
> ・リストの[編集]から手で更新 → ワークフロー起動
> とならないと変です。
> まずそこを確認してみてください。
すみません。
質問内容を改めて読み返してみたら、言葉足らずでした。
「listitem 作成時に開始されたワークフローがまだ実行中の場合は」 が
抜けておりました。
本番環境では listitem 作成時に開始されたワークフローが処理している
にも関わらず、listitem を更新すると新たなワークフローが開始されて
しまっている状態でした。
その後いろいろと試して、少し解ったのですが、どうも環境によって
以下の様に動作しているのでは無いかと思われる感じでした。
開発環境
①listitem 登録によるワークフロー開始.
②ワークフローから listitem 更新.
③listitem 更新によるワークフロー開始がトリガされるものの①のワークフローが
実行中である為,起動せず.
④①のワークフローが終了.
本番環境
①listitem 登録によるワークフロー開始.
②ワークフローからの listitem 更新.
③①のワークフローが終了.
④listitem 更新によるトリガで新たなワークフローが開始される.
つまり②の listitem 更新によるワークフロー開始トリガが処理されるタイミングが
違っているらしいのです。
それで推測なのですが、開発環境は 2 CPU、本番環境は 1 CPU 構成であるので
開発環境は更新トリガは並列処理/本番環境は順次処理されているのでは無いかと
思われます。
試しにワークフローの終端に Thread.Sleep で数秒の Delay を入れたら
本番環境でも開発環境と同様の処理結果となる様になりました。
こういうものなのでしょうか...。