各種設定方法
残りの設定を行っていきましょう。
まず、ユーザやグループ、組織設定を行いましょう。
今回説明を簡略化するために設定数を少なくしていますが、実際は実運用に合わせて作成ください。
1)一般ユーザと管理者(承認者)ユーザを登録します。
2)営業部という組織を作成し、一般ユーザおよび管理者ユーザの組織を営業部に設定します。
3)一般職と管理職のグループを作成し、一般職グループに一般ユーザ、管理職グループに管理者を登録します。
ここまでで、申請する人と承認する人の設定が完了しました。次にプロセスでのアクセス制御を設定します。
前回作成したときに、「承認」や「否決」でアクセス制御のタブを設定していませんでした。承認と否決は管理職が行うため、このアクセス制御タブで操作できる人を設定します。先ほど作成した「管理職グループ」をここで設定します。同様に「否決」でも設定してください。
さて、あとは承認者を自動設定すれば一通り動きます。あと少しです!
ここは少しスクリプトを書く必要があります。
上記の通り設定されていることを前提に、管理職グループのIDが「2」だった場合に以下のサーバスクリプトを記載します。
条件は「計算式の後」を選択してください。
<申請者と同じ組織の管理職を決定するサーバスクリプト>
try {
context.Log('決裁者の決定');
// 申請者の情報を取得
let owneruser = users.Get(model.Owner);
//管理職グループ(グループID:2)に入っているユーザを承認者に設定
model.Manager = manager(owneruser.DeptId , 2 ).UserId;
function manager(DeptId , groupId , owneruser) {
let members = Array.from(groups.Get(groupId).GetMembers()); // membersオブジェクトに引数で指定されたグループのメンバーを格納
for (let i = 0; i < members.length; i++) {
if (members[i].UserId > 0) { // メンバーのユーザIDが存在するとき
let user = users.Get(members[i].UserId); // そのメンバーのユーザIDをuserオブジェクトに格納
if (user.DeptId === DeptId) { // 申請者の組織と承認者の組織が同じ場合に処理
return user;
}
}
}
}
} catch (e){
context.Log(e.stack);
}
ここまで設定したら、実際の一般ユーザでログインして休暇申請を新規作成してみましょう。
まずここで、自分と同じ組織の管理職メンバーが承認者に設定されていることが確認できます。
次に新規作成(申請)した後に、管理者でログインし、申請されたレコードを見ると「承認」「否決」ボタンが追加されていることが確認できます。いずれかのボタンをクリックしてみましょう。処理が行われ、レコードの状況が更新されることがわかります。
もう少し親切にする場合は、プロセスタブの中にある「通知」設定を行うとよいでしょう。
後編の内容
こんにちは、CCSの田中です。
前回説明したプロセス機能の後編です。
休暇申請ワークフローをプロセス機能を用いて作成するところまでを説明しました。ここまでだとワークフローとしては機能していませんので、今回の説明で機能するところまで説明します。アクセス権限や、その他必要なところの設定になりますので、前回のブログで説明したころまでを準備した状態で確認ください。
今回は以下の項目について説明します。以下を設定することで簡易的なものではありますが、プリザンター上でワークフローが動作するようになります。
・ユーザ・グループ・組織登録
・プロセスのアクセス制御設定
・承認者の自動設定
詳細は次で説明します。