2016-04-20 12 views
0

複数のスタンドアロンアプリケーションを1つのワークフローに組み込むことができるオフィスでは、少し複雑なシナリオがあります。私は今この1つのワークフローのために6つのアプリケーションを実行することを避けるための戦略を検討しており、これらの小さなアプリケーションを順番に実行するオーバーアーチ型のアプリケーションを作成することが最も適切な解決策であると確信しています。複数のアプリケーションのワークフローを合理化するための戦略

アプリは互いの結果に依存しませんが、特定のインスタンスで実行する必要があり、ステップ1が失敗した場合などはステップ2を実行できません。ロールバックは必要ありません。アプリの中には、このワークフローと同様にスタンドアロンのシナリオでも使用されるものがありますので、コードを複製するのではなく、それらのアプリケーションを再利用できるようになります。

制御アプリケーションでは、ワークフローを拡張することもできます。ワークフローの修正が必要な場合は、ステップ1とステップ2の間に新しいステップを「プラグイン」することができます。さらに、ワークフローを絶えず実行できるようにキューシステムを構築するなどの作業を実行できるようにする必要があります。

私は自分の考えを正しい軌道に乗っていますか?このアプローチには限界がありますか?

答えて

0

1)これらのより小さいアプリのソースコードをお持ちの場合は、「ワークスペース」として機能するアプリケーション全体を再作成し、この大きなアプリに直接含まれる作業のさまざまなステップを作成することをおすすめします。

このアプローチの利点:

  • 速く実行(代わりに一つだけ使用するたびに新しいプロセス/アプリケーションのロード)の展開(1つのアプリケーションがXよりも簡単です

  • 単純に)

  • より良く、カスタマイズされたGUI

2)そうでなければ、これらのアプリケーションのソースコードを持っていないので、これらを再作成することは不可能です(リバースエンジニアリングを除く)、あなたのアプローチはあなたのシナリオで可能な唯一のものに見えます。 この場合、これらのアプリに使用するAPIがない場合、最も愚かで実際には、System.Diagnostics.Process クラスを使用して、必要なときにすべてのアプリに対してプロセスを開始するだけです。

ここでは、このアプローチの例:

Process process = new Process(); 
string path = @"C:\path\to\the\app1.exe"; 
ProcessStartInfo processStartInfo = new ProcessStartInfo(path); 
processStartInfo.UseShellExecute = false; 
process.StartInfo = processStartInfo; 
process.Start(); 

のように...あなたがアプリケーションを起動するたびに。あなたは2可能性があり、これらのアプリケーションを殺すため

process.Kill()を呼び出すことによって、手動で をプロセスを強制終了したり、アプリケーションが自身

を殺してみましょう
関連する問題