Deluge - プログラミング言語

概要 

Deluge(Data Enriched Language for the Universal Grid Environment)は、Zoho独自のスクリプト言語であり、AssetExplorer Cloudにバンドルされています。これは、プログラミングの知識がない人でも、特別な訓練を受けずにコーディングできるようにする高水準言語です。従来のプログラミング言語とは異なり、Delugeでは複雑な処理を実行するために必要なコードの行数が少なくて済みます。

Delugeは、C++、Python、Java、JavaScript、Swiftといった他の一般的なプログラミング言語と同様に、データ型、条件分岐、ループ、関数、return文、コメントをサポートしています。

Delugeを使用すると、複雑なビジネスロジックを機能的なワークフローに変換し、プロセスを自動化できます。Deluge Script Editorは、ドラッグ&ドロップ式のユーザーインターフェースを提供し、Delugeの構文や関数を学習したり記憶したりすることなく、Delugeスクリプトを追加できます。

AssetExplorer Cloudでは、Delugeに組み込み関数が用意されており、各関数をゼロから記述するのに費やす時間と労力を節約できます。

AssetExplorer CloudにおけるDelugeスクリプトの使用方法     

Delugeスクリプトを使用すると、AssetExplorer Cloud内およびその他の外部アプリケーション内のデータを操作できるカスタム関数を作成できます。カスタム関数を使用すると、作成および実行可能なプログラムスクリプトを通じて、複雑な複数ステップの操作を簡素化できます。

カスタム関数は、ビジネスルール、トリガー、タイマーアクションなどの自動化処理で使用されます。カスタム関数を使用することで、複雑なワークフローを自動化したり、ビジネスプロセスをカスタマイズしたり、AssetExplorer Cloudを外部アプリケーションと統合したりできます。

Delugeの基本概念        

Delugeは、C++、Python、Java、JavaScript、Swiftといった他の一般的なプログラミング言語と同様に、データ型、条件分岐、ループ、関数、return文をサポートしています。以下のドキュメントでは、Delugeの基本原理について詳しく説明します。

データ型     

Delugeは、テキスト、数値、ブール値、マップ、コレクションといったデータ型をサポートしています。また、あらゆるデータ型に対応した組み込み関数も提供しています。Deluge Script Editorでは、変数の後にピリオドを入力することで、その変数に対して利用可能な組み込み関数を表示できます。

テキスト     

  1. myText = "Hello World!"; 

テキストデータ型の組み込み関数について学ぶには、Delugeをクリックしてください。

番号   

  1. number = -123.4; 

数値データ型の組み込み関数について学ぶには、Delugeをクリックしてください。

ブール値     

  1. result = true;
  2. result = false; 

日付/時刻     

このデータ型を使用すると、日付と時刻を変数に格納できます。このデータ型に組み込まれている関数を使用すると、日、月、時間などを追加できます。

日付をデフォルト形式から他の形式に変換するには、次の構文を使用します。

  1. date='1-Jan-1990 20:50:36';
  2. newDate = date.toTime().toString("yyyy-MM-dd'__Hello__'HH:mm:ss");  

上記の例では、newDate の値は 1990-01-01__Hello__20:50:36 になります。

指定された時間をミリ秒に変換するには、次の構文を使用します。

  1. date='1-Jan-1990 20:50:36';
  2. timeInMs = date.toTime().toLong();  

上記の例では、timeInMs の値は 631255836000 になります。

日付/時刻データ型の組み込み関数について詳しく知りたい場合は、Delugeをクリックしてください。

マップ     

Mapデータ型では、以下に示すようにキーと値のペアを格納できます。

  1. userEmail = {"john":"john@manageengine.com", "peter":"peter@manageengine.com"};
  2. userEmail.put("Andrew", "andrew@manageengine.com"); //キーと値のペアが追加されます。
  3. emailOfJohn = userEmail.get("john"); //'emailOfJohn' の値は 'john@manageengine.com' になります。 

あるいは、まず変数を宣言してから、その値を指定することもできます。

  1. userEmail = map();
  2. userEmail.put("john","john@manageengine.com");
  3. emailOfJohn = userEmail.get("john"); 

コレクション     

コレクションはデータの配列を格納します。コレクションデータ型を使用してキーと値のペアを保存することもできます。コレクションには以下の構文が使用されます。

  1. userNames = {"john", "peter"}; 

あるいは、まず変数を宣言してから、その値を指定することもできます。

  1. userNames = Collection();
  2. userNames.put("john");
  3. userNames.put("peter"); 

Collection を反復処理するには、以下に示すように「for each」を使用してください。

  1. for each <myvariable> in <collection>
  2. {
  3. サンプル  
  4.  userNames = {"john","peter"};
  5. for each name in userNames{
  6. info "Name is" + name;

デバッグ後、以下の応答が得られます。

名前はジョンです 

名前はピーターです 

コレクションの組み込み関数について学ぶには、Delugeをクリックしてください。

型変換     

Delugeには、変数をあるデータ型から別のデータ型に変換するための様々な関数が用意されています。

「dateInCalendar」という文字列から月を数値として取得する例を考えてみましょう。

  1.  dateInCalendar = '01/02/2000';
  2. monthAsString =
  3. dateInCalendar.subString(3,5);
  4. monthAsNumber =
  5. monthAsString.toNumber();
  6. info monthAsNumber; 

デバッグ後、以下の応答が得られます。

 2 

型変換の組み込み関数についてさらに詳しく知るには、Delugeをクリックしてください。

条件     

Delugeは、以下の構文で if および else if ステートメントをサポートしています。

  1.  if ( <expression> )
  2. {
  3. }
  4. else if ( <expression> )
  5. {
  6. }
  7. else
  8.  } 
  9. サンプル  
  10.  a=10;
  11. b=20;
  12. c=30;
  13. if( a→ b && a→ c){
  14. info "a is big";
  15. }
  16. else if ( b→ c && b→a ){
  17. info "b is big";
  18. }
  19. else{
  20. info "c is big";

上記のコードをデバッグすると、以下の応答が得られます。

 c is big 

API呼び出し用Deluge       

Deluge Scripting を使用すると、AssetExplorer Cloud からサードパーティ製アプリケーションへの API 呼び出しを簡単に行うことができます。

AssetExplorer CloudのREST APIを使用すると、Webクライアントで実行するすべての操作を実行できます。AssetExplorer Cloudで利用可能なAPIとその構造を理解するには、アプリケーション内のV3 APIドキュメント([管理]→ [一般]→ [API])をご参照ください。

API呼び出しは、カスタム関数に設定されているAPIキーを持つサポート担当者のアカウントを通じて実行されます。使用するサポート担当者アカウントにAPI呼び出しに必要な十分な権限があれば、他のサービスデスクインスタンスに対してAPI呼び出しを行うことができます。 

AssetExplorer Cloud内でのAPI呼び出し    

AssetExplorer Cloud内でAPI呼び出しをトリガーするには、以下の構文でカスタム関数を記述してください。

  1.  response = invokeurl
  2. [
  3. url: "http://servername:portnumber/api/v3/<....>"
  4. type: POST\GET\PUT\DELETE
  5. parameters: {"input_data":<INPUT_DATA>}
  6. ]; 

API呼び出し例  

1.アプリケーション内のアセットリストを取得します

  1. input_data = {"list_info":{"start_index":1,"row_count":10}};
  2. resp = invokeurl
  3. [
  4. url :"/app/"+"instance_name"+"/api/v3/assets"
  5. type:GET,
  6. parameters : {"input_data":input_data}
  7. ];

2.アプリケーションで最初に作成された、現在オープン状態のアセットを50件取得します

  1. resp = invokeurl
  2. [
  3. url :"/app/"+"instance_name"+"/api/v3/assets"
  4. type:GET
  5. parameters: {"input_data":{"list_info":{"row_count":"50","search_criteria":{"field":"state.name","condition":"is","value":"In Store"}}}}
  6. ];

上記のサンプルでは、AssetExplorer Cloud v3 APIのレスポンスはJSON形式であるため、「resp」変数のAPIレスポンスはJSON形式になります。その後のコード行では、「resp」変数を他の変数と同様に使用することができます。APIレスポンスは「マップ」データ型として扱う必要があります。

外部アプリケーションへのAPI呼び出し  

外部アプリケーションへのAPI呼び出しをトリガーするには、以下の構文でカスタム関数を記述してください。

  1.  resp = invokeurl[
  2. url: <URL>
  3. type: <GET|POST|PUT|DELETE|PATCH>
  4. parameters: <PARAMETERS>
  5. headers: <HEADERS>
  6. files: <FILE_NAME>
  7. ]; 

カスタム関数の詳細を入力する際は、以下のヒントを参考にしてください。

<URL>: APIのURLを入力してください。

<PARAMETERS>: APIのパラメーターを指定してください。

<HEADERS>: サードパーティ製アプリケーションの認証情報を提供してください。例えば、お使いのAPIが「authtoken」を受け付ける場合、サードパーティ製アプリケーション向けに生成されたauthtokenを指定してください。

: 別のAPIのレスポンスとして受け取ったファイルを送信するためにAPIをトリガーする場合、この欄にファイル名を指定してください。