Pleasanterで申請フローシステム構築検証
はじめに
仕事で申請システム(承認ワークフロー)を、PowerPlatform(PowerApps + PowerAutomate) を用いて構築したことがありました。
しかし以下のような課題がありました。
- 稀に原因不明の不具合が発生
- 所有者(私)への依存が高く、退職リスクに対応しづらい
- 属人化しており保守性が低い
そこで、より 所有者依存性の低いPleasanter による再実装が可能かどうかを検証してみたので、この記事にまとめます。
本記事ではPleasanterの基本的な操作方法については理解しているものとする。
目標
現在のPowerPlatform製ワークフローとほぼ同等の機能をPleasanterで実現すること。
実装した機能一覧
Pleasanter上で以下の機能を実装しました。
基本項目の入力
- 申請番号
- 件名
- 部門(自動で設定)
- 申請者名(自動で設定)
- 申請日(自動で設定)
- 金額
- 申請内容
- 添付ファイル
- 承認者設定をする設定項目1~5人(変更可能)
承認フローの仕様
- 承認者だけが「承認」「否認」「コメントの記入」を実行可能
- 1つ前の承認者が承認しないと次の承認者は操作不可
- 否認された場合は即座にワークフロー終了
通知機能(PowerAutomate連携)
- 承認依頼や否認・承認完了時にTeamsへメンション通知
フィルター機能
- 一覧画面ではレコードの表示
- 申請者 or 承認者として関与しているレコードに限定することも可能で細かく調整可能
課題と検討事項
1. メールアドレスの取得が困難
Pleasanter標準機能ではユーザーのメールアドレスを直接取得する方法が見つからなかった。
Teamsへのメンション投稿する時は、PleasanterのDBに直接接続しメールアドレステーブルから参照している。
if (model.ClassA) {
let data = {
"ApiVersion": 1.1,
"ApiKey": "--API_KEY--",
"Name": "getMailAddressApi",
"Params": {
"UserId": model.ClassA
}
}
// localhostで運用の場合
httpClient.RequestUri = 'http://localhost:81/api/extended/sql';
httpClient.Content = JSON.stringify(data);
let response = httpClient.Post();
if (httpClient.StatusCode === 200){
var json = JSON.parse(response);
let rows = json.Response.Data.Table;
if (rows && rows.length > 0) {
for (let row of rows) {
context.Log('ID: ' + row.OwnerId);
context.Log('mailaddress: ' + row.MailAddress);
}
} else {
context.Log('No rows returned or rows is undefined');
}
}
}
しかしこの方法はメンテナンス性やセキュリティの観点からあまり良くないため、代替手段があれば、今後そちらへの移行を検討中です。
2. リマインド機能が動作しない
指定した時刻にリマインドされない問題を確認
原因の仮説として、IISサーバーでホストしているためPCシャットダウンの影響の可能性があるが調査できていない
検討中の対応案として、PowerAutomateから定期的にDBを参照してリマインド処理の実行を考えている
今後の検証項目
メールアドレスの取得方法の見直し
- 現状はデータベースから直接取得しており、メンテナンス性やセキュリティの観点から課題がある
- 今後はPleasanter標準機能やAPIなどを活用して取得できる方法を模索する必要がある
リマインド処理の安定化
- リマインドが正しく動作しない問題については、原因調査をする必要がある
- 暫定的な対応として、PowerAutomateを使ってDBを定期監視し、リマインド通知を送る案がある
- ただし、Pleasanter以外の仕組みに依存することは、メンテナンスの面で望ましくない
- 可能であれば、Pleasanter単体で完結できる方法を見つけて実装したい
まとめ
- Pleasanterでの再実装により、PowerPlatform製の申請システムと同等レベルの基本機能(承認フロー、通知、一覧表示など)は概ね再現可能であることを確認
- 一方で、メールアドレスの取得方法やリマインド機能の安定性には改善の余地がある
- 所有者依存を排除し、属人化しない運用は実現できそうな手応えを得られた
- ただし、旧システムで申請が滞る一因となっていた「ユーザーが普段使用しないツールで運用している」点が、今回のシステム移行で解決されるかはわからない
例:Teamsへのメンション通知でどこまでユーザーの動きを促せるかは、実運用で確認する必要あり