Skip to main content

モジュラーデプロイメント戦略 

ルールセットを1つのケースタイプに特化することで、再利用を促進するのに役立ちます。 ルールセットを1つのケースタイプに特化させる理由には、以下のようなものがあります。

  • 継続的統合(CI)のブランチベース開発を実現する。
  • プロジェクトソフトウェアリリースを管理するためにAgile Studioのスクラム方式を使用してケース指向のユーザーストーリーを奨励する。
  • 異なるルールセットから発生したルールを含むブランチを管理する。 このような場合、ブランチルールセットが生成され、生成されたルールセットは元のルールセットの名前をブランチ名の前に付けます。
  • ブランチに複数のユーザーストーリーを格納する。
  • ルールをブランチにチェックする際に、Agile WorkbenchのWork item to associateフィールドに入力する機能を簡素化する。
rule_checkin
この図は、ブランチにルールがチェックされている間に、Agile Workbenchのワークアイテムをマッピングする方法を示しています。   

Agile Studio内でプロジェクトを作成すると、バックログのワークアイテムも作成されます。 基礎アプリケーションに組み込むアプリケーションを開発する場合、Agile Studioのバックログには、基礎アプリケーションのケースタイプごとにユーザーストーリーを事前入力しておくことができます。 Minimum Loveable Product(MLP)のリリースに適したケースタイプは、このバックログから選択できます。 

PegaのDeployment Managerには、ブランチベース開発のサポートなど、CI/CDパイプラインを管理する方法が用意されています。 1つのブランチがプライマリーアプリケーションへのマージに成功した場合に、DevからQAへのデプロイメントを自動的にトリガーすることが可能です。 これを実現するには、そのブランチにチェックされたルールがプライマリーアプリケーションにのみ属する必要があります。

Case Designerは、同じアプリケーション内で複数のケースタイプの開発をサポートしますが、ケースタイプ固有のルールセット内にケースタイプクラスを作成すると、Dev StudioのCase Designerで生成されたルールがそのルールセットに追加されます。

ブランチベース開発のレビュー

アプリケーションブランチは、Dev StudioのApp Explorerで管理されます。

BookEvent-branch
この図は、Dev Studioを使用して既存のアプリケーションにブランチを追加する方法を示しています。  

次の画像に示すとおり、ブランチを1つのケースタイプに特化する必要はありませんが、そうすることでブランチのレビュープロセスが簡素化されます。

BookEvent-branch-list
この図は、Dev StudioのBranch explorerに新しく追加されたブランチを示しています。  

ケース固有のルールセットのケース関連ルールがブランチに保存されると、ケース固有のブランチルールセットがまだ存在しない場合には生成されます。 ルールに影響を与えるCase Designer内での変更は、そのルールの分岐ルールセットのバージョン内で発生します。 ブランチルールセットが作成されると、アプリケーションのルールセットスタックの一番上に配置されます。

BookEvent-branch-appstack
この図は、新しいブランチが追加された場合にアプリケーションのルールセットスタックの一番上に配置されたブランチルールセットを示しています。  

1つのブランチをマージするには、アプリケーションエクスプローラーの「Branches」タブで、ブランチ名を右クリックしてメニューを表示します。

BookEvent-branch-merge
この図は、ブランチをDev StudioのBranch explorerからメインルールセットにマージする方法を示しています。  

マージプロセスの終了時に、「Keep all source rules and rulesets after merge」オプションが選択されていない場合、ブランチは空になります。 ブランチは、Agile Studioで定義された次の一連のタスク、課題、またはバグに使用できます。

Deployment Managerのブランチベースの開発

単一のブランチのマージがアプリケーションを正常に完了した場合に、別のオーケストレーションサーバー上で実行しているDeployment Managerアプリケーションが、自動的にデリバリーを開始するように設定されているシナリオを検討してください。 また、同じPegaDevOpsFoundationアプリケーション上に構築された開発環境アプリケーションが、RMURL(Release Manager URL)Dynamic System Setting(D-S-S)を設定して、オーケストレーションサーバーのPRRestServiceを指すようにしたとします。 単一のブランチのマージを開始する場合、開発環境はDeployment Managerアプリケーションにリクエストを送信します。 Deployment Managerアプリケーションは、開発環境内でのアプリケーションのパッケージ化、そのパッケージのDev/QA相互のリポジトリへの公開、およびそのパッケージのQA環境へのインポートを統制します。

アプリケーションのパッケージング

Application Packagingウィザードの最初の画面では、生成された製品ルールに含める組み込みアプリケーションとパッケージ化されたアプリケーションの確認が行われます。 コンポーネントは、pyMode = ComponentのRule-Applicationでもあることに注意してください。

同じルールセットを参照する複数のアプリケーションはできるだけ避けてください。 アプリケーションルールを新しい名前に保存すると、両方のアプリケーションにワーニングが表示されます(二重に参照されるルールセットごとに1つのワーニング)。

デプロイされる本番アプリケーションが、他の複数の組み込みコンポーネントアプリケーションに依存する場合は、デプロイメント戦略に違いが生じます。

製品ファイルにデプロイメントの一部としてDatabaseスキーマの変更が含まれ、組織のポリシーでDatabaseスキーマの変更の自動適用がサポートされていない場合は、ルールのデプロイメントを続行する前に、スキーマ変更用のSQLを生成して、DBAで手動実行する必要があります。

Application_version
この図は、アプリケーションA1とA2が右に向かってバージョニングされていくことを示しています。 アプリケーションA3は、A1とA2上に構築されます。 アプリケーションA1とA2は、本番アプリケーションではありません。 それでもなお、アプリケーションA1とA2は、アプリケーションA3が開発される環境など、他の開発チームの環境にデプロイされることがあります。 アプリケーションA1とA2により加えられたバージョンの変更を確認することは、アプリケーションA3の責任です。 ある時点で、アプリケーションA3は、その下位で起こるバージョンの変更を反映するために、バージョンも変更するよう決定する必要があります。  

FSG Bookingアプリケーションの例について考えてみましょう。 最初にFSGEmailアプリケーション、次にHotelアプリケーション、続いてBookingアプリケーションがパッケージ化されます。

コンポーネントのみをパッケージ化したプロダクトルールを定義することは可能ですが、そうする必要はありません。 次の図に示すように、コンポーネントは、コンポーネントルール自体を使用してパッケージ化できます。

Component_example
この図は、コンポーネントルールをデプロイメントの一部として使用して、コンポーネントをパッケージ化する方法を示しています。  

Deployment Managerは、pyMode = ApplicationpyMode = Componentのルールアプリケーションインスタンスのパイプラインをサポートします。 アプリケーションがパッケージ化され、1つ以上のコンポーネントが含まれる場合、それらのコンポーネントもパッケージ化する必要があります。

product_rule
この図は、コンポーネントを使用するアプリケーションとともにコンポーネントをProductルールでパッケージ化できることを示しています。 コンポーネントの名前は、EmailEditorです。 アプリケーションの名前は、FSGEmailです。  

パッケージングとデプロイメントに適用されるOpen-Closed原則

Open-Closed原則の目標は、波及効果を排除することです。 波及効果は、新しいインターフェイスを定義して既存のインターフェイスを非推奨にするのではなく、オブジェクトがそのインターフェイスに変更を加える場合に発生します。 FSGEmailやHotelなど、他のアプリケーションが構築されるアプリケーションのプライマリインターフェイスは、データの伝播を利用して新しいインターフェイスを構築するために必要なデータです。 EmailEditorコンポーネントが新しいプロパティを義務付ける場合、FSGEmailアプリケーションは、その上に構築されるHotelアプリケーションなどのアプリケーションへのインターフェイスを変更する必要があります。 次に、Hotelアプリケーションは、Bookingアプリケーションが新しい必須プロパティの値を指定できるように、組み込みインターフェイスを変更する必要があります。

アプリケーションを個別かつ依存度の高い順にデプロイすることで、最終的にはBookingアプリケーションの下のアプリケーションを破壊することなく、EmailEditorコンポーネントの変更がBookingアプリケーションで利用できるようになります。

補足: Bookingアプリケーションに関連するブランチを使用して、3つのアプリケーション(FSGEmail、Hotel、Booking)すべてを更新することは、ベストプラクティスではありません。

トレーニングを実施中に問題が発生した場合は、Pega Academy Support FAQsをご確認ください。

このコンテンツは役に立ちましたか?

改善できるところはありますか?

We'd prefer it if you saw us at our best.

Pega Academy has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice