検索

Spring Boot での Red Hat Decision Manager ビジネスアプリケーションの作成

download PDF
Red Hat Decision Manager 7.2

ガイド

概要

本ドキュメントでは、Spring Boot スターターを使用して Red Hat Decision Manager のビジネスアプリケーションを作成する方法について説明します。

はじめに

開発者は、business application の Web サイトから Spring Boot スターターを使用して、Red Hat Decision Manager ビジネスアプリケーションをすばやく作成して設定し、既存のサービスやクラウドにデプロイできます。

第1章 Red Hat Decision Manager ビジネスアプリケーション

Spring Framework は、Java アプリケーション開発用に包括的なインフラストラクチャーサポートを提供する Java プラットフォームです。Spring Boot は、Spring Boot スターターをベースにした、軽量フレームワークです。Spring Boot スターターは、pom.xml ファイルで、このファイルにはアプリケーションに追加可能な依存関係の記述子セットが含まれます。

Red Hat Decision Manager ビジネスアプリケーションは、特定のビジネス機能を提供する個別サービスを柔軟に、UI に依存せず、論理的にグループ化します。ビジネスアプリケーションは、Spring Boot スターターをベースにしています。通常、個別にデプロイされ、個別にバージョン管理できます。完全なビジネスアプリケーションを使用すると、ドメインは特定のビジネスゴール (たとえば、順序管理や補助管理など) を達成できます。

business application の Web サイトで、Process Automation Manager、Decision Manager、または Business Optimizer ビジネスアプリケーションを作成できます。ビジネスアプリケーションを作成して設定した後には、OpenShift で、既存のサービスやクラウドにデプロイできます。

ビジネスアプリケーションには、以下のプロジェクト 1 つ以上と、同じ型のプロジェクトを複数含めることができます。

  • ビジネスアセット (KJAR): ビジネスプロセス、ルール、フォームが含まれており、Decision Central へのインポートが簡単です。
  • データモデル: データモデルのプロジェクトでは、サービスプロジェクトやビジネスアセットプロジェクト間で共有される、共通のデータ構造を提供しています。これにより、適切なカプセル化、再利用の促進、ショートカットの軽減が可能になります。各サービスプロジェクトは、独自の公開データモデルを公開できます。
  • サービス: 実際のサービスにさまざまな機能を提供する、展開可能なプロジェクト。これには、ビジネスを管理するビジネスロジックが含まれます。多くの場合に、サービスプロジェクトにはビジネスアセットとデータモデルプロジェクトが含まれます。ビジネスアプリケーションは、サービスをより小さなコンポーネントサービスプロジェクトに分割して、管理性を向上できます。

第2章 ビジネスアプリケーションの作成

business application の Web サイトで、Spring Boot フレームワークを使用してすばやく簡単にビジネスアプリケーションを作成できます。これにより、Red Hat Decision Manager のインストールと設定の必要性がなくなります。

手順

  1. Web ブラウザーで、以下の URL を入力します。

    https://start.jbpm.org
  2. Configure your business application をクリックします。
  3. Decision Management をクリックし、Next をクリックします。
  4. パッケージとアプリケーション名を入力します。
  5. Version メニューから Enterprise 7.2 を選択し、Next をクリックします。

    注記

    Enterprise 7.2 を選択して、Red Hat Decision Manager ビジネスアプリケーションを作成する必要があります。

  6. プロジェクトに追加するプロジェクトの種類を選択します。プロジェクトタイプは、複数追加できます。

    • ビジネスアセット: ビジネスプロセス、ルール、フォームが含まれており、Decision Central に簡単にインポートできます。また、ケースなどのように適応性があり、動的なアセットを追加する場合は、動的アセット を使用します。
    • データモデル: サービスプロジェクトやビジネスアセットプロジェクト間で共有される、共通のデータ構造を提供します。これにより、適切なカプセル化、再利用の促進、ショートカットの軽減が可能になります。各サービスプロジェクトは、独自の公開データモデルを公開できます。
    • サービス: ビジネスを動かすビジネスロジックが含まれます。
  7. Generate business application をクリックします。

    <business-application>.zip ファイルがダウンロードされます。<business-application>Application Name のボックスで入力した名前に置き換えてください。

  8. <business-application>.zip ファイルを展開します。
  9. テキストエディターで、<business-application>/business-application-service/src/main/docker/settings.xml ファイルを開きます。
  10. 以下のリポジトリーを repositories 要素に追加します。

    <repository>
      <id>jboss-enterprise-repository-group</id>
      <name>Red Hat JBoss Enterprise Maven Repository</name>
      <url>https://maven.repository.redhat.com/ga/</url>
      <layout>default</layout>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </repository>
  11. 以下のプラグインを pluginRepositories 要素に追加します。

    <pluginRepository>
      <id>jboss-enterprise-repository-group</id>
      <name>Red Hat JBoss Enterprise Maven Repository</name>
      <url>https://maven.repository.redhat.com/ga/</url>
      <layout>default</layout>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </pluginRepository>

    これにより、お使いのビジネスアプリケーションに、製品化した Maven リポジトリーが追加されます。

第3章 ビジネスアプリケーションの設定

3.1. ビジネスアプリケーションの認証と承認

デフォルトでは、全 REST エンドポイント (/rest/ を含む URL) を保護することで、ビジネスアプリケーションのセキュリティーを確保します。さらに、ビジネスアプリケーションには認証情報のログが 2 セットあり、ユーザーが開発モードで Decision Central に接続できるようになっています。ID が user、パスワードが user のユーザーと、ID が kieserver、パスワードが kieserver1! のユーザーがあります。

認証も承認も Spring セキュリティーをもとに行われます。実稼働環境で使用するすべてのビジネスアプリケーションで、このセキュリティー設定を変更してください。設定は、<business-application>/<business-application>-services/src/main/java/com/company/service/DefaultWebSecurityConfig.java ファイルで変更できます。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;


@Configuration("kieServerSecurity")
@EnableWebSecurity
public class DefaultWebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .csrf().disable()
        .authorizeRequests()
        .antMatchers("/rest/*").authenticated()
        .and()
        .httpBasic();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("user").roles("kie-server");
        auth.inMemoryAuthentication().withUser("kieserver").password("kieserver1!").roles("kie-server");
    }
}

3.2. application.properties ファイルの設定

ビジネスアプリケーションを作成したら、application.properties ファイルで、複数のコンポーネントを設定してアプリケーションをカスタマイズできます。

前提条件

  • business application の Web サイトを使用して作成した <business-application>.zip ファイルがある。

手順

  1. <business-application>.zip ファイルを展開して、<business-application>/<business-application>-service/src/main/resources フォルダーに移動します。
  2. テキストエディターで application.properties ファイルを開きます。
  3. たとえば、以下のように REST エンドポイントのホスト、ポート、およびパスを設定します。

    server.address=localhost
    server.port=8090
    
    cxf.path=/rest
  4. 以下のように、簡単に識別できるように Decision Server (kieserver) を設定します。

    kieserver.serverId=<business-application>-service
    kieserver.serverName=<business-application>-service
    kieserver.location=http://localhost:8090/rest/server
    kieserver.controllers=http://localhost:8080/jbpm-console/rest/controller

    以下の表で、ビジネスアプリケーションに設定可能な Decision Server のパラメーターを一覧で紹介します。

    表3.1 kieserver パラメーター
    パラメーター説明

    kieserver.serverId

    string

    Decision Manager コントローラーに接続時にビジネスアプリケーションを識別するために使用する ID。

    kieserver.serverName

    string

    Decision Manager コントローラーへの接続時にビジネスアプリケーションを識別するのに使用する名前。kieserver.serverId パラメーターに使用した文字と同じものを使用できます。

    kieserver.location

    URL

    REST API を使用する他のコンポーネントがこのサーバーの場所を識別するために使用します。server.address および server.port で定義されている場所は使用しないでください。

    kieserver.controllers

    URL

    コントローラー URL のコンマ区切りリスト

  5. ビジネスアプリケーションの作成時に Business Automation を選択した場合は、以下のコンポーネントの中から、ランタイムに起動するコンポーネントを指定します。

    表3.2 kieserver ケーパビリティーパラメーター
    パラメーター説明

    kieserver.drools.enabled

    true, false

    Decision Manager コンポーネントを有効または無効にします。

    kieserver.dmn.enabled

    true, false

    DMN (Decision Model and Notation) コンポーネントを有効または無効にします。

3.3. Red Hat Single Sign-On を使用したビジネスアプリケーションの設定

Red Hat Single Sign-On (RH SSO) を使用して、サービス間のシングルサインオンを有効にし、一元的にユーザーとロールの設定や管理ができます。

前提条件

手順

  1. Red Hat シングルサインオン (SSO) をダウンロードし、インストールしている。手順は、Red Hat Single Sign-On スタートガイド を参照してください。
  2. RH SSO を設定します。

    1. デフォルトのマスターレルムを使用するか、新しいレルムを作成します。
    2. springboot-app クライアントを作成して、パブリックに AccessType を追加します。
    3. 以下のように、ローカルの設定に合わせて有効なリダイレクト URI と Web オリジンを設定します。

      • 有効なリダイレクト URI: http://localhost:8090/*
      • Web オリジン: http://localhost:8090
    4. アプリケーションで使用するレルムロールを作成します。
    5. アプリケーションで使用するユーザーを作成してロールを割り当てます。
  3. サービスプロジェクトの pom.xml ファイルに以下の依存関係を追加します。

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>org.keycloak.bom</groupId>
          <artifactId>keycloak-adapter-bom</artifactId>
          <version>${version.org.keycloak}</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
      ....
    
    <dependency>
      <groupId>org.keycloak</groupId>
      <artifactId>keycloak-spring-boot-starter</artifactId>
    </dependency>
  4. application.properties ファイルを更新します。

    # keycloak security setup
    keycloak.auth-server-url=http://localhost:8100/auth
    keycloak.realm=master
    keycloak.resource=springboot-app
    keycloak.public-client=true
    keycloak.principal-attribute=preferred_username
    keycloak.enable-basic-auth=true
  5. DefaultWebSecurityConfig.java ファイルを変更して、RH SSO で Spring Security が正しく動作することを確認します。

    import org.keycloak.adapters.KeycloakConfigResolver;
    import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
    import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider;
    import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper;
    import org.springframework.security.core.session.SessionRegistryImpl;
    import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy;
    import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;
    
    @Configuration("kieServerSecurity")
    @EnableWebSecurity
    public class DefaultWebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            super.configure(http);
            http
            .csrf().disable()
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .httpBasic();
        }
    
        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
            SimpleAuthorityMapper mapper = new SimpleAuthorityMapper();
            mapper.setPrefix("");
            keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(mapper);
            auth.authenticationProvider(keycloakAuthenticationProvider);
        }
    
        @Bean
        public KeycloakConfigResolver KeycloakConfigResolver() {
           return new KeycloakSpringBootConfigResolver();
        }
    
        @Override
        protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
            return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
        }
    }

3.4. ビジネスアプリケーションのユーザーグループプロバイダーの設定

Red Hat Decision Manager を使用すると、人間中心のアクティビティーを管理できます。2 つの KIE API エントリーポイントを使用して、ユーザーリポジトリーおよびグループリポジトリーを統合できます。

  • UserGroupCallback: ユーザーまたはグループが存在するかどうかを確認して、特定のユーザーのグループの情報を集めます。
  • UserInfo: メールアドレスや設定言語など、ユーザーおよびグループの追加情報を収集します。

すぐに使用できるコードまたはカスタムの開発コードなど、代わりのコードを指定すると、これらの両コンポーネントを設定できます。

UserGroupCallback コンポーネントについては、デフォルトの実装はアプリケーションのセキュリティーコンテキストをもとにしているため、この実装が保持されます。このように、どのバックエンドストアを認証や承認 (例: RH-SSO) に使用するかは重要ではありません。ユーザーやグループの情報収集用の情報源として、この実装が自動的に使用されます。

UserInfo コンポーネントは、より詳細にわたる情報を収集するため、別のコンポーネントとなっています。

前提条件

  • business application の Web サイトを使用して作成し、ビジネス自動化プロジェクトが含まれる <business-application>.zip ファイルがある。

手順

  1. UserGroupCallback の別の実装を提供するには、以下のコードを、アプリケーションクラスに追加するか、@Configuration のアノテーションが付いた別のクラスに追加します。

    @Bean(name = "userGroupCallback")
    public UserGroupCallback userGroupCallback(IdentityProvider identityProvider) throws IOException {
        return new MyCustomUserGroupCallback(identityProvider);
    }
  2. UserInfo の別の実装を提供するには、以下のコードを、アプリケーションクラスに追加するか、@Configuration のアノテーションが付いた別のクラスに追加します。

    @Bean(name = "userInfo")
    public UserInfo userInfo() throws IOException {
        return new MyCustomUserInfo();
    }

3.5. Swagger ドキュメントの有効化

Red Hat Decision Manager ビジネスアプリケーションのサービスプロジェクトで利用可能なすべてのエンドポイントに関する Swagger ベースのドキュメントを有効にできます。

前提条件

手順

  1. <business-application>.zip ファイルを展開して、<business-application>/<business-application>-service フォルダーに移動します。
  2. テキストエディターでサービスプロジェクト pom.xml ファイルを開きます。
  3. サービスプロジェクトの pom.xml ファイルに以下の依存関係を追加して、このファイルを保存します。

    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
      <version>3.2.6</version>
    </dependency>
    <dependency>
      <groupId>io.swagger</groupId>
      <artifactId>swagger-jaxrs</artifactId>
      <version>1.5.15</version>
      <exclusions>
        <exclusion>
          <groupId>javax.ws.rs</groupId>
          <artifactId>jsr311-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  4. Swagger UI を有効にするには (任意)、以下の依存関係を pom.xml ファイルに追加して、このファイルを保存します。

    <dependency>
      <groupId>org.webjars</groupId>
      <artifactId>swagger-ui</artifactId>
      <version>2.2.10</version>
    </dependency>
  5. テキストエディターで <business-application>/<business-application>-service/src/main/resources/application.properties ファイルを開きます。
  6. Swagger サポートを有効にするには、以下の行を application.properties ファイルに追加します。

    kieserver.swagger.enabled=true

ビジネスアプリケーションの起動後に、http://localhost:8090/rest/swagger.json で Swagger ドキュメントを表示できます。エンドポイントの完全なセットは、http://localhost:8090/rest/api-docs/?url=../swagger.json から入手できます。

第4章 ビジネスアプリケーションの実行

デフォルトでは、ビジネスアプリケーションには、実行プロジェクト、つまりサービスプロジェクトが 1 つ含まれています。サービスプロジェクトは、Windows または Linux のスタンドアロンまたは開発(管理対象)モードで実行できます。スタンドアロンモードを使用すると、追加の要件なしでアプリケーションを起動できます。開発モードで開始されたアプリケーションは、Decision Central を Decision Manager コントローラーとして使用する必要があります。

4.1. スタンドアロンモードでのビジネスアプリケーションの実行

スタンドアロン (管理対象外) モードでは、追加要件なしにビジネスアプリケーションを起動できます。

前提条件

  • business applications の Web サイトを使用して作成した <business-application>.zip ファイルがある。
  • ビジネスアプリケーションが設定されている。

手順

  1. <business-application>/<business-application>-service ディレクトリーに移動します。
  2. 以下のコマンドの 1 つを実行します。

    表4.1 スタンドアロンの起動オプション

    コマンド

    説明

    ./launch.sh clean install

    (Linux または UNIX) スタンドアロンモードで起動します。

    ./launch.bat clean install

    (Windows) スタンドアロンモードで起動します。

    ./launch.sh clean install -Pmysql

    (Linux または UNIX) MySQL データベースでアプリケーションを設定した場合に、スタンドアロンモードで起動します。

    ./launch.bat clean install -Pmysql

    (Windows) MySQL データベースでアプリケーションを設定した場合に、スタンドアロンモードで起動します。

    ./launch.sh clean install -Ppostgres

    (Linux または UNIX) PostgreSQL データベースでアプリケーションを設定した場合に、スタンドアロンモードで起動します。

    ./launch.bat clean install -Ppostgres

    (Windows) PostgreSQL データベースでアプリケーションを設定した場合に、スタンドアロンモードで起動します。

    clean install の引数で、Maven に、新規インストールをするように指示を出します。プロジェクトは、以下の順番に構築されます。

    • データモデル
    • ビジネスアセット
    • サービス

      スクリプトの初回実行時には、プロジェクトの依存関係がすべてダウンロードされるため、プロジェクトのビルドに時間がかかる場合があります。ビルドの最後に、アプリケーションが起動します。

  3. 以下のコマンドを入力して、ビジネスアプリケーションにアクセスします。

    http://localhost:8090/
  4. 認証情報 user/user または kieserver/kieserver1! を入力します。

4.2. 開発モードでのビジネスアプリケーションの実行

開発 (管理対象) モードでは、開発者は Red Hat Decision Manager ビジネスアプリケーションアセットのプロジェクトで作業し、再起動の必要なしに動的に変更をデプロイできます。さらに、開発モードでは、プロセスインスタンス、タスク、ジョブなど、ビジネス自動化機能が完全に監視されている環境が提供されます。

前提条件

  • ビジネスアセットのプロジェクトが含まれる business applications の Web サイトを使用して作成した <business-application>.zip ファイルがある。
  • ビジネスアプリケーションを設定している。
  • Decision Central をインストールし、実行している。

手順

  1. <business-application>/<business-application>-service ディレクトリーに移動します。
  2. 以下のコマンドの 1 つを実行します。

    表4.2 管理起動オプション

    コマンド

    説明

    ./launch-dev.sh clean install

    (Linux または UNIX) 開発モードで起動します。

    ./launch-dev.bat clean install

    (Windows) 開発モードで起動します。

    ./launch-dev.sh clean install -Pmysql

    (Linux または UNIX) MySQL データベースでアプリケーションを設定した場合に、開発モードで起動します。

    ./launch-dev.bat clean install -Pmysql

    (Windows) MySQL データベースでアプリケーションを設定した場合に、開発モードで起動します。

    ./launch-dev.sh clean install -Ppostgres

    (Linux または UNIX) postgreSQL データベースでアプリケーションを設定した場合に、開発モードで起動します。

    ./launch-dev.bat clean install -Ppostgres

    (Windows) postgreSQL データベースでアプリケーションを設定した場合に、開発モードで起動します。

    clean install の引数で、Maven に、新規インストールをするように指示を出します。プロジェクトは、以下の順番に構築されます。

    • データモデル
    • ビジネスアセット
    • サービス

      スクリプトの初回実行時には、プロジェクトの依存関係がすべてダウンロードされるため、プロジェクトのビルドに時間がかかる場合があります。ビルドの最後に、アプリケーションが起動します。

  3. 以下のコマンドを入力して、ビジネスアプリケーションにアクセスします。

    http://localhost:8090/
  4. 認証情報 user/user または kieserver/kieserver1! を入力します。ビジネスアプリケーションを起動した後に、Decision Manager コントローラーと接続すると、Decision Central の MenuDeployExecution Servers に表示されます。

第5章 Decision Central へのビジネスアセットプロジェクトのインポートと Business Central からのデプロイ

Red Hat Decision Manager ビジネスアプリケーションの一部であるビジネスアセットプロジェクトを Decision Central にインポートしてから、そのプロジェクトをビジネスアプリケーションにデプロイできます。

前提条件

  • 開発モードで実行されているビジネスアプリケーションプロジェクトがある。
  • Red Hat Decision Manager の Decision Central がインストールされている。

手順

  1. <business-application>/<business-application>-kjar ディレクトリーに移動します。
  2. 以下のコマンドを実行して、プロジェクトの Git リポジトリーを初期化します。

    $ git init
    $ git add -A
    $ git commit -m "Initial project structure"
  3. Decision Central にログインし、MenuDesignProjects に移動します。
  4. Import Project を選択して、以下の URL を入力します。

     file:///<business-application-path>/<business-application-name>-kjar
  5. Import をクリックして、インポートするプロジェクトを確定します。
  6. ビジネスアセットプロジェクトを Decision Central にインポートしてから、Add Assets をクリックして、ルールやデシジョンテーブルなどのアセットを使用しているビジネスアセットプロジェクトに追加します。
  7. プロジェクトページで Deploy をクリックして、実行中のビジネスアプリケーションにプロジェクトをデプロイします。
  8. デプロイメントを検証するには、MenuDeployExecution Servers に移動します。

付録A バージョン情報

本書の最終更新日: 2021 年 11 月 15 日 (月)

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.