サービスタスク(アドオン)

機能概要

プロセスにおいて、システムが処理する自動工程を表します。
ユーザ独自定義の自動処理タスクを実行します。

現在、ベータ(Beta)機能として提供しています。
ベータ(Beta)機能に関する注意点は、「このマニュアルについて」-「ベータ(Beta)機能について」を参照してください。
アプリ管理権限を持つユーザが対象です。
ECMAスクリプトおよびJavaの使用経験者を対象としています。

機能一覧

ワークフロー図 ワークフロー図の作成を行います。
スイムレーンや各ノードを配置し、フローを作成して、作業の順序を定義します。
ヒューマンタスク プロセスにおいて、処理担当者が作業する手動工程を表します。
プロセス実行時に、データを入力するフォーム(タスク処理画面)が表示されます。
データ更新 プロセスにおいて、システムが処理する自動工程を表します。
数値型、日付型/日時型、文字型、選択型データ項目に、動的な値や演算結果を代入します。
PDF ファイル生成 プロセスにおいて、システムが処理する自動工程を表します。
業務データ(各データ項目に保持されている値)を埋め込んだPDF帳票を生成します。
選択肢マスタ更新 プロセスにおいて、システムが処理する自動工程を表します。
指定の選択型データ項目の内容を、アプリ共有アドオンまたはアドオンの[選択型データ項目で使用する選択肢マスタ]として更新します。
スクリプトタスク プロセスにおいて、システムが処理する自動工程を表します。
ECMAスクリプトを使用して、業務データ(各データ項目に保持されている値)を編集します。
受信タスク
(フォーム)
プロセスにおいて、システムが処理する自動工程を表します。
アカウントを持たないユーザに対して、プロセスの途中での入力フォームを提供します。
メッセージ開始イベント(フォーム)を使用してユーザにWeb入力フォームを提供したあとに、メールによる本人確認を経て、詳細情報を入力するようなWeb入力フォームを表示します。
受信タスク
(Webhook)
プロセスにおいて、システムが処理する自動工程を表します。
外部サービス側のWebhook通知の受信まで待機し、受信後にトークンが進みます。
サービスタスク
(アドオン)
プロセスにおいて、システムが処理する自動工程を表します。
ユーザ独自定義の自動処理タスクを実行します。
タイマー開始イベント プロセスにおいて、システムが処理する自動工程を表します。
設定した日時にプロセスを自動的に開始します。
タイマー中間イベント プロセスにおいて、システムが処理する自動工程を表します。
指定した日時まで待機し、指定日時を経過するとトークンが進みます。
メッセージ開始・
受信中間イベント(HTTP)
プロセスにおいて、システムが処理する自動工程を表します。
メッセージ開始イベント(HTTP): 外部システムまたはDataSpider BPMの他のプロセスから受け取ったメッセージをもとにプロセスを開始します。
メッセージ受信中間イベント(HTTP): プロセスの実行途中で、外部システムまたはDataSpider BPMの他のプロセスから受け取ったメッセージをもとにデータを入力できます。
メッセージ開始イベント
(フォーム)
プロセスにおいて、システムが処理する自動工程を表します。
Webページの入力フォームから受け取ったメッセージをもとにプロセスを開始します。
入力フォームは、データ項目のレイアウトをWebページに埋め込んで使用します。
メッセージ開始イベント
(Webhook)
プロセスにおいて、システムが処理する自動工程を表します。
外部サービス側のWebhook通知の受信を起点とし、プロセスを自動的に開始します。
メッセージ送信中間イベント
(HTTP)
プロセスにおいて、システムが処理する自動工程を表します。
指定したURLに、HTTPリクエストを送信します。
外部システムまたはDataSpider BPMの他のプロセスへのデータ送信が可能となります。
メッセージ送信中間イベント
(メール)
プロセスにおいて、システムが処理する自動工程を表します。
設定した内容でメールを送信します。
送信先は任意に設定できます。
メール本文に、データ項目の入力内容を埋め込むことができます。
メッセージ送信中間イベント
(DataSpider Servista)
プロセスにおいて、システムが処理する自動工程を表します。
指定したDataSpider Servistaのスクリプトを実行することができます。
イベントの実行時には、DataSpider BPM側のデータ項目の値を、DataSpider Servista側で定義されている入力変数へ渡すことができます。
スクリプト終了時には、DataSpider Servista側で定義されている出力変数の値を、DataSpider BPM側のデータ項目の値として受け取ることができます。
スクリプトの実行結果(結果の戻り値:ExitStatusおよびエラー内容)を受け取り、その後のタスクや条件分岐処理等で使用することができます。
分岐 ワークフロー図に分岐がある場合、分岐・遷移先の設定を行います。

項目説明

プロパティ設定ダイアログ表示されるプロパティは、定義ファイル(アドオンXML)で定義した内容に依存します。
項目名 必須 説明
工程名 任意 タスクの名称を入力します。
メモ 任意 タスクの注意点や目的などに関するメモを入力します。
処理失敗時に、
トークンをエラー境界イベントに移動
任意 処理が失敗した際のフローを定義したい場合は、有効にします。
有効にした場合は、タスクの下部にエラー境界イベントが表示されます。
サービスタスク定義ファイル 必須 ユーザ独自定義のプロパティを表示します。
表示されるプロパティおよび実行時の処理内容は、定義ファイル(アドオンXML)で定義した内容に依存します。
定義ファイル(アドオンXML)に関する詳細は、こちらを参照してください。

操作メニュー説明

表示 操作メニュー 説明
[ヘルプ]アイコン このマニュアルページを表示します。
定義ファイル(アドオンXML)に、<help-page-url>要素が定義されている場合に表示されます。
[この工程のみデバッグ]ボタン 以下のワークフローが自動で作成され、この工程のみのデバッグプロセスを開始します。
  • 「開始イベント」→「ヒューマンタスク」→「デバッグ対象工程」→「終了イベント」
「デバッグ対象工程」の実行に必要なテストデータを入力するための、[テストデータを入力]という工程名が付いた「ヒューマンタスク」が用意されます。
[参照を挿入する...]アイコン 定義したプロパティに、プロセス情報や変数の参照を挿入します。
  • [件名]: #{processInstanceTitle}
  • [プロセスID]: #{processInstanceId}
  • [プロセス開始ユーザ]: #{processInstanceInitQuserName}
  • [プロセス開始組織]: #{processInstanceInitQgroupName}
  • [プロセス開始日時]: #{processInstanceStartDatetime}
  • [プロセス連番]: #{processInstanceSequenceNumber}
  • [アプリID]: #{processModelInfoId}
  • [アプリ名]: #{processModelInfoName}
  • [<データ項目>]: #{#<データ項目の[フィールド名]>}
  • [アプリ変数]: ${var[<変数名>]}
  • [システム変数]: ${var[applicationRoot]}
定義ファイル(アドオンXML)に、<config>要素のform-type属性に「TEXTFIELD」および「TEXTAREA」が定義されている場合に表示されます。
アプリ変数に関する詳細は、「変数設定(アプリ変数)」を参照してください。
システム変数に関する詳細は、「設定ファイル(qbpms.config)」を参照してください。
[適用して閉じる]ボタン 設定した値を適用して、サービスタスク(アドオン)のプロパティ設定ダイアログを閉じます。
[適用する]ボタン 設定した値を適用します。
[キャンセル]ボタン 設定した値を適用せずに、サービスタスク(アドオン)のプロパティ設定ダイアログを閉じます。

定義ファイル(アドオンXML)について

サービスタスク(アドオン)では、ユーザ独自定義のサービスタスクを作成および使用することができます。
指定の定義様式を用いて、XML形式の定義ファイルとして作成し、アプリ共有アドオンまたはアドオンとして登録します。
正常に登録された場合は、ワークフロー図のパレットに表示されますので、適宜スイムレーンに配置して使用してください。
アプリ共有アドオンに関する詳細は、
「アプリ共有アドオン(管理)」を参照してください。
アドオンに関する詳細は、「アドオンの管理」を参照してください。

定義ファイル(アドオンXML)の基本構造


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

   <label>ラベル名を定義します。</label>
   <help-page-url>マニュアルページを定義します。</help-page-url>
   <summary>サービスタスクの概要説明を定義します。</summary>
   <license>サービスタスクのライセンス情報を定義します。</license>
   <engine-type>定義したスクリプトの実行エンジンの種類を設定します。</engine-type>
   <last-modified>定義したスクリプトの最終更新日を設定します。</last-modified>

   <configs>
     <config プロパティ設定ダイアログに表示するプロパティを定義します。>
       <label>プロパティの説明を定義します。</label>
     </config>
     ...
   </configs>

   <script><![CDATA[
     実行時の処理内容をスクリプトで定義します。
     ...
   ]]></script>

   <icon>
     サービスタスク(アドオン)に表示するロゴアイコンを定義します。
   </icon>

 </service-task-definition>

定義ファイル(アドオンXML)の要素詳細

要素名 説明
<service-task-definition> 定義ファイル(アドオンXML)のルート要素です。
  <label> ラベル名を定義します。
プロパティ設定ダイアログのタイトル名称およびパレットでのポップアップで表示します。
多言語対応する場合は、locale属性を以下のように指定します。
  • 日本語: <label locale="ja">ここに日本語のラベル名を定義します。</label>
  • English: <label>ここに英語のラベル名を定義します。</label>
  • 中文(簡体): <label locale="zh_CN">ここに中文のラベル名を定義します。</label>
64文字以下で定義してください。
<help-page-url> マニュアルへのURLリンクを定義します。
プロパティ設定ダイアログに[ヘルプ]アイコンを表示します。
多言語対応する場合は、locale属性を以下のように指定します。
  • 日本語: <help-page-url locale="ja">ここに日本語のマニュアルへのURLリンクを定義します。</help-page-url>
  • English: <help-page-url>ここに英語のマニュアルへのURLリンクを定義します。</help-page-url>
  • 中文(簡体): <help-page-url locale="zh_CN">ここに中文のマニュアルへのURLリンクを定義します。</help-page-url>
250文字以下で定義してください。
<summary> サービスタスクの概要説明を定義します。
多言語対応する場合は、locale属性を以下のように指定します。
  • 日本語: <summary locale="ja">ここに日本語のマニュアルへのURLリンクを定義します。</summary>
  • English: <summary>ここに英語のマニュアルへのURLリンクを定義します。</summary>
  • 中文(簡体): <summary locale="zh_CN">ここに中文のマニュアルへのURLリンクを定義します。</summary>
250文字以下で定義してください。
<license> サービスタスクのライセンス情報を定義します。
プロパティ設定ダイアログには表示されません。
<engine-type> 定義したスクリプトの実行エンジンの種類を設定します。
  • GraalJS: [2]
プロパティ設定ダイアログには表示されません。
DataSpider BPM 2.6.1では、「GraalJS」のみであるため[2]を設定してください。
<last-modified> 定義したスクリプトの最終更新日を設定します。
プロパティ設定ダイアログの名前をフォーカスすると、ツールチップとして表示します。
<configs> プロパティ設定ダイアログに表示するプロパティ定義のルート要素です。
  <config> プロパティ設定ダイアログに表示する1つのプロパティを定義します。
複数のプロパティを指定する場合は、繰り返し定義してください。

config要素の以下の属性において、そのプロパティの選択および入力方法を指定します。
属性名 説明
name そのプロパティの内部名称を定義します。
例) name="conf_DataIdA"
数字、アルファベットおよびアンダーバー「_」が使用できます。
64文字以下で定義してください。
form-type そのプロパティの入力方式を定義します。
例) form-type="SELECT"
  • TEXTFIELD: 単一行の文字入力方式 デフォルト
  • TEXTAREA: 複数行の文字入力方式
  • SELECT: 選択リストから、そのアプリに定義してある各データ項目を指定する方式
  • SELECT_ITEM: <item>で定義した選択リストから指定する方式
  • QUSER: リストからユーザを指定または入力する方式
  • OAUTH2: HTTP認証設定から選択する方式
select-data-type form-typeが「SELECT」の場合の、選択リストに表示するデータ項目のデータタイプ(データ型)を定義します。
例) select-data-type="STRING"
  • STRING: 文字型のデータ項目 デフォルト
  • STRING_TEXTFIELD: 文字型(単一行)のデータ項目
  • STRING_TEXTAREA: 文字型(複数行)のデータ項目
  • DECIMAL: 数値型のデータ項目
  • DATE: 日付型のデータ項目
  • DATE_YMD: 日付型(年月日)のデータ項目
  • DATE_YM: 日付型(年月)のデータ項目
  • DATE_MD: 日付型(月日)のデータ項目
  • DATE_Y: 日付型(年)のデータ項目
  • DATETIME: 日時型のデータ項目
  • SELECT: 選択型のデータ項目
  • SELECT_SINGLE: 選択型(ラジオボタン、リストボックスなどの単一選択)のデータ項目
  • SELECT_CHECKBOX: 選択型(チェックボックスなどの複数選択)のデータ項目
  • QUSER: ユーザ型のデータ項目
  • QGROUP: 組織型のデータ項目
  • LIST: テーブル型のデータ項目
  • FILE: ファイル型のデータ項目
  • DISCUSSION: 掲示板型のデータ項目
required そのプロパティの指定が必須かどうかを定義します。
例) required="true"
  • true: 必須の指定項目
  • false: 任意の指定項目 デフォルト
el-enabled そのプロパティにおいて、データ参照を可能にする[参照を挿入する...]の選択リストを追加するかどうかを定義します。
データ参照を挿入した場合、実行時にデータの値をそのプロパティに適用します。
例) el-enabled="true"
  • true: [参照を挿入する...]の選択リストを追加する
  • false: [参照を挿入する...]の選択リストを追加しない デフォルト
[参照を挿入する...]の選択リストでは、以下の参照を選択することができます。
el-enabled="true"を設定した場合は、実行時に設定値が自動処理ログに表示されます。
form-typeが「TEXTFIELD」および「TEXTAREA」の場合に指定します。
  • 件名: #{processInstanceTitle}
  • プロセスID: #{processInstanceId}
  • プロセス開始ユーザ: #{processInstanceInitQuserName}
  • プロセス開始組織: #{processInstanceInitQgroupName}
  • プロセス開始日時: #{processInstanceStartDatetime}
  • プロセス連番: #{processInstanceSequenceNumber}
  • アプリID: #{processModelInfoId}
  • アプリ名: #{processModelInfoName}
  • [<データ項目>]: #{#<データ項目の[フィールド名]>}
  • [アプリ変数]: ${var[<変数名>]}
  • [システム変数]: ${var[applicationRoot]}
editable form-type="SELECT"を指定した際に、テキストフィールドへの入力を許可するどうかを定義します。
例) editable="true"
  • true: 入力を許可する
  • false: 入力を許可しない デフォルト
入力を許可した場合は、リストに[固定値]が追加され、選択するとテキストフィールドが表示されます。
例) <config name="conf_DataPrefix" required="false" form-type="SELECT" select-data-type="STRING_TEXTFIELD">...</config>
上記の例では、データの接頭辞を指定するプロパティで、「conf_DataPrefix」という名前の、任意指定項目で文字型(単一行)のデータ項目から選択するプロパティとなります。
  <label> プロパティの説明を定義します。
多言語対応する場合は、locale属性を以下のように指定します。
  • 日本語: <label locale="ja">ここに日本語のプロパティ説明を定義します。</label>
  • English: <label>ここに英語のプロパティ説明を定義します。</label>
  • 中文(簡体): <label locale="zh_CN">ここに中文のプロパティ説明を定義します。</label>
64文字以下で定義してください。
<item> form-type="SELECT_ITEM"を指定した際の選択肢リストを定義します。
  • value属性で選択肢の値を指定します。
  • <label>で選択肢の表示ラベルを指定します。
選択肢リストの定義例)

 <item value="JP"><label>日本</label></item>
 <item value="US"><label>アメリカ</label></item>

<script> 実行時の処理内容を定義します。
スクリプトタスクと同様に、ECMAスクリプトを使用して記述します。

<script><![CDATA[

 ~この間にスクリプトを記述します~

]]></script>
スクリプトの記述方法に関しての詳細は、「スクリプトタスク」を参照してください。

また、記述するスクリプト内で、設定したプロパティの値を取得するには、以下の方法があります。
  • configs.get("<プロパティ名>")
    • 以下の文字列(java.lang.String)を返します。
      • form-type="TEXTFIELD"または"TEXTAREA"の場合: 入力された文字列、またはEL式が評価された結果の文字列(el-enabled="true"の場合)
      • form-type="SELECT"の場合: 指定されたデータ項目のデータ項目番号、または入力された文字列(editable="true"の場合)
      • form-type="SELECT_ITEM"の場合: 選択された選択肢の値
      • form-type="QUSER"の場合: 選択したユーザのユーザID
      • form-type="OAUTH2"の場合: 選択したHTTP認証設定の設定名
  • configs.getObject("<プロパティ名>")
    • 以下のオブジェクトを返します。
      • form-type="TEXTFIELD"または"TEXTAREA"の場合: null オブジェクト
      • form-type="SELECT"の場合: ProcessDataDefinitionView オブジェクト
        editable="true"の場合で、直接値を入力している場合はnullが返されます。
             この場合は、configs.getObject("<プロパティ名>")を使用して入力値を取得してください。
      • form-type="SELECT_ITEM"の場合: ItemVeiw オブジェクト
      • form-type="QUSER"の場合: QuserView オブジェクト
      • form-type="OAUTH2"の場合: AuthSettingWrapper オブジェクト
<icon> サービスタスク(アドオン)に表示するロゴアイコンを定義します。
画像ファイル(JPEG, GIF, PNG)をBase64エンコードした値を設定します。


64px以下の画像ファイルにしてください。

定義ファイル(アドオンXML)の定義例

設定した下限値から上限値の値で、乱数を生成します。

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

   <label>Generate Random</label>
   <label locale="ja">乱数生成</label>
   <summary>Generates a random number. When a token reaches this automated step, ~.</summary>
   <summary locale="ja">乱数を生成します。案件トークンがこの自動工程に到達すると、~</summary>
   <engine-type>2</engine-type>
   <last-modified>2023-10-31</last-modified>

   <configs>
     <config name="conf_Lower" required="true" el-enabled="true" form-type="TEXTFIELD">
       <label>A: Set Lower Limit (e.g. "0", "-0.5")</label>
       <label locale="ja">A: 下限値をセットしてください (例 "0", "-2.5")</label>
     </config>
     <config name="conf_Upper" required="true" el-enabled="true" form-type="TEXTFIELD">
       <label>B: Set Upper Limit (e.g. "10", "0.5")</label>
       <label locale="ja">B: 上限値をセットしてください (例  "10 ",  "2.5 ")</label>
     </config>
     <config name="conf_DataIdC" required="true" form-type="SELECT" select-data-type="DECIMAL">
       <label>C: Select NUMERIC DATA for Generated Number (update)</label>
       <label locale="ja">C: 生成された乱数が格納される数値型データを選択してください (更新)</label>
     </config>
   </configs>

   <script><![CDATA[

     //////// START "main()" ////////
     main();
     function main(){

       //// == Config Retrieving / 工程コンフィグの参照 ==
       const lower = configs.get( "conf_Lower" ) + ""; // config required
       const upper = configs.get( "conf_Upper" ) + ""; // config required
       const dataIdC = configs.get( "conf_DataIdC" ) + ""; // config required
       // 'java.lang.String' (String Obj) to javascript primitive 'string'

       // Design-time Config Format Check
       const numLower = parseFloat( lower );
       engine.log( " AutomatedTask Lower Limit: " + numLower );
       const numUpper = parseFloat( upper );
       engine.log( " AutomatedTask Upper Limit: " + numUpper );
       if( isNaN(numLower) ){
         throw new Error( "¥n AutomatedTask ConfigError:" +
         " Config {Lower} is not a number ¥n" );
       }
       if( isNaN(numUpper) ){
         throw new Error( "¥n AutomatedTask ConfigError:" +
         " Config {Upper} is not a number ¥n" );
       }
       if( numLower > numUpper ){
         throw new Error( "¥n AutomatedTask ConfigError:" +
         " Config {Lower} is greater than {Upper} ¥n" );
       }

       //// == Data Retrieving / ワークフローデータの参照 ==
       // nothing (This Service Task is a CREATE type)

       //// == Calculating / 演算 ==
       let numDiff = numUpper - numLower;
       let mathRand = Math.random(); // Math.random(): 0.00 to 0.99
       engine.log( " AutomatedTask Math.random(): " + mathRand );
       let numRand = mathRand * numDiff + numLower;
       engine.log( " AutomatedTask Generated Random: " + numRand );

       //// == Data Updating / ワークフローデータへの代入 ==
       engine.setDataByNumber( dataIdC, new java.math.BigDecimal( numRand ) );

     } //////// END "main()" ////////

   ]]></script>

   <icon>
     iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABv0lEQVRYR+1XPU7DMBj1l0xpJcQFUBkZYe2Cx9bJ0CP0COUEl
     BPAEXqEDo1ToQ6uxA5HgBuwVJ3qD32ortxUKc5PE4HIEiV+iV/e+75nB1jqEEKMAeA+fb+Ka0R8kFKO7XfBP4GfFCDZyshv21
     nIgjiOD2w6RkgIcU3jUso3OodhiAZ/cgI0udb6CgDOEPF5Pp+/10qg2+126GtbrdbFYrF4aUKBMbVZGIajOI6faidAE1KOaK0
     nJH8lBBBxLzjydgQA7J4vVIR5JzyG/50EEHGZ9VUAcEtjLpgtLv9acCyITI+7YCohIIRQUkpuFKmNQK/XuwSAjud5SmvNEfHD
     TjlSwGCs2N3DlFJACDFkjA3J863fEynlxFbAYKx62cOUImBLbvtdmwWGQBRFfDabqVprgDzPakOqCRpzwRS2oPEkdAkZF0xhB
     VxCxgVTigDn/DwIAp4kybTf7w/W67VSSn3aXUAFqrX+jmY6PM9bUsFWsiMiAu12WyHiKwDcrFYrnkFgV7BUoJUR2G4sRoyxR8
     bYXXq3c3ILKGZ9359uNpuBOaejOP1HZdb+SizIasVaktAlZFwwhbug8SD68wS+AAh8Lj/CJSvYAAAAAElFTkSuQmCC
   </icon>

 </service-task-definition>

定義ファイル(アドオンXML)の画面表示例