第40章 データベース接続

Business Central は、Red Hat Process Automation Manager でデータベースサーバー専用の UserGroupCallback 実装を提供し、ユーザータスクサービスを有効にします。ユーザータスクサービスを使用して、ユーザーやグループ (ロール) の情報を直接データベースから取得できるようにします。

以下のデータベースの UserGroupCallback 実装プロパティーを設定することができます。

表40.1 データベースの UserGroupCallback プロパティー

プロパティー説明

db.ds.jndi.name

接続に使用するデータソースの JNDI 名

db.user.query

ユーザーの存在を確認する

db.user.roles.query

特定のユーザーのグループを収集する

db.roles.query

グループの存在を確認する

40.1. データベースの UserGroupCallback 実装

データベースの UserGroupCallback 実装では、必須のデータベースを作成する必要があります。以下のいずれかの方法で、該当のデータベースプロパティーを設定し、この実装を使用できます。

  • プログラム: 該当の DBUserGroupCallbackImpl プロパティーでプロパティーのオブジェクトをビルドし、プロパティーオブジェクトで、パラメーターとして DBUserGroupCallbackImpl を作成します。

    以下に例を示します。

    import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.DS_JNDI_NAME;
    import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.PRINCIPAL_QUERY;
    import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.ROLES_QUERY;
    import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.USER_ROLES_QUERY;
    ...
    props = new Properties();
    props.setProperty(DS_JNDI_NAME, "jdbc/jbpm-ds");
    props.setProperty(PRINCIPAL_QUERY, "select userId from Users where userId = ?");
    props.setProperty(ROLES_QUERY, "select groupId from UserGroups where groupId = ?");
    props.setProperty(USER_ROLES_QUERY, "select groupId from UserGroups where userId = ?");
    
    callback = new DBUserGroupCallbackImpl(props);
  • 宣言設定: アプリケーションのルートに jbpm.usergroup.callback.properties ファイルを作成するか、システムプロパティーとしてファイルの場所を指定します。

    以下に例を示します。

    -Djbpm.usergroup.callback.properties=FILE_LOCATION_ON_CLASSPATH

    ユーザータスクサーバーの起動時にデータベースコールバックを登録するようにしてください。

    以下に例を示します。

    System.setProperty("jbpm.usergroup.callback.properties", "/jbpm.usergroup.callback.db.properties");
    callback = new DBUserGroupCallbackImpl(true);
    ...
    db.ds.jndi.name = jdbc/jbpm-ds
    db.user.query = select userId from Users where userId = ?
    db.roles.query = select groupId from UserGroups where groupId = ?
    db.user.roles.query = select groupId from UserGroups where userId = ?

関連情報