クラウド型 ワークフロー

ロボット君がランダムに翻訳者を指名してくれる方法(1)

アドオンXMLを用いて、特定組織に所属するユーザからランダムで指名する方法を紹介致します。

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

「業務の自動化」が話題ですね。(またまた同じ入りです。)
前回、

ロボット君(?)が隔週で業務開始をしてくれる方法
RPA を搭載したアプリケーションは、入力情報をロボット君に渡すと、人間が操作する通りにロボット君が操作してくれて成果を出してくれます。
めっちゃ便利です。20人のロボット君と暮らしたいです。そしてかゆいところを教えるので背中を流してほしいです。

http://www.questetra.com/ja/blog/cat-questetra-tips-ja/start-every-other-week/

などと書きましたが、今少し賢いロボット君を紹介したいと思います。
いわば、「痒(かゆ)くなる所を教えておいたら、ええ感じで背中を流してくる」ロボット君です。

(シリーズ化するので覚えておいて下さい)

◆どこをどのようにロボット君に手伝ってもらう?

今回は、以下の翻訳フローを題材にお話をします。
<翻訳フロー:ロボット君未使用>

※元記事:「第538話:日本語100文字の翻訳に必要な時間を分析したい」

この翻訳フロー、「2.翻訳者指名」工程があります。
もし、

* 翻訳チーム内でランダムに翻訳者を指名する

というルールだったとしたら、
指名する人からすると、「前、誰にお願いしたっけ?」とか、「誰にするかクジで決めるのめんどくせー」とか思います。
指名される人からすると、「ワタシ・オレ、指名されるの多くないケ?」とか思います。

この部分をロボット君にお願いしましょう。

◆ロボット君をアドオン XML(自動処理パッケージ)で実装

◆◆ロボット君の仕様

ロボット君の動きとしては、

1.指名したい組織の人数と人を把握
2.1.の人数内(-1した数値)のランダムな数値を生成
3.1.で取得した人を2.で生成した数字番目の人をユーザ型のデータに格納

となります。

例で示すと、

* 「翻訳チーム」に所属する人は、Aさん/Bさん/Cさん/Dさんの4名
* “0”から”3″の生成されたランダム数値は、”2″
* (0から始まる)2番目のユーザ「Cさん」をユーザ型に格納

となります。

◆◆ロボット君の実装

他のアプリでも利用できそうな気がしますのでアドオン XML で実装してみます。

<パッケージ設定内容>
* 「翻訳チーム」を示す実組織名
* 指名ユーザを格納するユーザ型データ

上記の設定ができ、前述の「ロボット君の仕様」の動作を実現できるアドオン XML を実装します。

<「ランダム指名サービス」アドオンXML のコード>

<?xml version="1.0" encoding="UTF-8"?><service-task-definition>

<label>ランダム指名サービス</label>

<configs>
  <config name="conf_TargetOrganizationName" required="true" form-type="TEXTFIELD">
    <label>指名対象組織名</label>
  </config>
  <config name="conf_TargetQUser" required="true" form-type="SELECT" select-data-type="QUSER">
    <label>指名ユーザ</label>
  </config>
  <config name="conf_DebugPrint" required="false" form-type="SELECT" select-data-type="STRING_TEXTAREA">
    <label>デバッグ用データ表示(指定が無い場合、非表示)</label>
  </config>
</configs>

<script><![CDATA[
// ランダム指名用スクリプト(ver. 20170801)
// (c) 2017, Questetra, Inc. (the MIT License)

//// == 工程コンフィグの参照 / Config Retrieving ==
var targetOrganizationName = configs.get("conf_TargetOrganizationName");
var targetQUserNum = configs.get("conf_TargetQUser");
var debugPrintNum = configs.get("conf_DebugPrint");

//// == ワークフローデータの参照,定義 / Data Retrieving, Data Define ==
var targetOrganization = qgroupDao.findByName(targetOrganizationName);
var targetQuserList;
var targetNum;
var debug = "";

//// == 演算 / Calculating ==
// 指名対象組織から対象ユーザリストを取得し、ランダム数値で指名を行う

// 指名対象組織にぶら下がる対象ユーザ群を取得
targetQuserList = quserDao.findByQgroup(targetOrganization);
// "0"から最大値(対象ユーザ群の人数)の間の数値をランダムに生成
targetNum = Math.floor(Math.random() * targetQuserList.size());

debug += "targetQuserList.size():" + targetQuserList.size() + "\n";
debug += "targetNum:" + targetNum + "\n";

// for Debug
if (debugPrintNum != ""){
    retVal.put(debugPrintNum,debug);
}

//// == ワークフローデータへの代入 / Data Updating ==
retVal.put(targetQUserNum,targetQuserList.get(targetNum));
]]></script>


<icon>(割愛)</icon>

</service-task-definition>

ランダムに生成する値のコードがわかりづらくありますが、Math.random()Math.floor() の仕様を確認して頂ければと思います。
これで、「だ〜〜れにしようかな〜〜〜」と悩む必要が無くなりました。

◆あとがき

簡単に申しますと「特定の組織の中からランダム(ある程度、公平に?)に人を選び出す」ことを自動化しています。
しょーもなっ」という声も聞こえてきますが、日に何件も不特定な時刻に指名作業を行わなくてはならないと想像してもらえると少し利用価値を感じてもらえるのではないでしょうか?
Questetra ご利用企業で実際に使用されているアドオンでもございます。(少しアレンジされていますが)
一度、お試し頂ければと思います。

次回はより難しい仕事をしてくれるロボット君を紹介したいと思います。
不明点などがありましたら遠慮なくご連絡下さい。

アドオン XML を実装する上での必要なマニュアルとしては、以下となります。
合わせてご参照下さい。

業務プロセス定義で利用可能な自動工程を自作する
“文字数とハッシュ値を取得する” といった処理工程を自動化したい場合、[スクリプト工程]を使ってスクリプトを記述することになります。もし同様の[スクリプト工程]を何か所にも配置する必要があるなら[アドオンXML]としてパッケージ化しておくことを検討します。(Service-Task Addon)

http://www.questetra.com/ja/tour/m4/m416/

業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト)
スクリプト工程をフロー図の途中に配置すれば、データ編集の自動化を実現できます。例えば “出勤時刻” と “帰宅時刻” から勤務時間を算出すると言った演算処理や、 “作業実施日” の曜日情報を自動的に付加すると言った文字列編集処理を自動化する事ができます。([サービスタスク(データ設定)] より更に複雑な処理が可能です)

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

2017-08-08

Masato Furukubo の紹介

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

あわせて読みたい
50.Questetra Tips の前の記事 選択範囲を絞ってユーザの選択をできるようにする方法
50.Questetra Tips の次の記事 ロボット君がランダムに翻訳者を指名してくれる方法(2)
Masato Furukubo の他の記事 メールの内容を解析し自動セットする方法(その2)

アーカイブ

 RSS