30日間の無料評価版をお試しいただけます。


PanelCollection APIは、いくつかのヘルパーオブジェクトを使用します。これは、オプションの受け渡し、検証、または依存関係設定に使用することができます。詳細を以下に示します。

  • GeneralPanelOptions:一般的なユーザーインターフェイス表示を定義します。
  • CssRule:スタイリングルールを定義します。
  • ListOptions:一覧として表示されるパラメーターを定義します。
  • ParameterValidation:基礎的なユーザーインターフェイスの検証を網羅します。
  • ParameterDisplayRule:ユーザーインプットに基づき、パラメーターを表示するかどうかを判断します。
  • ParameterValueLoader:イベントに基づき値を動的に読み込むために使用するclassです。
  • DynamicParameterOptions:ParameterValueLoaderの応答オブジェクトです。
  • FieldObject:フィールドを表すclassです。



GeneralPanel Options


GeneralPanelOptions classは、パラメーターパネルとセクションレベルで、一般的なユーザーインターフェイスの表示オプション定義するために使用します。重要なメソッドを以下に示します。


メソッド説明

public void setSaveButton(boolean saveButton)

public void setSaveButtonOptions(Map<String, Object> opts)

public void setSaveText(String saveText)

setSaveButtonオプションをtrueに設定することで、パネルやセクションに保存ボタンを表示します。表示オプションは、setSaveButtonOptionsを使用して設定することもできます。利用可能なオプションの一覧は、インプットタイプ項目のtype BUTTON配下に示されています。ボタン上のテキストは、setSaveTextを使用してカスタマイズすることができます。

public void setExpandable(boolean expandable)

public void setExpanded(boolean expandable)

これらは、セクションを展開可能にし、展開表示をするために使用します。


public void setShowName(boolean showTitle)こちらをtrueに設定した場合、パネルやセクションの名前は、コンテナのトップに表示されます。
public void setCssRules(Set<CssRule> cssRules)こちらのメソッドは、セクションやパネル、そのhtmlコンテナ内のすべてをスタイリングするカスタムCSSルールを設定するために使用します。



CSSRule


こちらのインターフェイスは、PanelCollection APIの様々なレベルのスタイリングルールを定義するために使用します。これをサポートするレベルは、CssRuleオブジェクトのセットを受け付けます。Yellowfinには、CssRulelmplという実装があり、以下のような単一のCSSルールを定義します。



div.styleExampleCell {
    border: none;
    color: #666666;
}


インスタンスはひとつのセレクターと、ひとつ以上のCSS宣言を持ちます。セレクターが定義されていない場合、Yellowfinは自動的にこれを生成します。

CssDeclarationインターフィスは、以下のような、単一の宣言を記述します。


border: none;


Yellowfinには、CssDeclarationlmplという実装があり、プロパティと値を受け付けます。


Parameter inputField = new ParameterImpl();
inputField.setName("Example Param");
inputField.setProperty("PARAM_PROPERTY");
inputField.setInputType(InputType.TEXTBOX);
  
CssRule cssRule = new CssRuleImpl("input", false);
cssRule.addDeclaration(new CssDeclarationImpl("height", "21px"));
cssRule.addDeclaration(new CssDeclarationImpl("padding", "5px"));
cssRule.addDeclaration(new CssDeclarationImpl("font-size", "16px"));
cssRule.addDeclaration(new CssDeclarationImpl("resize", "none"));
cssRule.addDeclaration(new CssDeclarationImpl("color", "#666666"));
cssRule.addDeclaration(new CssDeclarationImpl("border", "1px solid #e4e4e4"));
Set<CssRule> cssRules = new HashSet<>();
cssRules.add(cssRule);
inputField.setCssRules(cssRules);


これにより、以下のCSSルールが作成されます。


input {
    height: 21px;
    padding: 5px;
    font-size: 16px;
    resize: none;
    color: #666666;
    border: 1px solid #e4e4e4;
}




ListOptions


こちらのclassは、パラメーターが一覧として表示される場合のユーザーインターフェイスオプションを定義するために使用します。例えば、TEXTBOXパラメーターは、いくつかのテキスト値を受け付けることができ、テキストボックスの一覧を表示します。



利用可能なすべてのオプションは、javadocを参照してください。




ParameterValidation


こちらのclassは、基礎的なユーザーインターフェイス検証ルールを定義するために使用します。最も便利なルールは、パラメーター値が空であるかどうかを確認するものです。その他のルールは、数値パラメーターに対して関係演算を実行します。



利用可能なすべてのオプションは、javadocを参照してください。




ParameterDisplayRule


ユーザーインプットに基づき、パラメーターの表示/非表示を判断する場合があります。これは、パラメーターがリッスンする必要のあるパラメーターを定義し、値を指定して表示/非表示にする、ParameterDisplayRuleのインスタンスを使用して実行することができます。以下の例を参照してください。



例1

以下は、SOURCEに0、またはnull以外の値が設定されている場合に、TABLE_NAMEを表示します。

Parameter p = new ParameterImpl();
p.setName("Table Name");
p.setProperty("TABLE_NAME");
p.InputType(InputType.SELECT);
p.addDisplayRule(new ParameterDisplayRule("AND", "SOURCE", new Object[] { null, 0 }, true, null));


この表示ルールは基本的に、以下のコード行を作成します。


if(SOURCE != null && SOURCE != 0) showParameter();



例2

SOURCEがnull、または0の時に、TABLE_NAMEを表示するためには、負のbooleanをfalseに変更しなくてはいけません。


p.addDisplayRule(new ParameterDisplayRule("AND", "SOURCE", new Object[] { null, 0 }, false, null));


これは、以下のようなものを作成します。


if(SOURCE == null || SOURCE == 0) showParameter();


これらの表示ルールは、すべてのレベルのパネルコレクションに適用することが可能で、パネルやセクション全体を非表示にすることもできます。



コンストラクター

このclassは、便宜のためにオーバーロードされたコンストラクターを、各プロパティにセッターを提供します。最も記述的なコンスタクラーは、以下の通りです。


public ParameterDisplayRule(String logic, String property, Object[] vals, boolean negative, PropertyLocation location)


以下は、その属性の説明です。

  • logicは、このインスタンスのParameterDisplayRule内に複数の「子」表示ルールがある場合に、演算子を指定するために使用します。LogicはAND、またはORになります。3つの子ルールがあり、logicがANDの場合、各ルールは個別に検証され、結果は以下のように結合されます。
    Rule1Result && Rule2Result && Rule3Result
    「子」表示ルールが無い場合、Logicは無視されます。子ルールがある場合、「親」ルールは検証されません。これは、子ルールのコンテナとしてのみ使用されます。
  • propertyは、この表示ルールに検証される「その他」のパラメーターを指定します。各パラメーターインスタンスは、その値の識別子を持ちます。例えば、ユーザーがテキストインプットパラメーターに入力したすべては、それがプロパティとして指定されている場合、識別子「SOURCE」を使用して参照されます。
  • valsは、比較の値の配列です。配列内の各値は、対等性のために「その他」のパラメーターとf比較されます。これらはその後、演算子ORを使用して結合されます。
  • negativeは、valsを「その他」のパラメーターと比較した後に得られる結果を反転します。
    If vals = {null, 0}

    negative結果
    trueproperty != null && property != 0
    falseproperty == null || property == 0
  • locationは、PropertyLocationのインスタンスであり、「その他」のパラメーターの配置場所を判断するために使用します。これは、複数のセクション/パネル内に同一のプロパティとともにパラメーターが存在する場合に有効です。これがnullの場合、プロパティは、このParamterDIsplayRuleの親と同一の場所に配置されていると判断されます。




ParameterValueLoader


ParameterValueLoaderは、抽象classであり、イベントに基づき動的に値を読み込むために実装することができます。値ローダーは、セクションへ接続されます。パラメーターは、値ローダーを使用するように設定しなくてはいけません。以下に、いくつかの重要点を示します。


  • パラメーターの「プロパティ」は、変更された値とイベントデータを参照するために使用するため重要です。例:
    p.setProperty("view");


  • パラメーター変更時には、イベント名を指定しなくてはいけません。値ローダーは、これを元に何をするかを決定することができます。例:
    p.setEvent("viewChanged");


  • イベントデータは、パラメーターに接続されることもあります。これは、利用可能なすべてのフィールドや、他のステップオプションの値など、ステップに関する任意の情報になります。
    p.addEventData("fieldsMap", allFieldsMap);
    p.addEventData("sourceId", getStepOption("SOURCE_ID"));


  • 値ローダーのイベントへの応答はgetUpdatedPossibleValues()、またはgenerateDynamicParameterメソッドを使用して返すことができます。これらは、以下に示すメンバー変数を使用して、イベントへの応答方法を決定することができます。Yellowfinはこれらのメソッドを、以下の手順で実行します。
    pvl.getDynamicParameterOptions.setValues(pvl.getUpdatedPossibleValues());
    pvl.generateDynamicParameters();

    注意:このgenerateDynamicParameters()は何も返しません。メソッドの実装は、「応答」メンバーの設定を想定しています。


  • 依存関係は、値依存、またはイベントを使用して設定することができます。これら両方のオプションの詳細は、以下で紹介します。



ValueDependencies

パラメーター作成時に、パラメーターが依存する「ValueDependencies」の一覧を作成することができます。これらは、パネルコレクション内の他の場所に存在するパラメーターを指している必要があります。こちらを設定すると、値の依存関係で参照されるパラメーターのひとつが変更されると、必要なすべての情報を含むリクエストがサーバへ送信されることになります。

ビューのパラメーターがあり、データソースのパラメーターに依存させることで、データソースが変更される度にビューの一覧が再読み込みされるようにします。

datasourceParam.setProperty("datasource");
datasourceParam.setEvent("datasourceChanged");
 
viewParam.setProperty("view");
// Make view dependent on the data source
viewParam.addValueDependency("datasource");


データソースパラメーターのセクションの値ローダーは、dataSourceChangedイベントを受け取る度に、選択されたデータソースに利用可能なビューを配置することができます。応答オブジェクトはフロントエンドに送信され、Yellowfinは利用可能なビューの一覧を配置します。




イベント

イベント関数は値の依存関係に類似しており、今回の場合を除き、変更するパラメーターは、どのパラメーターを再読み込みするかを判断します。実際のところ、今回の場合、依存関係の方向性が反転しています。値の依存関係は、パラメーター内の変更をリッスンする「その他」のパラメーターである一方で、イベントは、「その他」のパラメーターを変更するためにそのパラメーターに使用されます。これは、ボタンクリックが要求される場合に、ボタンに接続することもできます。

イベントトリガーの作成には、以下の3つの部分があります。

  1. イベント名:これは、パラメーターのsetEvent()メソッドを使用して設定されます。ParameterValueLoaderは、トリガーされたすべてのイベントを含む保護されたメンバーを持ちます。
  2. イベントデータ:これは、パネルが生成される時に、開発者が設定することのできるすべての追加データを参照します。例えばこれは、ステップIDやフィールドの一覧の追加を含めることができます。
  3. イベントパラメーター:イベントパラメーターは、イベントがデータを必要とするその他のパラメーターです。地域、国、州のパラメーターがあることを考慮し、州パラメーターを変更します。値ローダーに地域と国の情報も必要な場合、これらはイベントパラメーターになります。パラメーターAPIにはイベントパラメーターを設定する数多くのメソッドがありますが、これらはすべてValueDependentオブジェクトの一覧に追加されます。


イベントデータと、イベントパラメーター内で指定されたパラメーターの現在の値は、単一のEventDataオブジェクトに結合されます。


cityParam.setProperty("city");
cityParam.setEvent("cityChanged");
cityParam.addEventData("fieldUUIDS", fieldUuids);
 
p.addEventParameter("country", new PropertyLocation("MyPanel", "addressSection"));
p.addEventParameter("region", new PropertyLocation("MyPanel", "addressSection"));




メンバー変数

値ローダーclassは、イベントに関する情報を保持する数多くの重要メンバー変数を持ちます。


メンバー変数説明
protected Map<String, Object> changedValuesメンバーchangedValuesは、パラメーターと変更された値を持ちます。マップ内のキーは、トリガーされた変更イベントであるパラメーターの「プロパティ」属性である必要があります。
protected Map<String, Object> eventData

こちらのメンバーは、他のパラメーターの変更イベントをリッスンするパラメーターの「プロパティ」属性によりキーに設定されます。値は、開発者が変更イベントを受け取ったときに返信する必要があるデータです。

ビューがデータソースに依存する、データソースとビューのパラメーターを作成したとしましょう。データソースの値を1に変更した場合、changedValuesは以下のようになります。


{
    "datasource": 1
}

そして、今回の例に基づき、eventDataは以下のようになります。

{
    "view": objects set by the developer
}
protected List<String> events

これは、値ローダーから受け取られたすべてのイベントを保持します。

if(events.contains("cityChanged")) {
    // do stuff
}
protected DynamicParameterOptions response動的パラメーターオプションは、ParameterValueLoaderの応答オブジェクトです。これは、開発者がフロントエンドに表示したいすべてが含まれていなくてはいけません。DynamicParameterOptionsの詳細は、以下で紹介します。



メソッド

実装可能なメソッドは、以下の2つです。しかし、開発者の要望に応じて、実装に必要になるのは、以下のいずれか一方のみです。両者は、ほぼ同様の目的を果たします。

メソッド説明
public void generateDynamicParameters()

こちらのメソッドは、応答メンバー変数に値を設定します。より詳細な情報は、DynamicParameterOptionsの項目を参照してください。

こちらが推奨されるメソッドであり、より柔軟性があります。

public Map<String, List<CustomValue<?>>> getUpdatedPossibleValues()

影響するすべてのパラメーターの「可能な値」のマップを返すメソッドです。マップ内の各入力では、キーはパラメーターの「プロパティ」属性である必要があります。値は、「可能な」値を含む、CustomValueオブジェクトの一覧でなくてはいけません。

こちらのメソッドは、将来的に廃止される可能性があります。


ファイルや大きなテキストを読み取るための、その他のヘルパーメソッドを以下に示します。

ヘルパーメソッド説明
public final byte[] getFile(Integer fileId)こちらのメソッドは、FileUploadParameterにより記述されたファイルの読み取りに使用することができます。イベントは、パラメーター内に設定する必要があります。FileUploaderParameterのコンストラクターを使用して設定することも可能です。ファイルがアップロードされ、Yellowfinのリポジトリデータベースに保存された後、このイベントで値ローダーがトリガーされます。これは、ファイル内のデータに基づくパラメーターを読み込み/削除をするために使用することができます。
public final String getText(Integer textId)これは、Yellowfinリポジトリデータベースに保存されているCLOBsを読み取る以外、getFileと類似しています。




DynamicParameterOptions


動的パラメーターオプションは、ParameterValueLoaderの応答オブジェクトです。これは、開発者がフロントエンドに表示したいすべてが含まれていなくてはいけません。これには、6つの項目を追加することができます。


動的パラメーターオプション説明
public void addPanel(String dynamicKey, ParameterPanel panelObject)

トリガーされたイベントのひとつが、メニューに新しいパネルの追加を要求する場合は、こちらに追加することができます。フロントエンドは、パネル定義をユーザーインターフェイスに変換します。

dynamickeyは、現在そのキーを使用している任意のオブジェクトを削除するために使用されるとともに、このパネルをキーとタグ付けすることで、将来的に削除することができます。

public void addSection(String dKey, String panelKey, ParameterSection sec)

クライアントサイドパネルコレクションの一部として既に存在するパネルにセクションを追加することができます。dKeyは動的キーであり、現在そのキーを使用している任意のオブジェクトを削除するために使用されるとともに、このセクションをキーとタグ付けすることで、将来的に削除することができます。panelKeyは、こちらのセクションに追加されるキーでなくてはいけません。

public void addParameter(String dKey, String panelKey, String secKey, Parameter parameter)

既存のセクション/パネルの組み合わせにパラメーターを追加することができます。dKeyは動的キーであり、現在そのキーを使用している任意のオブジェクトを削除するために使用されるとともに、このパラメーターをキーとタグ付けすることで、将来的に削除することができます。panelKeyとsecKeyは、こちらのパラメーターに追加するパネルとセクションのキーでなくてはいけません。

public void addValue(String property, CustomValue<?> value)

ユーザーが選択することのできる単一のオプションを、DynamicParameterOptionsに追加します。プロパティは、値を表示するパラメーターに対応します。

public void setValues(Map<String, List<CustomValue<?>>)

DynamicParameterOptionsに現在設定されている値を上書きます。

public void addKeyToRemove(String key)

クライアントサイドパネルコレクションから削除するために、パラメーター/セクション/パネルのキーを追加します。対応するメソッドを使用して追加された任意のパラメーター、セクション、パネルは、削除されるキーも追加します。




FiledObject


フィールドを表すclassです。このclassのインスタンスは、フィールドのマッチングのために、ユーザーインターフェイスウィジェットで使用されます。



public FieldObject(String id, String keyType, String name, FieldObjectDataType dataType)


  • idは、フィールドを一意に識別するために使用します。
  • keyTypeを「プライマリー」に設定することで、これをプライマリーキーフィールドと認識することができます。
  • nameは、フィールドの表示名です。
  • dataTypeは、列挙型FeildObjectDataTypeで定義されているフィールドの型です。オーバーロードされたコンストラクターは、Stringデータ型を受け付けますが、これは列挙型要素と一致する必要があります。