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