ビジネス プロセス自動化ツール (Weblogic Integration など) をプログラミング言語として (何かばかげたように聞こえる) 使用して、物事を宣言的にしていると誰かから聞いたことがあります。次に、すべてのロジックをプロセス内に配置しif
ますwhile
。
しかし、プロセスは目標に到達するための段階的なエンティティの方法ではありませんか?
私にとって、それはプロセスを完全に不可欠なものにします。どう思いますか?
ビジネス プロセス自動化ツール (Weblogic Integration など) をプログラミング言語として (何かばかげたように聞こえる) 使用して、物事を宣言的にしていると誰かから聞いたことがあります。次に、すべてのロジックをプロセス内に配置しif
ますwhile
。
しかし、プロセスは目標に到達するための段階的なエンティティの方法ではありませんか?
私にとって、それはプロセスを完全に不可欠なものにします。どう思いますか?
実際、オーケストレーション言語は、条件、ループ、およびその他の伝統的に命令的な構造を備えた命令的なスクリプト言語であり、通常はフローチャートベースのユーザー インターフェイスを通じて表現されます。彼らは確かに(私の経験では)、一般的に受け入れられている意味で宣言的であると合理的に説明される可能性のある末尾再帰関数型プログラミング、後方連鎖、またはその他のパラダイムを実装していません。
MS Workflow Foundation はルール エンジンを搭載していると宣伝されていますが、これはかなり単純化されており、多少回りくどい方法を除いて、実際にはフォワード チェーンは行われません。ILOG は実際に、特に MS ワークフロー基盤にドロップするために、ルール エンジン用のアダプターを作成しています。
他のワークフロー ツールには、より優れたルール エンジンと、宣言型と見なすことができる適切なフォワード チェーン システムがあります。ただし、ループと条件付き分岐を使用してワークフロー自体に入ると、間違いなく命令型プログラミングの領域に入ります。
ただし、一部のシステムでは、ワークフロー用にペトリネットまたは状態変更ベースのマークアップ システムも実装されています。これは、宣言型であると説明するのが合理的かもしれませんが、基盤となるシステムとの対話には依然として命令型モードがあります。それらは依然として変数を更新し、副作用があります。
MS Workflow Foundation をスクリプト言語として実際に使用しているアプリケーション (たとえば、データ分析用の TOAD など)を 1 つまたは 2 つ見たことがあります。そのため、(少なくともマーケティング目的で) プログラミング スキルを使用する必要のないスクリプト機能をアプリケーションに追加できます。
実際には、「非プログラマー」向けのスクリプト フレームワークを備えた SQL クエリの作成、編集、および実行用に設計されたツールは、実際にどのような対象者を対象としているのだろうかと疑問に思うでしょう。スクリプト言語として、ワークフロー モデリング ツールはかなり扱いにくく、抽象化の機会が非常に限られています。実際には、IronPython や Boo などの .Net ベースのスクリプト言語は、特に適切なテンプレート メカニズムと組み合わせて使用すると、そのようなツールに非常に強力な追加機能となります。
この種のグラフィカル言語についての 1 つのポイントは、複雑さに応じて適切に拡張できないことです。同様の問題が ETL ツールにも当てはまります。Crossworlds (現在は Websphere Integrator として知られています) で (皮肉なことに) 行われたプロビジョニング アプリケーション (以下を参照) を見たことがあります。アプリケーションを開始してから 1 か月以内に、グラフィカル ワークフロー言語はアプリケーションの複雑さに対応できないことが明らかになり、Java で記述されたカスタム ルール エンジンとかなり大規模な特注のボディに基づいて再構築されました。ジャバコード。
この種の問題は、EAI およびオーケストレーション システムでは珍しくなく、実際にSOAを実装するのが難しい理由の 1 つです。あなたがしていることは、実際にはビジネス ロジックを、公式には認められていない非常にぎこちないプログラミング環境に押し込むことです。これは単純なケースでは機能しますが、複雑なシステムで機能させるのは困難です。これは、SOA サークルでは一種の有罪の秘密です。
Coda: プロビジョニング アプリケーションは、電気通信サービス契約 (この場合は携帯電話ネットワーク) の計画を立て、ルールに基づいて構成情報をさまざまなスイッチ、請求アプリケーション、およびその他のアプリケーションにプッシュするシステムです。それらはかなり複雑になる傾向があります。1 か月あたり非常に多くの通話時間と非常に多くのテキストを含む携帯電話プランを購入すると、プロビジョニング アプリケーションが、アクセスおよび課金ルールに関する構成情報をシステムの残りの部分にプッシュします。
宣言型プログラミングについて話すとき、それは間違いなく、人々が通常意味することではありません。