「Java関数の作成と管理」

「Java関数の作成と管理」

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

関数とは、コード内のロジックに基づいて、アプリケーション内で実行される一連のステートメントです。Javaは広く使用されているプログラミング言語です。Javaの導入により、CreatorアプリケーションでJavaプログラミングに固有の概念を実装することができます。

Java を使用して新しい機能を作成する

新しいJava関数を作成するには:

  1. 「ワークフロー」をクリックして、ワークフローダッシュボードにアクセスしてください。

  2. 「機能」タブをクリックしてください。

  3. 「新しい機能」ボタンをクリックしてください。作成ページが表示されます。

  4. 「関数名」を入力してください。これは関数を呼び出すための識別子として使用されます。関数に有意義な名前を空白なしで指定してください。

  5. Java」をスクリプト関数の言語として選択してください。

  6. 引数を指定します。
  7. 「作成関数」ボタンをクリックしてください。ビルダーが表示されます。
  8. 今、関数に必要なJavaコードを追加し、完了をクリックします。

  9. この機能は、ワークフローダッシュボードの機能の下にリストされます。

 

:

  • 名前空間 : Java関数の名前空間は デフォルト名前空間 です。
  • 戻り値 : Java関数の戻り値は コレクションデータ型 のみとなります。
  • 引数 : Java関数は 文字列 型の値のみを受け付けます。
  • Java関数は作成後に名前を変更することはできません。

Java関数における引数とパラメータ

おなじようにデリュージ機能にも、Javaでは関数が実行されるのに応じて引数を指定する必要があります。引数は、関数を実行する際に渡されるインスタンスです。Java関数を作成する際には、引数を指定できます。後に同じ関数にさらに引数を追加する必要が生じた場合は、ビルダー内の「Function Properties」(「Settings」アイコンをクリック)にアクセスできます。
プログラムを実行するには、Java関数内でパラメータを定義する必要があります。パラメータは、引数の値に割り当てられる変数です。それは、Delugeから渡された引数値をJava関数内で受け取るためのコンテナとして機能します。

サンプル機能

この関数は、Java関数を使用して従業員ごとの給与を計算し、Delugeを使用してレコードを更新するために作成されました。

fetchRecordsは、{employe_id:勤務時間}の形式でEmployee_Detailsフォームの各レコードを含むコレクションデータを作成します。 データを埋めた後、文字列形式で 'calculateSalary' java関数に渡します。

Java関数はEmployee_Detailsマップを受け取り、各従業員IDの勤務時間に基づいて給与を計算し、{'employe_id : salary }形式のpayDetailsとしてその詳細を別のマップとして渡します。

Java関数の戻り値をdeluge関数内の「payCalc」コレクションデータに割り当てました。payCalcの値を繰り返し処理することで、「Weekly_Pay」フィールドに給与詳細を更新することができます。

void fetchRecords()
{
recDetails = Map();
for each i in Employee_Details[ID != 0]
{
recDetails.put(i.Emp_ID,i.Weekly_Hours);
}
payCalc = Collection();
payCalc = thisapp.calculateSalary(recDetails.toString());
updateDetails = payCalc.get('output').toMap();
keys = List();
keys = updateDetails.keys();
for each i in keys
{
info i;
x = Employee_Details[Emp_ID == i];
x.Weekly_Pay=updateDetails.get(i);
}
}
void fetchRecords()
{
recDetails = Map();
for each i in Employee_Details[ID != 0]
{
recDetails.put(i.Emp_ID,i.Weekly_Hours);
}
payCalc = Collection();
payCalc = thisapp.calculateSalary(recDetails.toString());
updateDetails = payCalc.get('output').toMap();
keys = List();
keys = updateDetails.keys();
for each i in keys
{
info i;
x = Employee_Details[Emp_ID == i];
x.Weekly_Pay=updateDetails.get(i);
}
}
void fetchRecords()
{
recDetails = Map();
for each i in Employee_Details[ID != 0]
{
recDetails.put(i.Emp_ID,i.Weekly_Hours);
}
payCalc = Collection();
payCalc = thisapp.calculateSalary(recDetails.toString());
updateDetails = payCalc.get('output').toMap();
keys = List();
keys = updateDetails.keys();
for each i in keys
{
info i;
x = Employee_Details[Emp_ID == i];
x.Weekly_Pay=updateDetails.get(i);
}
}
void fetchRecords()
{
recDetails = Map();
for each i in Employee_Details[ID != 0]
{
recDetails.put(i.Emp_ID,i.Weekly_Hours);
}
payCalc = Collection();
payCalc = thisapp.calculateSalary(recDetails.toString());
updateDetails = payCalc.get('output').toMap();
keys = List();
keys = updateDetails.keys();
for each i in keys
{
info i;
x = Employee_Details[Emp_ID == i];
x.Weekly_Pay=updateDetails.get(i);
}
}
 

import com.zoho.cloud.function.Context;
import com.zoho.cloud.function.basic.*;
import org.json.*;
import org.json.JSONObject;
import com.zohocreator.test.EmployeeSalary;

public class calculateSalary implements ZCFunction
{
   public void runner(Context context, BasicIO basicIO) throws Exception
   {
      try
      {
         String dataMap = (String)(basicIO.getParameter('recDetails')); // Retrieve arguments

         JSONObject dataObject = new JSONObject(dataMap); // Converting string arguments to JSONObject

         EmployeeSalary salary = new EmployeeSalary(); // creating object for 'EmployeeSalary' class
         JSONObject payDetails = salary.calculate(dataObject); //calling calculate method in 'EmployeeSalary' class

         basicIO.write(payDetails.toString()); // Return data back to deluge script
      }
      catch(Exception e)
      {
        context.log(e.getMessage());
      }

      }
}

注意 :

  • デフォルトでは、関数とクラス名は同じであり、変更してはいけません。
  • 実行はrunnerメソッドから開始され、削除してはいけません。
  • ユーザーが新しいクラスや関数を書きたい場合は、runnerメソッドの後に書き、runnerメソッドから呼び出す必要があります。
Java関数を呼び出す

デリージスクリプト内でJava関数を呼び出すには、下の画像で示されている文を使用します。 この例では、「payCalc = thisapp.calculateSalary(recDetails.toString);」は、コレクションデータ値を含むJava関数を参照しています。

コレクションデータ型

Java関数は文字列の値のみを返します。プロセスが文字列データで満足している場合は、それを使用して進めることができます。整数などの他のデータ型が必要な場合は、返り値にコレクションデータ型を割り当てることができます。これは、Java関数を使用して導出された値でレコードを更新するためなど、さらなる処理に使用することができます。例えば、Java関数で計算された給与は文字列の値を返します。割り当てられたコレクションデータ値をDelugeで使用すると、これらの文字列値は整数値に変換され、アプリケーション内のレコードを更新するために使用されます。 

このコレクションオブジェクトは、この関数をフォームにあるすべてのレコードに対してループを実行するのに使用できます。コレクションオブジェクトには、従業員ID(キー)と時間(値)が含まれます。フォームに20レコードがある場合、20つが1つのコレクションオブジェクトになり、20レコードのJava関数を1つの関数呼び出しで実行できます。

値を取得する

basicIO.getParameter文を使用することで、引数として格納されている値を取得することができます。引数として指定された値は、値を処理して望む結果を得るためのJava関数に渡す必要があります。この場合、Hours WorkedとSalaryが引数です。getParameter文を使用して賃金を計算するために、Java関数に値が渡されます。 

出力

デフォルトでは、Java関数の出力値は「Collection Value」となります。この出力には2つのキーがあります:

  • 出力キーには、出力データの値があります。
  • ログキーには、ステートメントを使用してユーザーがプリントするログデータがあります。

出力キーには以下が含まれます:

  • context.log:ログを出力するために使用されるステートメントです。Java関数の出力マップの「log」キーに追加された値を取得できます。context.logの情報はデバッグのために使用されます。
  • basicIO.write:計算の結果をCreatorからこの関数が呼び出された場所に送信するために使用されるステートメントです。Java関数の出力マップの「output」キーに追加された値を取得できます。​
config.jsonとライブラリ
  • config.jsonは設定ファイルです。
  • libはJarファイルやパッケージをアップロードできるライブラリです。フォルダを右クリックしてファイルをアップロードします。​

  • 上の図で、ポイント1 - アップロードされたJARファイルです(JARファイルをダウンロードするにはこちらをクリックしてください)。
  • ポイント2 - JARファイル内のクラスをJavaコードにインポートします。
  • ポイント3 - オブジェクトが作成され、calculateメソッドがここで呼び出されます。
  • JARファイルは、勤務時間が45時間未満の場合には給与が300で、追加の時間あたり100となる計算を行います。

覚えておくべきこと

  • ライブラリには、Jarファイルやパッケージのみをアップロードできます。
  • 全てのファイルの合計アップロード制限は10MBです。
  • リクエストとレスポンスのペイロードのサイズは、それぞれ1MBまでとなります。
  • エディタ内のファイルサイズは1MBまでとなります。
  • Java関数への引数の最大数は20個までとなります。
  • 1つのDelugeスクリプト内で関数を5回まで呼び出すことができます。
  • 関数呼び出しから40秒以内にレスポンスを受け取る必要があります。それ以上の場合、実行が失敗します。
  • 次のJARが組み込みで提供されています:
    1. commons-io-2.4.jar
    2. json.jar (org.json)
  • 現在、DSファイルではこの機能をサポートしていません。インポート/エクスポート/バックアップ/複製操作中にはクラウド関数はキャプチャされません。代わりに、同じ名前の空のDeluge関数を使用して、エラーを回避するために置換されます。
  • system.out.println  文は、クリエータークラウド関数内では機能しません。


    Zoho CRM 管理者向けトレーニング

    「導入したばかりで基本操作や設定に不安がある」、「短期間で集中的に運用開始できる状態にしたい」、「運用を開始しているが再度学び直したい」 といった課題を抱えられているユーザーさまに向けた少人数制のオンライントレーニングです。

    日々の営業活動を効率的に管理し、導入効果を高めるための方法を学びましょう。

    Zoho CRM Training



              Zoho Desk Resources

              • Desk Community Learning Series


              • Digest


              • Functions


              • Meetups


              • Kbase


              • Resources


              • Glossary


              • Desk Marketplace


              • MVP Corner


              • Word of the Day









                                • Related Articles

                                • 理解する関数

                                  お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。 関数とは、必要なときにアプリケーション内で呼び出すことができる、Deluge または Java ステートメントの集まりのことです。関数を使用して、Deluge スクリプトをモジュール式に構造化します。関連する関数は、名前空間と呼ばれる共通のカテゴリにまとめることができます。 ...
                                • 「新しいデリュージ機能を作成する」

                                  お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。 新しいデリュージ機能を作成するには: 「ワークフロー」をクリックして、ワークフローダッシュボードにアクセスします。。 「機能」タブをクリックしてください。 「新しい機能」ボタンをクリックします。作成ページが表示されます。 ...

                                Resources

                                Videos

                                Watch comprehensive videos on features and other important topics that will help you master Zoho CRM.



                                eBooks

                                Download free eBooks and access a range of topics to get deeper insight on successfully using Zoho CRM.



                                Webinars

                                Sign up for our webinars and learn the Zoho CRM basics, from customization to sales force automation and more.



                                CRM Tips

                                Make the most of Zoho CRM with these useful tips.