クラウド型 ワークフロー

ロボット君(?)が隔週で業務開始をしてくれる方法

自動処理工程、スクリプトタスク、プロセス間連携を用いて複雑なプロセス起動条件を実現します。

こんにちは、古久保です。

「業務の自動化」が話題ですね。(前回と同じ入りです。)
そして、 RPA(Robotic Process Automation) の話題から入ります。
RPA を搭載したアプリケーションは、入力情報をロボット君に渡すと、人間が操作する通りにロボット君が操作してくれて成果を出してくれます。
めっちゃ便利です。20人のロボット君と暮らしたいです。そしてかゆいところを教えるので背中を流してほしいです。

さて、今回は、「定期的に報告を上げさせたい。日報とか!週報とか!」という、比較的多くのユーザ様で実現されているお話です。

Questetra のロボット君(自動化ですね)をからめてお話をしたいと思います。

◆タイマー開始イベントで簡単に実現

毎週月曜日に週報あげさせたい!」「月次レポートを1日(ついたち)に作成させるようにしたい」等など定期的に開始したい・させたい業務ってありますよね。

日報や週報の書き方を教える必要がないワークフロー定義
…しかし、週報や日報は「書き忘れ」や「未提出」がツキモノだ。いつでも『マイタスク一覧』に表示される様に自動起動させておくのが良いだろう。以下のワークフローサンプルでは、毎週月曜日の朝9時に『1.週次報告を書く』と言うタスクが自動的に立ち上がる。すなわち『タイマー開始イベント』でプロセスが開始される。…

http://ja.workflow-sample.net/2011/11/blog-post.html

<週次報告サンプルプロセス>

上記のサンプルプロセスで「タイマー開始イベント」を使用して実現されているのがわかります。
そう、いうなれば「タイマー開始イベントロボット」君あります。

ロボット君は、

* 毎週月曜日の朝9時に目覚める
* プロセスを社員スイムレーンに所属するユーザ分起動
* 「1.週次報告を書く」工程を対象ユーザ分に割り当てる

を行ってくれます。
ロボット君なので忘れることもありません。(エライ!)

しかし、「タイマー開始イベントロボット」君も困ることがあります。

例えば、

* 隔週で報告書を提出させたい。
* 月末に締め作業を開始させたい
* 毎月20日を基本にレポート作成を開始したいが土日の場合は月曜日にしたい。

です。

「タイマー開始イベント」では、上記は実現できません。(後述のマニュアルを参照してください)
「タイマー開始イベントロボット」君、沈黙です。

決められた日時に先頭処理が自動的に開始されるように設定する
[タイマー開始イベント] を先頭に配置すれば、新しい案件の処理が自動的に開始(起動)されるようになります。例えば “日報プロセス” や “月末の経費精算プロセス” と言った定期的な申請処理において、申請し忘れるリスクを下げることができます。

http://www.questetra.com/ja/tour/m2/m217/

◆ロボットを自作して解決する(スクリプトタスク等を使う)

標準機能を有する「タイマー開始イベントロボット」君、沈黙したのならば、ロボット君を新作すればよいのです。

* 隔週で報告書を提出させたい。

を実現させてみましょう。

概要としては、「隔週)起動制御プロセスから報告書作成プロセスを起動する」というものです。
新作ロボット君は、「(隔週)起動制御プロセス」が該当します。

<実現概要>

◆◆報告書作成プロセス

設定操作をまとめると以下となります。

* 作成担当者(ユーザ型データ項目)を追加(全ての工程で「表示なし」)
* メッセージ開始イベント(http)をタイマー開始イベントの代わりに配置
* メッセージ開始イベント(http)で作成担当者を受信するよう設定
* 社員スイムレーンの処理担当者は、作成担当者が割り当たるよう設定

<報告書作成プロセス設定内容>

◆◆(隔週)起動制御プロセス

ロボット君へのインプットは、以下となります。

* 初回起動日時
* 報告書を提出させたい人々が所属する組織

これを元に、以下の作業をロボット君に行ってもらいます。

* 対象組織に所属する人々を全て割り出す
* 割り出された人全てに起動された「報告書作成プロセス」の先頭工程を割当
* 14日間待って、自分自身のプロセス(「(隔週)起動制御プロセス」)を開始

<(隔週)起動制御プロセス設定内容>
<(1)スクリプトタスク「起動対象者選択」工程内容>

// データ項目No.2 は、前工程で入力された対象組織
// 対象組織に所属するユーザを取得
var userList = quserDao.findByQgroup(data.get("2"));
var users = "";

for (var i = 0; i < userList.size(); i++){
    // 取得したユーザのメールアドレスを改行区切で整形
    users += userList.get(i).getEmail() + "\n";
}
// データ項目No.3 複数行文字型データにメールアドレス群をセット
retVal.put("3",users.replace(/\n$/,""));

<(2)スクリプトタスク「起動対象者更新」工程内容>

// データ項目No.3 文字型複数行:改行区切でセットされたメールアドレス群
var users = new String(data.get("3")).split("\n");
var updatedUsers = "";
// データ項目No.4 文字型複数行:報告書作成プロセス起動済ユーザメールアドレス群
var completedUsers = data.get("4");
if (completedUsers == null){
   completedUsers = "";
}
var targetUser = "";
for (var i = 0; i < users.length; i ++){
    if (i == 0){
       targetUser = users[i];
    }else{
       updatedUsers += users[i] + "\n";
    }
}
retVal.put("3",updatedUsers.replace(/\n$/,""));
retVal.put("4",completedUsers + targetUser + "\n");
// データ項目No.5 文字型単一行:報告書作成プロセス連携対象ユーザメールアドレス
retVal.put("5",targetUser);

<(3)自動処理工程「次回起動日算出」/タイマー中間イベント>

◆あとがき

少々面倒な実装となりまして恐縮です。
今回のロボット君は、「(隔週)起動制御」ができるものですが、

* 起動間隔14日毎(隔週)を初期設定時に指定する
* 月末(土日や祝日回避)に指定する

等を「(隔週)起動制御プロセス」に組み込むことでロボット君の働く幅は、広がります。
ロボット君は、365日24時間文句を言わず働いてくれるので安心です。

次回も趣の違ったロボット君の紹介をしていきたいと思います。

不明点やご相談がありましたら遠慮なくご連絡を下さい。

2017-08-01

Masato Furukubo の紹介

Questetra, Inc. Sales Department
Masato Furukubo の投稿をすべて表示

あわせて読みたい
50.Questetra Tips の前の記事 backlog とクラウド BPM は連携できるのか?
50.Questetra Tips の次の記事 Office365 とクラウド型ワークフローとの連携方法について
Masato Furukubo の他の記事 非同期型システム連携を監視する仕組み

アーカイブ

 RSS