前回、 「簡易ナレッジベース」 のデータモデルを実装しました。今回は、実装したデータモデルに対し、アクセス権やライフサイクルなど、静的なデータモデルを補完する要素を追加していきたいと思います。
ライフサイクルマップの設定
今回作成するアイテムタイプ「記事」と「タグ」について、取り得る状態と可能な状態遷移、つまりライフサイクルマップを考えます。
ライフサイクルマップ欄に青字で記載した「作成者」や「ナレッジ管理者」は、対象の状態遷移(矢印)を実行する権限のある人を表しています。「ナレッジ管理者」はまだ登録されておりませんので、ライフサイクルマップの実装の前に、グループアイデンティティ「ナレッジ管理者」をAras Innovator上に登録しておきます。
- ログインID「admin」でログイン。
- TOCの「アドミニストレータ」フォルダを開いて「アイデンティティ」を選択し、「新規作成」を実行。
- グループアイデンティティ「ナレッジ管理者」の設定を入力し、保存・アンロックして画面を閉じる。
ではいよいよ、ライフサイクルマップ「KM_Article」の登録です。
- TOCの「アドミニストレータ」フォルダを開いて「ライフサイクルマップ」を選択し、「新規作成」を実行。
- GUIの編集ツールでライフサイクルマップを設定。この段階ではライフサイクルマップの形と、プロモート(状態遷移)権限を与えるアイデンティティ(ロール)のみを設定しておきます(つまり先ほどの「作成者」や「ナレッジ管理者」です)。
- ライフサイクルマップを保存・アンロックし、画面を閉じます。
- TOC「アドミニストレータ」フォルダ内の「アイテムタイプ」を選択してアイテムタイプ「記事」を検索し、編集モードで画面を開きます。
- アイテムタイプ「記事」の「ライフサイクル」タブを選択し、先ほど作成したライフサイクルマップを割り当てます。
- アイテムタイプ「記事」を保存・アンロックし、画面を閉じます。
アクセス権の設定
次にアクセス権を検討します。関係する登場人物(アイデンティティ)は、以下の4種類です。なお、今回用に登録が必要なのは「ナレッジ管理者」のみで、既に先ほど登録済みですので、アイデンティティの追加登録は不要です。
- システムの全利用者
- 「World」(標準で用意されているアイデンティティ)
- ナレッジ管理者
- 「Knowledge Manager」
- 記事の作成者
- 記事アイテムの「Creator」: 記事アイテムのプロパティ「作成者(created_by_id)」に格納されるユーザ
- 記事の公開先
- 記事アイテムの「Owner」: 記事アイテムのプロパティ「公開先(owned_by_id)」に設定されたアイデンティティ
では、これらの登場人物に対し、アイテムタイプ「記事」と「タグ」へのアクセス権を掘り下げましょう。以下がその結果です。
まずはTOCアクセスから実装していきます。アイテムタイプ「記事」のTOCアクセスは前回「World」で登録済みですので、「タグ」のTOCアクセスのみ変更します。
- TOC「アドミニストレータ」フォルダ内の「アイテムタイプ」を選択してアイテムタイプ「タグ」を検索し、編集モードで画面を開きます。
- アイテムタイプ「タグ」の「TOCアクセス」タブを選択し、アイデンティティ「World」の行を削除して代わりに「ナレッジ管理者」を割り当てます。
- アイテムタイプ「記事」を保存・アンロックし、画面を閉じます。
新規登録権限は前回登録した「誰でも登録可」のまま変更不要ですので、次はパーミッションの設定です。必要なパーミッションが4つ識別されていますので(「記事」で3つ、「タグ」で1つ)、まずはこれらを作成します。
- TOCの「アドミニストレータ」フォルダを開いて「パーミッション」を選択し、「新規作成」を実行。
- パーミッション名称を入力したり対象となるアイデンティティを選択したりして、以下のような内容を入力後、保存&アンロック&閉じます。以上を4つ分繰り返します。
次に、作成したパーミッションを各アイテムタイプに割り当てます。なお、パーミッションの設定には、アイテムタイプ単位での設定とライフサイクルステート単位での設定の2段階あることにご注意ください。
- TOC「アドミニストレータ」フォルダ内の「アイテムタイプ」を選択してアイテムタイプ「記事」を検索し、編集モードで画面を開きます。
- アイテムタイプ「記事」の「パーミッション」タブを選択し、パーミッション「Default Access」の行を削除して代わりに「KM_Article Draft」を割り当てます。その後、保存&アンロック&閉じます。同様にアイテムタイプ「タグ」にも設定します。
- TOC「アドミニストレータ」フォルダ内の「ライフサイクルマップ」を選択してライフサイクルマップ「KM_Article」を検索し、編集モードで画面を開きます。
- 各ステートをクリックし、ステートパーミッションにパーミッションを割り当てます。割り当てが終わったらライフサイクルマップを保存&アンロック&閉じます。
これでアクセス権の設定は一通り完了です。
ワークフローの設定
最後にワークフローの設定です。この 「簡易ナレッジベース」 では凝ったワークフローは持たせず、単にメール通知(後追い記事を公開した際に、元記事の作成者にメールを送信)を行うためだけのごくごくシンプルなワークフローを設定します。
※ このワークフローには人が一切関与しませんので、ワークフロー化などせずにメソッドからメール送信するようにした方が筋が良いかもしれません。あくまで設定例ということでご容赦ください。
では、このワークフローを実装しましょう。メール通知のためのテンプレート登録も行います。
- TOCの「アドミニストレータ」フォルダを開いて「メールメッセージ」を選択し、「新規作成」を実行。
- 以下の内容でメールメッセージ「KM_Article Reply Notice」を作成し、保存&アンロック&閉じます。
- TOCの「アドミニストレータ」フォルダを開いて「ワークフローマップ」を選択し、「新規作成」を実行。
- GUIの編集ツールでワークフローマップを設定。以下の内容になるようにし、保存&アンロック&閉じます。先ほど作成したメールメッセージも割り当てています。
- 作成したワークフローマップをアイテムタイプに登録します。TOCの「アドミニストレータ」フォルダを辿ってアイテムタイプ「記事」の画面を編集モードで開き、「ワークフロー」タブ内に先ほど作成したワークフローマップを割り当てます。なお、デフォルトのチェックは外したままにします。その後、アイテムタイプ「記事」を保存&アンロック&閉じます。
※ デフォルトのチェックを付けてしまうと、記事を新規作成し保存したらすぐにワークフローが起動され、メールが飛んでしまいます。例えその後追い記事がドラフト状態だったとしても、です。これは今回求める挙動ではありませんので、デフォルトのチェックは外したままにしています。
- ワークフローはライフサイクルステートが「公開中」になったタイミングで起動させたいので、その割り当てを行います。TOCを辿ってライフサイクルマップ「KM_Article」を編集モードで開き、ステート「公開中」をクリックして「ワークフロー」欄に先ほどのワークフローマップを登録します(保存&アンロック&閉じます)。
動作確認
ここまでで今回のテーマは一通り実装完了です。 適当なユーザを登録し、グループアイデンティティも適当に編集して動作確認してみましょう。
後追い記事作成などの処理未実装の部分を手で補う必要があるなど、まだ野暮ったさは残っていますが、それ以外のアクセス権やライフサイクルなどは無事動くことが確認できました。メールもちゃんと飛んでいるようです。 ※ 今回はここまでです。ここまでで機能の「骨格」が出来上がっていますので、あとは「肉付け」を残すのみです。ビジネスロジックの追加やUIの調整を行って完成させたいと思います。是非ご期待ください。 それでは、また次回。
(アラスジャパン 宮内一也)