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

| 項目名 | 必須 | 説明 | |
|---|---|---|---|
| 基本 | 名称 | 任意 | タスクの名称を入力します。 |
| メモ | 任意 | タスクの注意点や目的などに関するメモを入力します。 | |
| スクリプト | 必須データ項目の 値をクリアすることを 許可する |
任意 | チェックを入れた場合、[必須]として設定したプロセスデータ項目に保持されている値を空(未入力)の状態にすることができます。 |
| スクリプト 入力フィールド |
必須 | スクリプトを記述する入力フィールドです。 | |
| 表示 | 操作メニュー | 説明 | |
|---|---|---|---|
| 基本 | ![]() |
[閉じる]ボタン | タスクのプロパティダイアログを閉じます。 |
| スクリプト | ![]() |
[マニュアル表示]ボタン | このマニュアルページを表示します。 |
エラー発生時には、コントロール権限を持つユーザに対して通知メールが送信されます。
5秒以上の処理時間になる可能性がある場合は、複数の「スクリプトタスク」に処理を分割してください。
処理時間は、DataSpider BPMサーバの負荷状況により変動します。
ECMAスクリプト(ECMA-262)に関する詳細は、「Standard ECMA-262 ECMAScript(R) Language Specification」
browserオブジェクトは使用することができません。
以下に記載されているJavaクラス以外は使用することができません。| クラス | 型 | メソッド | メソッド説明 |
|---|---|---|---|
|
com.questetra.bpms.core.select.Item (選択型プロセスデータで使用) |
String | getValue() | 選択肢IDを取得します。 |
| String | getDisplay() | 表示ラベルを取得します。 | |
|
com.questetra.bpms.util.AddableDate (日付型プロセスデータで使用) |
AddableDate | addDays(int days) | 指定した日数を加えたDateを返します。 |
| AddableDate | addMonths(int months) | 指定した月数を加えたDateを返します。 | |
| AddableDate | getFirstDateInMonth() |
その月の最初の日を返します。 1日 |
|
| AddableDate | getFirstTimeInMonth() | 非推奨 | |
| AddableDate | getLastDateInMonth() |
その月の最後の日を返します。 翌月1日の1日前 |
|
| AddableDate | getLastTimeInMonth() | 非推奨 | |
|
com.questetra.bpms.util.AddableTimestamp (日時型プロセスデータで使用) |
AddableTimestamp | addHours(int hours) | 指定した時間を加えたTimestampを返します。 |
| AddableTimestamp | addDays(int days) | 指定した日数を加えたTimestampを返します。 | |
| AddableTimestamp | addMonths(int months) | 指定した月数を加えたTimestampを返します。 | |
| AddableTimestamp | getFirstTimeInDate() | その日の最初の時刻を返します。 | |
| AddableTimestamp | getFirstTimeInMonth() |
その月の最初の時刻を返します。 1日の0時0分0秒0ミリ秒 |
|
| AddableTimestamp | getLastTimeInMonth() |
その月の最後の時刻を返します。 翌月1日の1ミリ秒前 |
|
| String | toString() | 「yyyy-MM-dd HH:mm」形式の文字を返します。 | |
|
com.questetra.bpms.core.event.scripttask.ProcessInstanceView (プロセス属性) |
Long | getProcessModelInfoId() | プロセスモデル番号を取得します。 |
| String | getProcessModelInfoName() | プロセスモデルの名称を取得します。 | |
| String | getProcessModelInfoCategory() | プロセスモデルのカテゴリを取得します。 | |
| Long | getProcessModelVersion() | プロセスが開始されたときのプロセスモデルのバージョンを取得します。 | |
| Long | getProcessInstanceId() | プロセスIDを取得します。 | |
| String | getProcessInstanceTitle() | プロセスの件名を取得します。 | |
| Long | getProcessInstanceInitQuserId() | プロセス開始ユーザのIDを取得します。 | |
| String | getProcessInstanceInitQuserName() | プロセス開始ユーザの名称を取得します。 | |
| Long | getProcessInstanceInitQgroupId() | プロセス開始組織のIDを取得します。 | |
| String | getProcessInstanceInitQgroupName() | プロセス開始組織の名称を取得します。 | |
| AddableTimestamp | getProcessInstanceStartDatetime() | プロセス開始日時を取得します。 | |
| Long | getProcessInstanceSequenceNumber() | プロセス連番を取得します。 | |
| void | setProcessInstanceTitle(String title) | プロセスの件名を設定します。 | |
|
com.questetra.bpms.core.event.scripttask.QuserView (ユーザ型プロセスデータで使用) |
Long | getId() | ユーザIDを取得します。 |
| String | getName() | ユーザ名を取得します。 | |
| String | getEmail() | ユーザのメールアドレスを取得します。 | |
|
com.questetra.bpms.core.event.scripttask.QgroupView (組織型プロセスデータで使用) |
Long | getId() | 組織IDを取得します。 |
| String | getName() | 組織名を取得します。 | |
| String | getEmail() | 組織のメールアドレスを取得します。 | |
|
com.questetra.bpms.core.event.scripttask.QroleView (ロール情報) |
Long | getId() | ロールIDを取得します。 |
| String | getName() | ロール名を取得します。 | |
|
com.questetra.bpms.core.event.scripttask.QuserDaoWrapper (ユーザ情報) |
QuserView | findByEmail(String email) | メールアドレスでユーザを検索します。 |
| QuserView | findById(Long id) | ユーザIDでユーザを検索します。 | |
| List<QuserView> | findByQgroup(QgroupView qgroup) | 指定した組織に所属しているユーザ一覧を検索します。 | |
| List<QuserView> | findByQgroupAndPosition(QgoupView qgroup, boolean isLeader) | 指定した組織にリーダまたはスタッフとして所属しているユーザ一覧を検索します。 | |
| List<QuserView> | findByQrole(QroleView qrole) | 指定したロールに所属しているユーザ一覧を検索します。 | |
|
com.questetra.bpms.core.event.scripttask.QgroupDaoWrapper (組織情報) |
QgroupView | findById(Long id) | IDで組織を検索します。 |
| QgroupView | findByName(String name) | 名称で組織を検索します。 | |
| QgroupView | findParentQgroup(QgroupView qgroup) | 指定した組織の親組織を検索します。 | |
| List<QgroupView> | findByQuser(QuserView quser) | 指定したユーザが所属している組織一覧を検索します。 | |
| List<QgroupView> | findByQuserAndPosition(QuserView quser, boolean isLeader) | 指定したユーザがリーダまたはスタッフとして所属している組織一覧を検索します。 | |
|
com.questetra.bpms.core.event.scripttask.QroleDaoWrapper (ロール情報) |
QroleView | findById(Long id) | ロールIDでロールを検索します。 |
| QroleView | findByName(String name) | ロール名でロールを検索します。 | |
| List<QroleView> | findByQuser(QuserView quser) | ユーザが所属しているロール一覧を検索します。 | |
|
com.questetra.bpms.core.model.formdata.ListArray (テーブル型プロセスデータで使用) |
String | get(int row_index, int col_index) |
セルデータを取得する - row_index : 行番号 0始まり - col_index : 列番号 0始まり |
| ListArray.ListRow | getRow(int row_index) | 指定行を取得します。 | |
| List<ListArray.ListRow> | getRows() | 全行を取得します。 | |
| int | size() | 行数を取得します。 | |
| void | setRows(List<ListArray.ListRow> rows) | 全行を設定します。 | |
| void | addRow( ListArray.ListRow row ) | 行を追加します。 | |
| ListArray.ListRow | removeRow(int row_index) | 行を削除します。 | |
| ListArray.ListRow | getSummary() | サマリ行を取得します。 | |
| void | setSummary(ListArray.ListRow summary) | サマリ行に値を設定します。 | |
| void | clearSummary(int col_index) | サマリ行の内容を指定列数の空の内容で初期化します。 | |
|
com.questetra.bpms.core.model.formdata.ListArray.ListRow (テーブル型プロセスデータで使用: 行単位) |
List<String> | getCols() | 全列を取得します。 |
| String | getCol(int col_index) | 指定列を取得します。 | |
| int | size() | 列数を取得します。 | |
| void | setCols(List<String> cell_strings) | 全列を上書きします。 | |
| void | addCol(String cell_string) | 列を追加します。 | |
| void | setCol(int col_index, String cell_string) | 指定列を上書きします。 | |
|
com.questetra.bpms.core.event.scripttask.ItemView (選択肢マスタ情報) |
String | getValue() | 選択肢IDを取得します。 |
| String | getDisplay() | 表示ラベルを取得します。 | |
|
com.questetra.bpms.core.event.scripttask.ItemDaoWrapper (選択肢マスタ情報) |
List<ItemView> | findAll(String fileName, boolean isSharedFile) | 指定した選択肢マスタの全選択肢を検索します。 |
| ItemView | findByValue(String fileName, boolean isSharedFile, String value) | 指定した選択肢マスタから特定の値(選択肢ID)を持つ選択肢を検索します。 | |
| java.lang.String | - | - | - |
| java.lang.Long | - | - | - |
| java.lang.Math | - | - | - |
| java.util.ArrayList | - | - | - |
| java.util.HashMap | - | - | - |
| java.util.Locale | - | - | - |
| java.util.regex.Pattern | - | - | - |
| java.util.regex.Matcher | - | - | - |
| java.math.BigDecimal | - | - | - |
| java.text.SimpleDateFormat | - | - | - |
| java.text.DecimalFormat | - | - | - |
| java.sql.Date | - | - | - |
| java.sql.Timestamp | - | - | - |
プロセスデータ項目の値を取得する場合は、dataというMapを使用します。
プロセスデータ項目に入力がないまたは選択されていない場合は、取得した値はnullとなります。
プロセスデータ項目に値を設定する場合は、retValというMapを使用します。
プロセスデータ項目への設定は、スクリプト処理完了後にまとめて行われます。retVal.put()を実行したタイミングではありません。
| 文字型 | 文字型プロセスデータ項目に対する値の取得と設定 |
|---|---|
| 数値型 | 数値型プロセスデータ項目に対する値の取得と設定 |
| 選択型 | 選択型プロセスデータ項目に対する値の取得と設定 |
| 日付型 | 日付型プロセスデータ項目に対する値の取得と設定 |
| 日時型 | 日時型プロセスデータ項目に対する値の取得と設定 |
| ユーザ型 | ユーザ型プロセスデータ項目に対する値の取得と設定 |
| 組織型 | 組織型プロセスデータ項目に対する値の取得と設定 |
| テーブル型 | テーブル型プロセスデータ項目に対する値の取得と設定 |
| [その他] プロセス属性 | 全プロセス共通のプロセス属性に対する値の取得と設定 |
| [その他] 部門検索 | 「本部-部-課」という構造をもった組織における、所属する本部の取得と設定 |
| [その他] JSON解析 | 文字型(複数行)に保持されているJSON形式の文字列を解析 |
retVal.put("0", "HelloWorld!!");
retVal.put("1", "Hello\nWorld!!");
var newAgenda = data.get("0");
var agendaList = data.get("1");
agendaList += '\n';
agendaList += newAgenda;
retVal.put("1", agendaList);
retVal.put("2", new java.math.BigDecimal(123));
retVal.put("3", new java.math.BigDecimal(Math.random()));
var quantity = data.get("4");
var unitPrice = data.get("5");
var price = quantity * unitPrice;
retVal.put("6", new java.text.DecimalFormat('#,##0円').format(price));
選択肢リストすべてではなく、選択された値のみが取得できます。
選択肢を1つしか選べないデータサブタイプ(ラジオボタン、セレクトボックス、検索セレクトボックス)にて、2つ以上の選択肢を設定した場合は、スクリプト実行時にエラーとなります。
選択肢リストにない選択肢IDを設定した場合は、エラーとならずに設定した値は無視されます。
var selects = new java.util.ArrayList();
selects.add("JP");
selects.add("US");
retVal.put("7", selects);
var text = "";
var selects = data.get("7");
for (var i=0; i < selects.size(); i++){
var select = selects.get(i);
text += select.getValue() + ":" + select.getDisplay();
text += '\n';
}
retVal.put("8", text);
retVal.put("9", java.sql.Date.valueOf("2015-03-15"));
var text = "";
var requestDate = data.get("9");
var dateFormatter = new java.text.SimpleDateFormat("GGGGyyyy年MM月dd日", new java.util.Locale("ja", "JP", "JP"));
text += dateFormatter.format(requestDate);
retVal.put("10", text);
retVal.put("11", java.sql.Timestamp.valueOf("2015-03-15 12:34:56"));
var manufactureDate = data.get("11");
retVal.put("12", manufactureDate.addMonths(2));
var repUser = quserDao.findByEmail("Ito@localhost.localdomain");
retVal.put("13", repUser);
var text = "";
var repUser = data.get("13");
var appUser = data.get("14");
text = '担当者: ' + repUser.getName() + '[' + repUser.getEmail() + ']\n';
text += '承認者: ' + appUser.getName() + '[' + appUser.getEmail() + ']';
retVal.put("15", text);
var repGroup = data.get("16");
var appGroup = qgroupDao.findParentQgroup(repGroup);
retVal.put("17", appGroup);
var productList = data.get("18");
if (productList == null) {
productList = new com.questetra.bpms.core.model.formdata.ListArray();
var row = new com.questetra.bpms.core.model.formdata.ListArray.ListRow();
row.addCol("PRODUCT-01");
row.addCol("10");
row.addCol("1200");
row.addCol("12000");
productList.addRow(row);
retVal.put("18", productList);
}
var seqNum = processInstance.getProcessInstanceSequenceNumber();
processInstance.setProcessInstanceTitle("第" + seqNum + "回 定例ミーティング開催");
var qGroup = qgroupDao.findById(processInstance.getProcessInstanceInitQgroupId());
var division = findDivision(qGroup);
retVal.put("19", division);
function findDivision(aGroup){
while (aGroup != null && aGroup.getName().endsWith('本部') == false) {
aGroup = qgroupDao.findParentQgroup(aGroup);
}
return aGroup;
}
マイタスクの一覧を取得するAPIに関する詳細は、「ワークフローAPI: マイタスクの一覧を取得する」を参照してください。
var jsonText = data.get("20");
var myTasks = JSON.parse(jsonText);
var taskList = "";
for (var i in myTasks.workitems){
taskList += '[プロセス]: ' + myTasks.workitems[i].processModelInfoName + ' [タスク]: ' + myTasks.workitems[i].nodeName;
taskList += '\n';
}
retVal.put("21", taskList);