関数とは、アプリケーション内で呼び出され、特定の処理を実行したり、コード内のロジックに基づいて所望の結果を返したりする命令の集合です。Java は広く利用されているプログラミング言語です。Creator アプリケーションに Java を導入することで、Java プログラミング固有の概念を実装できるようになります。
Java を使用して新しい関数を作成する
新しい Java 関数を作成するには:
-
「ワークフロー」をクリックして、ワークフロー ダッシュボードに移動します。

-
「Functions」タブをクリックします。

-
「新規 Function」ボタンをクリックします。作成ページが表示されます。

-
Function 名前を入力します。これは、その関数を呼び出すための識別子として使用されます。関数には、空白を含まない意味のある名前を指定してください。

-
スクリプト言語としてJavaを選択します。

- 関数のArguments(引数)を指定します。
- 「作成 Function」ボタンをクリックします。ビルダーが表示されます。
-
必要な Java コードを関数に追加し、「完了」をクリックします。

- 作成した関数は、ワークフロー ダッシュボードのFunctionsの一覧に表示されます。
メモ:
- Namespace:Java 関数の Namespace は初期設定 Namespaceになります。
- 戻り値の型:Java 関数の戻り値は、コレクションデータ型のみです。
- Argument:Java 関数で受け取れるのはstring 型の値のみです。
- Java 関数は作成後に名前を変更することはできません。
Java 関数の引数とパラメーター
Deluge 関数と同様に、Java でも関数の実行条件となる引数を指定する必要があります。引数とは、関数を実行する際にメソッドへ渡されるインスタンスです。Java 関数を作成するタイミングで、引数を 1 つ指定できます。同じ関数にあとから別の引数を追加する必要がある場合は、ビルダー内のFunction のProperties(プロパティ)にアクセスします(設定アイコンをクリック)。
プログラムを実行するには、Java 関数内でパラメーターを定義する必要があります。パラメーターとは、引数の値を代入するための変数です。Deluge から渡された引数の値は、このパラメーター(コンテナ)に格納され、Java 関数内で受け取られます。
サンプル関数
この関数は、Java 関数内で各従業員の給与を計算し、その結果を Deluge を使用してデータを更新するために利用するように作成されています。
fetchRecords は、Employee_Details フォーム内の各レコードを {employe_id : working 時間} という形式で保持するコレクションデータを作成します。データを格納したあと、そのデータを文字列形式に変換して、Java 関数「calculateSalary」に渡します。
Java 関数は Employee_Details のマップを受け取り、各従業員 ID ごとに勤務時間に基づいて給与を計算し、その詳細を {'employe_id : salary} という形式の別のマップ payDetails として返します。
Java 関数の戻り値は、Deluge 関数内のコレクションデータ「payCalc」に代入しています。payCalc の値をループ処理することで、「Weekly_Pay」項目を給与の詳細で更新できます。
無効 fetchRecords()
{
recDetails = Map();
for each i in Employee_Details[ID != 0]
{
recDetails。put(i。Emp_ID,i。Weekly_Hours);
}
payCalc = コレクション();
payCalc = thisapp。calculateSalary(recDetails。toString());
updateDetails = payCalc。取得する('output').toMap();
keys = List();
keys = updateDetails。keys();
for each i in keys
{
info i;
x = Employee_Details[Emp_ID == i];
x。Weekly_Pay=updateDetails。取得する(i);
}
}
インポートする com。Zoho。cloud。function。Context;
インポートする com。Zoho。cloud。function。基本.*;
インポートする org。json.*;
インポートする org。json。JSONObject;
インポートする com。zohocreator。テスト。EmployeeSalary;
公開する クラス calculateSalary implements ZCFunction
{
公開する 無効 runner(Context context, BasicIO basicIO) throws Exception
{
try
{
String dataMap = (String)(basicIO。getParameter('recDetails')); // 引数を取得
JSONObject dataObject = 新規 JSONObject(dataMap); // 文字列の引数を JSONObject に変換
EmployeeSalary salary = 新規 EmployeeSalary(); // 'EmployeeSalary' クラスのオブジェクトを作成
JSONObject payDetails = salary。計算する(dataObject); // 'EmployeeSalary' クラスの 計算する メソッドを呼び出し
basicIO。write(payDetails。toString()); // データを Deluge スクリプトに返す
}
catch(Exception e)
{
context。log(e。getMessage());
}
}
}
メモ :
- デフォルトでは、関数名とクラス名は同じであり、変更しないでください。
- 実行は runner メソッドから開始され、このメソッドは削除しないでください。つまり、スクリプトロジックを記述するために、runner メソッドの後に main() を追加する必要はありません。
- ユーザーが新しいクラスや関数を作成する場合は、runner メソッドの後に記述し、runner メソッドから呼び出す必要があります。
Deluge スクリプトから Java 関数を呼び出すには、以下の画像で示す構文を使用する必要があります。この例では、「payCalc = thisapp。calculateSalary(recDetails。toString());」が Java 関数を参照しており、その中にコレクションデータ値として値が含まれています。

コレクション データ型
Java 関数は文字列値のみを返します。処理で返された文字列データだけで問題ない場合は、そのまま進めることができます。整数など別のデータ型が必要な場合は、返却値にコレクション データ型を割り当てることができます。これは、Java 関数で算出した値を使用してデータを更新するなど、後続の処理に利用できます。たとえば、Java 関数で計算された給与は文字列値として返されます。割り当てたコレクションデータ値を Deluge で使用すると、これらの文字列値は整数値となり、アプリケーション内のデータ更新に使用されます。
このコレクションオブジェクトを使用すると、フォーム内のすべてのデータに対してこの関数を実行するループを作成できます。コレクションオブジェクトには、従業員 ID(キー)と勤務時間(値)が含まれます。フォームに 20 件のデータがある場合、それら 20 件が 1 つのコレクションオブジェクトとなり、1 回の関数呼び出しで 20 件分のデータに対して Java 関数を実行できます。
値を取得する
basicIO。getParameter 構文を使用すると、引数として渡された値を取得できます。引数として指定した値は、Java 関数内で処理できるように渡す必要があります。この例では、勤務時間と給与が引数です。これらの値は Java 関数に渡され、getParameter 構文を使用して賃金を計算します。
出力
Java 関数の出力値は、デフォルトで「コレクション値」となります。この出力には次の 2 つのキーが含まれます。
- output キー: 出力データが値として格納されます。
- log キー: ユーザーが構文を使用して出力するログデータが格納されます。
output キーには、次の内容が含まれます。
- context。log: ログを出力するための構文です。Java 関数の出力マップの「log」キー内に追加された値を取得できます。context。log 内の情報はデバッグ目的で使用されます。
- basicIO。write: 計算後の返却値を、この関数が呼び出された Creator 内の位置へ Deluge に送信するための構文です。Java 関数の出力マップの「output」キー内に追加された値を取得できます。
Config。json とライブラリ
注意事項
- Jar ファイルとパッケージは、ライブラリにのみアップロードできます。
- アップロードできるファイルの合計サイズ上限は 10 MB です。
- リクエストデータとレスポンスデータのサイズは、それぞれ最大 1 MB までです。
- エディター内のファイルサイズは最大 1 MB までです。
- Java 関数には最大 20 個の引数を渡すことができます。
- 1 つの Deluge スクリプト内で、関数は最大 5 回まで呼び出すことができます。
- 関数呼び出しの開始から 40 秒以内にレスポンスを受信する必要があります。これを超えると実行は失敗します。
-
組み込みの JAR は次のとおりです:
- commons-io-2。4。jar
- json。jar (org。json)
- 現在、この機能は DS ファイルではサポートされていません。クラウド関数は、インポート/エクスポート/バックアップ/複製処理の際に取得されません。代わりに、エラーを回避するため、同じ名前の空の Deluge 関数に置き換えられます。
- system。out。println 構文は Creator のクラウド関数では動作しません。