第16章 データベース接続
Business Central は、Red Hat Process Automation Manager でデータベースサーバー専用の UserGroupCallback
実装を提供し、ユーザータスクサービスを有効にします。ユーザータスクサービスを使用して、ユーザーやグループ (ロール) の情報を直接データベースから取得できるようにします。
以下のデータベースの UserGroupCallback
実装プロパティーを設定することができます。
表16.1 データベースの UserGroupCallback プロパティー
プロパティー | 説明 |
---|---|
| 接続に使用するデータソースの JNDI 名 |
| ユーザーの存在を確認する |
| 特定のユーザーのグループを収集する |
| グループの存在を確認する |
16.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 = ?