kintone ドライバーでワークフローを処理する

本記事ではkintone 上のアプリとして作成されたワークフローに対し、kintone ドライバーで申請や承認などの処理を行う方法を説明します。

kintone のプロセス管理とは、複数ユーザによるレコードの確認や編集を伴う業務プロセスを設定できる機能です。申請の承認や決裁をアプリで管理してワークフローのように使ったり、作業やクレーム処理などタスク管理に使ったりすることができます。

kintone ドライバーはREST API を通してkintone に対する様々な処理をデータベース操作として行うことができます。プロセス管理についても、ワークフロー申請の作成や確認、ステータス変更などをすべてSQL で行うことができます。今回は例としてkintone のサンプルアプリである旅費精算申請アプリに対し、kintone ドライバーを使って申請の作成から承認までを行います。

目次

ワークフローの申請一覧を見る

はじめにワークフローの申請一覧を見る方法を説明します。プロセス管理が設定されたアプリのレコードは、ワークフローであれば申請、タスク管理であればタスクにあたります。今回の旅費精算申請アプリは一つのレコードが一件の申請を表します。申請の一覧を参照するにはシンプルにアプリのテーブルをクエリします。例えば以下のクエリを実行すると旅費申請の一覧を取得することができます。

SQL

select [No], [ステータス], [行き先], [期間(出発)],[期間(帰着)], [目的], [旅費合計] from [旅費精算申請];

実行結果

No ステータス 行き先 期間(出発) 期間(帰着) 目的 旅費合計
101 未処理 大阪城ホール 2025-01-22 2025-01-22 カンファレンス参加 50000
100 未処理 大手町○○ビル 2025-01-16 2025-01-17 △△社とのミーティング 31000

ワークフローの申請を作成する

プロセス管理アプリへのレコードの追加、更新は通常のアプリと同様にINSERT 文、UPDATE 文で実行します。ワークフローであれば新規の申請を作成する場合、タスク管理であれば新規のタスクを作成する際にINSERT 文を使います。

未処理の申請を作成する

旅費精算申請アプリで申請を追加するSQL の例を以下に示します。アプリの申請フォーム上で必須となっている項目はINSERT 文を実行する際にも指定する必要があります。旅費精算申請アプリでは旅費と経費の明細がサブテーブルとして実装されているため、明細のレコードはそれぞれのサブテーブルにINSERT 文で追加します。サブテーブルに項目を追加する際に旅費精算申請Id を指定する必要がありますが、これは旅費精算申請の追加時に付与されるため、旅費精算申請を追加してからこのレコードのRecordId を取得します。

旅費精算申請を作成するSQL

-- 旅費精算申請の追加
insert into [旅費精算申請]([No], [行き先], [申請者 Aggregate], [上長 Aggregate], [期間(出発)],[期間(帰着)], [目的])
values(102,'丸の内○○ビル','{"code": "cdatademo" }','{"code": "cdatademo" }','2025-01-21','2025-01-21','XX社へのインタビュー');

追加した旅費精算申請のId を取得するSQL

-- 申請No 102のRecordId を取得(この例では「3」を取得
select RecordId from [旅費精算申請] where [No] = 102;

追加した旅費精算申請の明細を追加するSQL

-- 旅費精算申請_旅費サブテーブルへの明細追加
insert into [旅費精算申請_旅費]([旅費精算申請Id],[日付],[金額(円)],[摘要],[手段])
values(3,'2025-01-21','12000','仙台から東京、新幹線','電車');
insert into [旅費精算申請_旅費]([旅費精算申請Id],[日付],[金額(円)],[摘要],[手段])
values(3,'2025-01-21','12000','東京から仙台、新幹線','電車');

-- 旅費精算申請_経費サブテーブルへの明細追加
insert into [旅費精算申請_経費]([旅費精算申請Id],[摘要],[科目],[日付],[支払先],[金額(円)])
values (3,'懇親会', '交際費', '2025-01-21', '○○料理店', 20000);

上のクエリをすべて実行すると以下のように未処理の旅費精算が作成されます。この時点ではまだ申請はされていません。

お役立ち情報
kintone × 基幹連携

基幹系システムのFit to Standard とkintone によるSide-by-Side 開発事例・連携ポイントを徹底解説

  • SAP など基幹システムの標準機能で対応できない業務をどうする?
  • kintone での業務改善を検討しているが、基幹システムとの連携はどうする?
  • kintone と基幹システムとの連携に最適なツール・コネクタにはどんなものがある?
ホワイトペーパーを無料で読む

ワークフローの処理を進める

前章で作成した未処理の旅費精算申請に対してアクションを実行しワークフローの処理を進めます。kintone のプロセス管理でのステータス、アクション、作業者についてはこちらをご覧ください。

申請する

はじめにこの旅費精算申請アプリのプロセスを確認します。旅費精算が作成されるとステータスは「未処理」が設定され、その後「申請」アクションが実行されるとステータスが「申請中」となります。

ではプロセスで決められた通り「申請」アクションを実行します。kintone ドライバーでアクションを実行するにはUpdateStatus ストアドプロシージャを使います。

先ほど作成した未処理の旅費精算に対して「申請」アクションを実行する例を以下に示します。AppId パラメータにはアプリのId を指定します。アプリのId はkintone 画面のURL またはドライバーのApps ビューで確認することができます。RecordId にはアクションを実行する申請のレコードId, Assignee には次の作業者のユーザコードを指定します。

SQL

exec UpdateStatus AppId = 26, RecordId = 3, Action = '申請', Assignee='andy';

上のストアドプロシージャを実行すると、以下のように指定した旅費精算のステータスが「申請中」に変わります。

作業者のみを変更する場合はUpdateAssignees ストアドプロシージャを使います。以下はRecordId で指定した申請の作業者を「andy」に変更する例です。

SQL例

exec UpdateAssignees AppId = 26, RecordId = 2, Assignees ='andy';

承認する

続いて申請された旅費精算を承認します。申請された旅費精算に対して「承認」アクションを実行することでステータスが「承認」に変わりますので、申請時と同じUpdateStatus ストアドプロシージャを使って承認を行います。以下は先ほど追加した旅費精算申請のレコードに「承認」アクションを実行する例です。

SQL

exec UpdateStatus AppId = 26, RecordId = 3, Action = '承認';

上のストアドプロシージャを実行すると、以下のように指定した旅費精算申請のステータスが「承認」に変わります。

その他のアクション

ワークフローはまだ処理が続きますが、これ以降もアクションの実行はすべてUpdateStatus ストアドプロシージャで行います。指定できるアクションのリストを見るにはProcessManagementActions ビューを参照します。以下はProcessManagementActions ビューで旅費精算申請アプリのアクション一覧を取得した例です。Name カラムからはアクション名、From とTo カラムからはアクションの実行前後のステータスが取得できます。

SQL

select * from ProcessManagementActions where AppId = 26;

実行結果

AppId Name From To FilterCond
26 "申請" "未処理" "申請中" ""
26 "承認" "申請中" "承認" ""
26 "却下" "申請中" "却下" ""
26 "経理確認" "承認" "確認" ""
26 "精算" "確認" "精算" ""
26 "完了" "精算" "完了" ""

おわりに

本記事ではkintone ドライバーでワークフローを処理する方法を紹介しました。今回紹介したように、kintone ドライバーを使うことでSQL だけでワークフローの処理を行うことができます。kintoneドライバーは30日間無料で試用できます。kintone との連携をご検討の方はぜひお試しください。

トライアル・お問い合わせ

関連コンテンツ