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)すべてを更新することは、ベストプラクティスではありません。

このトピックは、下記のモジュールにも含まれています。

If you are having problems with your training, please review the 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