アドオン自動工程

自動工程を追加する(アドオン)

アドオン自動工程を追加するためのサービスタスク定義ファイル(Add-on XML)の実装サンプル集です。
ワークフロー基盤にビルトインされているモデリング要素とは別に、オリジナルのモデリング要素(アドオン自動工程)を追加することができます。

実装サンプルは、次の2つに分類されています。

  • API Access Automation (ワークフロー基盤外との通信を伴うデータ処理)
  • Data Editing Automation (ワークフロー基盤内に閉じたデータ処理)

実装サンプルの個別ページでは、サービスタスク定義ファイルをダウンロードし、ご利用のワークフロー基盤にインポートすることも可能です。ただし、いかなる動作保証もありませんので、利用者自身の責任でご利用ください。また将来、Questetra や連携先サービスの仕様変更などに応じてコード改修が必要となる場合は、ご自身で対応いただく必要がございます。
動作保証が必要であったり、自身でスクリプト(コード)のメンテナンスを行えない場合は、ビルトインされているモデリング要素のみを利用して、ワークフローアプリを作成してください。

「サービスタスク定義ファイル」以外のアドオン

  • 「選択肢候補定義ファイル」のサンプルはこちら
  • 「台紙PDFファイル」のサンプルはこちら

各種クラウドサービスの API へアクセスし、ワークフロー基盤外との通信を伴うデータ処理がサーバサイドにて自動化されます。

まずは[ビルトイン自動工程]の利用を検討ください。

ビルトイン自動工程が提供されていないサービスや独自システムとの連携、あるいはビルトイン自動工程の仕様では実現できない処理を行いたい場合などは、目的にあった[アドオン自動工程]を開発し利用することを検討ください。 外部サービスと連携する[アドオン自動工程]の実装サンプルも公開されておりますので、参考にしてください。

乱数を生成する、文字数をカウントする、TSVデータをExcelファイルに変換する、など、ワークフロー基盤内に閉じたデータ処理がサーバサイドにて自動化されます。

データ処理の内容に応じて、次の[アドオン自動工程]の実装サンプルが公開されています。

乱数を生成します。案件トークンがこの自動工程に到達すると、都度、指定範囲内の数値が生成されます。小数点以下はワークフローのデータ定義に応じて0へ近づく方向で切り捨てられます。

ランダム文字列を生成します。案件トークンがこの自動工程に到達すると、都度、指定した長さの文字列が生成されます。記号混在や特定文字(Iとl)は不使用といった複雑な生成ルールも実現可能です。「ユーザ初期パスワードを設定」や「ダウンロード用パスワードを設定」といった業務工程を自動化します。

ワークフローに流れる案件データを用いてHTMLメール用のテキストを組み立てます。概要文・画像・主文・リンクボタン・副文のブロックにて構成されます。なお、設定データが空白であった場合、当該ブロックはスキップされます。

複数画像を一覧できるメール用のHTMLテキストを組み立てます。複数の画像URLをimgタグにセットして並べます。Webサーバに公開された画像を共有したい場合や、コンテンツのチェック体制を強化したい場合で利用します。

TSV文字列が確認しやすいHTMLコード(HTMLメール用)を組み立てます。TSV文字列の項目数に応じて TableRow (TR) と TableData (TD) を挿入します。ワークフロー内に格納されているTSVデータをHTMLメールで自動通知したい場合に利用されます。

格納データが一覧できるHTMLコード(HTMLメール用)を生成します。ワークフロー内の指定データ項目を指定の順序で組み立てます。生成コードをメール送信イベントに渡せば、任意の関係者とデータを共有できます。

日付TSV内の日付列をY軸(月次)、任意の列をX軸として、クロス集計(行数、累計和、平均)を生成します。なお、Date 列の場所はA列(id=0)に限らず、任意の列位置を指定できます。また Datetime フォーマットになっていても構いません。

日付TSV内の日付列をY軸(四半期)、任意の列をX軸として、クロス集計(行数、累計和、平均)を生成します。なお、Date 列の場所はA列(id=0)に限らず、任意の列位置を指定できます。また Datetime フォーマットになっていても構いません。

プレースホルダー(”{{0}}”, “{{1}}”, …)を含むテンプレートを使って新しいテキストを生成します。TSVの各行に対してテンプレートが適用されるため、Markdown、HTML、JSON配列、AIプロンプトなどを一括生成するのに便利です。

ファイル型データを複製します。ファイル型データ項目A1に格納されているファイルデータ(Original Files)が全て、ファイル型データ項目B1にコピー(Clone Files)されます。ファイル名や Content-Type を変更することも可能です。A1とB1に同じデータ項目を指定すれば、上書き保存となります。

TSV文字列をMarkdown文字列に変換します。TSVの1行目はヘッダ行(TH: Table Header)とみなされ、2行目以降がデータ行(TD: Table Data)とみなされます。右寄せやセンタリングといった列の表示設定も可能です。

数値TSV文字列を「Markdownに埋め込み可能な積み上げ棒グラフ」(MdChart文字列)に変換します。TSVの1列目は「年月」や「四半期」などの集計単位として扱われます。また、TSVの1行目は「営業担当」や「取引先」といったデータ系列名として扱われます。

数値TSV文字列を「積み上げ棒グラフのSVGファイル」に変換します。TSVの1列目は「年月」や「四半期」などの集計単位として扱われます。また、TSVの1行目は「営業担当」や「取引先」といったデータ系列名として扱われます。

CSV文字列をTSV文字列に変換します。ダブルクオート文字に囲まれたセル内の「改行コード」および「タブコード」は半角スペースに置換します。Excel形式のダブルクオート文字エスケープ(””:連続ダブルクオート)は1つの文字に置換します。

ファイル型データをBase64エンコードして文字型データに変換します。ファイル型データのファイルが複数ある場合、ファイルサイズが10MBを超える場合は変換されません。

Email文字列(文字列データ)をユーザ型データに変換します。当該アドレスが、ワークフロー基盤のユーザアドレスとして登録されていなかった場合、エラー終了します(ユーザ型データ項目の値は更新されません)。なお、複数行文字列やカンマ区切文字列で複数のアドレスが列挙されている場合、先頭から順次判定し、一致するユーザが発見され次第、正常終了します。。

矩形TSVを行と列のインデックスを入れ替えます。出力されるマトリックスTSV(転置行列)は、行列要素(x,y)が(y,x)に置き換えられた行列になります。度数分布表やヒストグラムのためのデータ整形等に使われます。

指定したカラムの日付データを yyyy-MM または yyyy 形式に変換し、その値を全行の末尾に追加します。

ワークフロー基盤内で共有されている “選択肢マスター” を参照し、ID情報をLabel情報に変換します。マッチするIDが存在しない場合、空文字列に変換します。

Textファイルの文字コード(符号化文字集合)を変更します。たとえば、UTF-8 エンコーディングを UTF-16 エンコーディングや Shift_JIS エンコーディングに変換します。複数ファイルが添付されている場合、すべてを同じルールで変換します。

スライドページをPNG画像に変換し、ファイル型データ項目に格納します。ページID (Object-ID) が未指定(空白)の場合は「最終ページのみ」をPNG化します。”all” が指定された場合は「全ページ」をPNG化します。ダウンロード用URL(30分有効)の取得にも対応します。

TSVテキストの列を並べ替えます。新しい並び順は、オリジナルTSVの列IDを列挙して指定します(例 “0,1,3,0”)。新しいTSVテキストは、TSVファイル形式やCSVファイル形式等のフォーマットで格納することも可能です。

指定カラムの数値順でTSVテキストを行ソートします。各カラム値が「123円」「1,234円」「12円」だった場合は、「12円を含む行」「123円を含む行」「1,234円を含む行」の順に並べ替えられます。

指定カラムの文字コード順でTSVテキストを行ソートします。各行のカラム値が「Jan」「Feb」「March」だった場合は、「Febを含む行」「Janを含む行」「Marchを含む行」の順に並べ替えられます。

数値範囲を使ってTSV文字列をフィルタリングします。指定の数値カラムが数値範囲に含まれる行のみ出力されます。複数の範囲を OR 指定したい場合は “-100<36.4,37.5<100” のようにカンマ区切りで指定します。

TSVテキストをカラムマッチ行だけに絞り込みます。マッチ条件には「と等しい」「を含む」「で始まる」「で終わる」のいずれかが指定できます。大文字小文字を区別しないフィルタも指定可能です。別途、除外された行(フィルタ除去行)を格納することも可能です。

複数行テキストをマッチ行だけに絞り込みます。マッチ条件には「と等しい」「を含む」「で始まる」「で終わる」のいずれかが指定できます。大文字小文字を区別しないフィルタも指定可能です。別途、除外された行(フィルタ除去行)を格納することも可能です。

TSV テキストをカラムマッチ行だけに絞り込みます。マッチ条件には正規表現(RegExp)が指定でき、各行ごとにカラムの値がマッチ判定されます。なお、除外された行(フィルタ除去行)を格納することも可能です。

複数行テキストをマッチ行だけに絞り込みます。マッチ条件には正規表現(RegExp)が指定でき、各行ごとに正規表現マッチが判定されます。なお、除外された行(フィルタ除去行)を格納することも可能です。

ファイル型データに格納されているファイル群から条件にマッチするファイルだけを抽出します。マッチ条件には「と等しい」「を含む」「で始まる」「で終わる」のいずれかが指定できます。大文字小文字を区別しないフィルタも指定可能です。なお、残されたファイル(抽出されなかったファイル)を格納することも可能です。

指定の列範囲に桁区切り書式を適用します。START列からEND列の手前まで(ENDは含まない)に適用されます。インデックスは「0」から始まります。負のインデックスは末尾から逆算されます。STARTを省略した場合は「先頭から」、ENDを省略した場合は「末尾まで」となります。

検索文字列を置換文字列に全置換します。大文字と小文字は区別されます。たとえばテンプレート文内の “XXXX-XX-XX” という文字列を “2020-05-11” に全置換することが可能です。

全ての重複行を抽出し、削除します。正順モードでは最初の行が保持され、逆順モードでは最後の行が保持されます。なお “ABC” と “Abc” は、異なるカラム要素として認識されます。(ケースセンシティブ)

空行を削除します。全ての空行を削除するモードと連続する空行を1行に集約するモードがあります

全行の末尾にセルを1つ追加します。なお、TSV末尾や先頭の空白文字や改行文字は予め削除されます。また、各行のTabセパレータの数が不一致の場合はセル追加することなくエラー終了します。

指定したカラムの全データに接頭辞Strを結合し、新しいTSV文字列を生成します。結合文字列は各行末に要素追加されます。データのカテゴリ分けなどでご利用いただけます。TSV文字列の末尾先頭にある空白文字や改行文字は事前に削除します。

指定したカラムの全データに接尾辞Strを結合し、新しいTSV文字列を生成します。結合文字列は各行末に要素追加されます。敬称や通貨単位の追加などでご利用いただけます。TSV文字列の末尾先頭にある空白文字や改行文字は事前に削除します。

TSVのセルデータがマトリックス形状になっているか検証します。もし各行でセルデータ数が異なる場合、行末タブが追加されます。整形後の行数と列数を取得することも可能です。なお、検証後TSVの末尾に改行コードは付与されません。

カラム要素同士が重複している行を抽出し、削除します。正順モードでは最初の行が残り、逆順モードでは最後の行が残ります。なお “ABC” と “Abc” は、異なるカラム要素として認識されます。(ケースセンシティブ)

指定シートの指定座標にTSVデータを貼り付けます。選択した TSV 列が貼り付けられます。なお、日付時刻データの場合は「d」を付して、数値データの場合は「n」を付して列指定します。列選択の例: “0,2d,5n”。

テキストの文字数を取得します。連続する空白(タブや全角空白も含む)は全体で1文字とカウントされます。改行コードをカウントしない文字数、改行と空白をカウントしない文字数も取得可能です。

テキストの行数を取得します。末尾の改行コードをカウントしない行数も取得可能です。

正規表現にマッチする文字列を全て抽出します。たとえば「URL正規表現」をセットしておけば、テキスト文中にある全てのURLが抽出されます。

正規表現にマッチする文字列を1つ抽出し、そのサブパターン(キャプチャグループ)を抽出します。

正規表現にマッチする全ての文字列を指定文字列に置換します。たとえばテキスト文中にある全ての電話番号 “0\d{1,4}-\d{1,4}-\d{4}” を「03-0000-0000」に置換できます。

正規表現にマッチする文字列を各行ごとに抽出します。たとえば「メールアドレス正規表現」をセットしておけば、指定セル内にあるメールアドレスが、行の末尾に新規セルとして追加されます。

数値列の値を2つの集約キー列でクロス集計します(ピボットテーブル)。「合計値」「合計値が全体に占める割合」「データ個数」「データ平均値」、いずれのクロス集計表も出力可能です。たとえば「売上ログTSV」から「取引先別(Y軸)と販売店舗別(X軸)の売上高合計」といった集計値が自動的に出力されます。

データの個数をキー列で集約します。「データ個数」「データ個数が全体に占める割合」をサマリ集計表TSVとして出力します。たとえば「アンケート結果TSV」から「アンケート集計表TSV」が自動的に出力されます。頻度分布。

指定セルの値を抽出します。セルはA1表記で指定します。抽出された文字列は、文字列型のデータ項目に格納できます。フォーマットが許せば、数値型、日付型、日時型、単一選択型、ユーザ型、組織型の各データ項目に型変換して格納することも可能です。

指定の列範囲を抽出します。抽出範囲はSTART列からEND列手前まで(ENDは含まない)です。インデックスは「0」から始まります。負のインデックスは末尾から逆算されます。STARTを省略した場合は「先頭から」、ENDを省略した場合は「末尾まで」となります。

数値演算の結果を新しい列として追加します。「A列とB列の加算」や「C列と “1.1” の乗算」といった2値の演算結果がTSV各行の行末に追加されます。加算、減算、乗算、除算、剰余、べき乗に対応しています。

指定した保存済フィルタに一致するケースデータを抽出します。抽出リストはTSV文字列として保存します。フィルタは ReportID にて設定してください。なお、当該フィルタは、ターゲット基盤内にあらかじめ保存されている必要があります。

案件データ(ケースデータ)をAPI経由でTSV抽出します。Web UI で絞り込み設定されたリストの ReportID を使用して抽出し、TSV 形式で格納します。データ列の並びはデータ項目IDのCSVで設定します。

タスクデータ(ワークアイテム)をAPI経由でTSV抽出します。Web UI で絞り込み設定されたリストの ReportID を使用して抽出し、TSV 形式で格納します。データ列の並びはデータ項目IDのCSVで設定します。

指定IDのセル値を抽出します。IDはゼロから始まります。抽出したセル文字列は、文字列型のデータ項目に格納できます。数値型、日付型、日時型、単一選択型、ユーザ型、組織型の各データ項目に型変換して格納することも可能です。

複数行文字列の任意の1行を抽出し、単一行文字列データにセットします。行IDはゼロ始まりの整数で指定してください。行IDが未指定の場合、および範囲外の数字が指定された場合、複数行文字列の最終行が抽出されます。

複数行文字列から先頭行を取り除きます。文字列はオリジナルに比べて1行少なくなります。ループフロー内や再帰反復ワークフロー内に配置すると、データリスト(複数行文字列)の逐次処理が実現できます。

任意日付の週末日曜日を取得します。日曜日が指定された場合、当日を返します。なお「翌週の月曜日」「当週の火曜日」を取得したい場合は、更に #q_date.addDays(1) や #q_date.addDays(-5) といった変換が必要です。

任意の日付値が営業日であるかどうかを判別します。その日付けが祝祭日の場合、祝祭日の名前を返します。土曜や日曜の場合、曜日の名前を返します。それ以外の場合は、空の文字列を返します。会社オリジナルの休日を設定することも可能です。

任意日付のN営業日後を計算します。Nがマイナスの場合、N営業日前を計算します。あらかじめ祝祭日の設定が必要です。会社オリジナルの休日を追加することも可能です。

日付TSV内の行数を四半期ごとにカウントし、2列のTSV(”Q-202604~06″,”3″)として出力します。数値列(例:本体価格, 消費税額)を含む場合、その数値を四半期合計(”Q-202604~06″,”3″,”12000″,”1200″)することも可能です。なお、Date 列の場所はA列(id=0)に限らず、任意の列位置を指定できます。また Datetime フォーマットになっていても構いません。

自動工程のコンフィグ情報を抽出します。Addon-XML ファイル(Questetra BPMS 自動処理工程用)がパースされ、summary、last-modified、config などの情報が抽出されます。

ワークフローアプリの工程名とデータ項目名(変数名)を抽出します。Model-XML ファイルがパースされ、ヒューマン工程なのか自動工程なのか、データ型は何か、などの情報が抽出されます。

指定範囲の行を抽出します。抽出範囲は開始インデックスと終了インデックスで指定されます。インデックスはゼロ始まりで、先頭行のインデックスはゼロとなります。終了インデックスで指定された行は抽出範囲に含まれない点に注意が必要です。

ドメイン形式文字列(サブドメインを含む)から “登録済みドメイン名” および “ドメインの日齢” (WHOISレコード)を取得します。登録されていない場合、エラーとなります。無料APIライセンスは、1か月あたり最大500クエリに制限されます。

Google Calendar にアクセスし、指定された期間に登録されているイベントリスト(予定)の一覧を取得します。

Azure OpenAI Service(AOAI)の API (Microsoft 基盤上で動く ChatGPT) と通信します。高度なパラメータの付与をサポートします。

日付Aから日付Bまでの営業日数を算出します。あらかじめ祝祭日の設定が必要です。会社オリジナルの休日を追加することも可能です。例えば、当月の営業(稼働)日数を予め算出し、作業計画するといった業務に利用できます。

共通のキーFieldに基づいて2つのTSVをマージします。TsvA(左テーブル)の全行を保持し、TsvB(右テーブル)から一致する行を取り込みます〔左外部結合〕。どちらのTSVも事前ソートは不要ですが、TsvBのより上位にある行がマッチング判定されます。

業務データを「自動処理ログ」に出力します。ワークフローアプリの管理者特権を持つユーザは、案件が自動工程に到達した時点で保存されていたデータを検証できるようになります。

任意テキストをコラボチャット(Collab-Chat: Questetraワークフロー基盤の社内チャット)に投稿します。チャンネルを指定して投稿します。組織チャンネルやケースチャンネルへの投稿はid(例 “g12” や “p123″)を指定し、ユーザ作成チャンネルへの投稿はチャンネル名(例 “general”)を指定します。

任意のテキストをコラボチャット(Collab Chat: Questetraワークフロー基盤の社内チャット)にクロス投稿します。複数のチャンネルまたはスレッドを指定できます。組織チャンネル、アプリチャンネル、ケースチャンネルに投稿する際は ID(例: “g12”, “m12”, “p123″)を指定し、ユーザ作成チャンネルに投稿する際はチャンネル名(例: “general”)を指定します。

ワークフロー基盤のマスターテーブル(OptionsXML)を参照し、新しいマスターファイルを生成します。新しいID-Labelは先頭行に追加されます。IDが重複する場合、当該行は削除されます。もし指定のマスターファイル名が存在しない場合、新規に生成されます。下流工程に[サービスタスク(選択肢マスタ更新)] を配置すれば、更新業務を自動化できます。

マスター情報を案件データとして取り込みます。ワークフロー基盤内で共有されているIDとLabelがTSV(Tab-Separated Values)連結され、複数行文字列型データに格納されます。

ワークフロー基盤のマスターテーブル(OptionsXML)を参照し、不要な行を削除したうえで新しいマスターファイルを生成します。削除IDが選択肢に存在しない場合も、エラーになりません。下流工程に[サービスタスク(選択肢マスタ更新)] を配置すれば、選択肢削除の更新業務を自動化できます。

有効なマイナンバー文字列であることを判定します。有効である場合はOKログが記録されます。無効である場合は異常終了します。エラー境界イベントでフローを制御することが可能となります。マイナンバーはすべての日本国民および居住者(外国人を含む)に発行される12桁のIDです。

有効な法人番号文字列であることを判定します。有効である場合はOKログが記録されます。無効である場合は異常終了します。エラー境界イベントでフローを制御することが可能となります。法人番号は日本の企業や団体等に割り当てられた13桁のIDです。