ワークフローシステムを実装する必要があります。ワークフローシステムをどのように実装しますか?
例えば、いくつかのデータをエクスポートするには、私がする必要がある:
- XMLファイルを変換するXSLTプロセッサを使用し
- 任意のデータ構造に変換するために、結果の変換を使用し
- 使用インクルード(ファイルまたはデータ)を生成し、アーカイブを生成する
- アーカイブを特定のフォルダに移動します。
新しいStepオブジェクトを追加して実行する2つのタイプのクラスWorkflowを作成しました。
各ステップはStepInterfaceを実装します。
私の主な懸念事項はすべて私のステップが前のものに依存していることです(最初のものを除いて)。そして、私はそのような問題を処理する最良の方法が何であるか疑問に思っています。
私は各ステップをループし、それぞれのステップに前の(もしあれば)結果を提供しますが、実際にはそれに満足していません。
もう一つのアイデアは、「前」のステップは以下のように、ステップに設定することができるようにされているでしょう:
$s = new Step();
$s->setPreviousStep(Step $step);
しかし、私はワークフロークラスの有用性を失います。
アイデア、アドバイスはありますか?
ところで、ワークフロー全体の成功または失敗についても心配しています。これは、いずれかの手順が失敗した場合、前のデータをロールバックまたはクリーンアップする必要があることを意味します。
こんにちは、あなたの貴重な答えをありがとう、私は同じように(少なくとも最初のステップ、http://pastebin.com/KF2bp0Wy)私もStepResultのがStepInputではなく、 "設定"に関する私はSymfony2と一緒に作業していますが、結果を検証するためにConfigurationBuilderを使用するのは不思議でした。 – Trent
私はあなたがJavaでそれをやっていない限り、あなたに実装の助けを与えることはできません。 :)ロールバックを行うための "自然な"方法は逆の順序で呼び出すことです。各ステップでは、実行後の状態とまったく同じ状態になっていることがわかります。 – biziclop