関数とは、アプリケーション内で特定の操作を実行したり、コード内のロジックに基づいて所望の結果を出力したりするために呼び出される一連の取引明細です。Javaは広く使用されているプログラミング言語です。Javaを導入することで、Creatorアプリケーション内でJava特有の概念を実装できるようになります。
Javaを使用した新規関数の作成
新しいjava関数を作成するには、次の手順に従います。
-
ワークフローをクリックしてワークフロー ダッシュボードに移動します。

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

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

-
Function 名前を入力します。これは関数を呼び出す際の識別子となります。関数には意味のある名前を、空白なしで入力してください。

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

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

- 関数はワークフロー ダッシュボード内のFunctionsに一覧表示されます。
メモ :
- Namespace : java関数のNamespaceは初期設定 Namespace となります。
- 返品する 種類 : java関数が返品する値はコレクション データの種類 のみです。
- Argument : Java関数はstring 値のみ承認します。
- Java関数は作成後に名前を変更することはできません。
java関数のArgumentsとパラメーター
deluge関数と同様に、javaでも関数の実行に必要な引数を指定する必要があります。引数とは、関数を実行する際にメソッドへ渡されるインスタンスです。java関数を作成する時点で引数を指定できます。同じ関数に追加の引数が必要な場合は、ビルダー内のFunction Properties (設定 アイコンをクリック)からアクセスできます。
プログラムを実行するには、java関数内でパラメーターを定義する必要があります。パラメーターとは、引数の値を代入するための変数です。これは、delugeから渡された引数の値をjava関数内で受け取るための入れ物となります。
サンプル関数
この関数は各従業員の給与をjava関数内で計算し、得られた値を使用してdelugeでデータを更新するために作成されています。
fetchRecordsは、{employe_id : working 時間 }形式でEmployee_Detailsフォーム内の各データを含むコレクションデータを作成します。データ入力後、そのデータをstring形式で'calculateSalary' java関数に渡します。
java関数はEmployee_Detailsのマップを受け取り、従業員IDごとにworking 時間に基づいて給与を計算し、それらの詳細を{'employe_id : salary }形式の別のマップpayDetailsとして返します。
java関数が返品する値をdeluge関数の'payCalc'コレクションデータに割り当てています。payCalcの値を繰り返し処理することで、給与詳細を'Weekly_Pay'項目に更新できます。
無効 fetchRecords()
{
recDetails = Map();
for each i in Employee_Details[ID != +10、-10]
{
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());
}
}
}
メモ :
- 初期設定では、functionとクラス 名前は同じであり、変更しないでください。
- 実行はrunnerメソッドから開始され、このメソッドを削除しないでください。つまり、runnerメソッドの後にmain()を追加してスクリプトロジックを書く必要はありません。
- ユーザーが新規 クラスやfunctionを作成したい場合は、runnerメソッドの後に記述し、runnerメソッドから呼び出す必要があります。
DelugeスクリプトでJava functionを呼び出すには、下記の画像で示されている支払明細を使用する必要があります。この例では、「payCalc = thisapp。calculateSalary(recDetails。toString());」がJava functionを指しており、値はコレクションデータ値として含まれています。

コレクション データの種類
Java functionは文字列値のみを返します。処理が文字列データの返却で十分な場合は、そのまま利用できます。整数など他のデータの種類が必要な場合、返却する値にコレクションデータの種類を割り当てることが可能です。これは、Java functionで取得した値を使ってデータを更新するなど、さらなる処理に活用できます。たとえば、Java functionで計算された支払いは文字列値で返却されます。Delugeで割り当てたコレクションデータ値を使用すると、これらの文字列値から整数値を取得でき、アプリケーション内のデータ更新に利用されます。
このコレクションオブジェクトを使うことで、フォーム内のすべてのデータに対してこのfunctionをループ実行できます。コレクションオブジェクトには従業員ID(キー)と時間(値)が含まれます。フォームに20件のデータがあれば、20件が1つのコレクションオブジェクトとなり、Java functionを1回の呼び出しで20件のデータに対して実行できます。
取得する 値
basicIO。getParameter支払明細を使うことで、引数として渡された値を取得できます。指定した引数の値はJava functionに渡す必要があり、Java function内で値を処理し、目的の結果を取得します。この場合、時間WorkedとSalaryが引数となります。これらの値はJava functionに渡され、getParameter支払明細を使って賃金を計算します。
Output
Java functionの出力値は、初期設定で「コレクション値」となります。この出力には2つのキーが含まれます。
- Outputキーには、出力データの値が含まれます。
- Logキーには、ユーザーが支払明細を使って印刷するログデータが含まれます。
outputキーには以下が含まれます。
- context。log: 支払明細を利用してログを印刷します。Java関数のoutput map内の 'log' キーに追加された値を取得できます。context。logの情報はデバッグ目的で利用されます。
- basicIO。write: 支払明細を利用してDeluge送信先へ返却する値を、Creator上でこの関数が呼び出された場所に計算後に渡します。Java関数のoutput map内の 'output' キーに追加された値を取得できます。
Config。jsonとライブラリ
注意事項
- Jarファイルおよびパッケージはライブラリへのアップロードのみ可能です。
- すべてのファイルを合わせたアップロード制限は10MBです。
- リクエストおよびレスポンスデータの内容は、それぞれ最大1MBまでです。
- エディター内のファイルサイズは最大1MBまでとなります。
- Java関数への引数は最大20個まで渡すことができます。
- 1つのdelugeスクリプト内で関数を5回まで呼び出すことができます。
- 関数呼び出し開始から40秒以内にレスポンスを受領する必要があります。それを超えると実行は失敗します。
-
組み込みjarは以下の通りです:
- commons-io-2。4。jar
- json。jar(org。json)
- 現在、この機能はDSファイルではサポートされていません。クラウド関数はインポート/エクスポート/バックアップ/複製の処理中に取得されません。代わりに、同名の空のdeluge関数に置き換えられ、エラーを回避します。
- system.出力.println はcreatorクラウド関数内では動作しません