コンポーネント/マッパー関数定義ファイル書式ガイド

  1. 定義ファイルについて
  2. 定義ファイルの置き場所
    1. サーバー
    2. フローデザイナー
    3. 定義ファイルの分割形式
  3. コンポーネント定義ファイル - ComponentDefine.xconf
    1. 名前空間と文書要素
    2. リファレンス
      1. ComponentDefine
      2. Component
      3. Class
      4. Message
      5. Param
      6. Resource
      7. Property
      8. AdditionalProp
      9. Category
      10. Listener
      11. PropertyListener
      12. Input
        1. SubConnector
      13. Output
        1. SubConnector
      14. FieldDef
        1. ストリームフォーマットがParameterList, Record, CSV, FixedLengthの場合
        2. ストリームフォーマットがXMLの場合
      15. Variables
  4. マッパー関数定義ファイル - FunctionDefine.xconf
    1. 名前空間と文書要素
    2. リファレンス
      1. FunctionDefine
      2. Function
      3. Class
      4. Message
      5. Param
      6. Resource
      7. Property
      8. Listener
      9. PropertyListener
      10. Output
  5. プロパティ
    1. 共通の定義
    2. プロパティ型
      1. string
      2. int
      3. double
      4. decimal
      5. boolean
      6. choice
      7. editableChoice
      8. datetime
      9. date
      10. time
      11. color
      12. remoteFile
      13. pathResolver
      14. group
      15. subflow
      16. exception
      17. connection
      18. holiday
      19. password
      20. loopProcess
      21. streamPassThrough
      22. xml
      23. xpath
      24. pluginCall
      25. variant
      26. componentName
      27. propertyName
      28. inputField
      29. subFunction
  6. Listener
    1. プロパティの編集
    2. remoteFileプロパティの編集
    3. SubFlowController
    4. 条件式制御
    5. 外部ファイルをプロパティ検索
    6. コンポーネントの置き換え
    7. マッパー関数の置き換え
    8. アイコン変更
    9. 外部アプリケーション起動
    10. テンプレートから選択
  7. PropertyListener
    1. プロパティ値による状態変更
    2. プロパティ値とDescriptionの同期
    3. コンポーネント入出力数の動的制御
    4. マッパー関数出力数の動的制御

1 定義ファイルについて

フローサービスおよびフローデザイナーは起動時にコンポーネントとマッパー関数の定義ファイルを読み込みそれぞれの一覧を作成します。
ここではその定義ファイルの書式について説明します。

2 定義ファイルの置き場所

2.1 サーバー

「DATA_DIR/system/lib/components」というフォルダーがコンポーネント/マッパー関数の実体クラスを含むjarファイルの置き場所となっています。
このjarファイルの中にロケール毎の定義ファイルを配置します。
標準コンポーネント/マッパー関数には英語、日本語、中国語の3つのロケールの定義ファイルが含まれています。

サーバー側では実行するマシンのロケールに対応した定義ファイルが読み込まれます。
対応するロケールの定義ファイルがない場合は英語版の定義ファイルが読み込まれます。

※ jarの中には必ずしもコンポーネントとマッパー関数の定義ファイルの両方を用意する必要はなく、どちらか片方、実際に作成したクラスに対応するものだけを用意します。
どちらの定義ファイルも含まれていないjarファイルがこのフォルダーに置かれていても特にエラーにはなりませんが、初期化のチェックが入るので起動は遅くなります。

2.2 フローデザイナー

「DESIGNER_HOME/lib/flowlib」というフォルダーにフローサービスに配置したのと同じjarファイルを配置します。
フローデザイナーではサーバーと異なり、jarの中にある定義ファイルが直接読み込まれるのではなく、ロケールに応じた定義ファイルがOSのユーザーフォルダー以下に作成されるフローデザイナーのプロファイル用のフォルダーの「conf」直下に以下の名前にリネームされて保存されます。

起動時にconfフォルダー下にあるファイルとjarファイルの日付を比較して、jarファイルの方が新しい場合は再度jarファイルから定義ファイルが読み出されてconfフォルダーに保存されます。

標準コンポーネント/マッパー関数の定義ファイルもすべて同フォルダーに保存されているので独自のコンポーネント/マッパー関数を作成する際にはそれらを参考にして定義を行うことができます。
また、テスト段階では、コンポーネントやマッパー関数の実体クラスを作成する前に定義ファイルだけを用意してフローデザイナーの動作を検証することも可能です。

2.3 定義ファイルの分割形式

以下で説明する定義ファイルの形式はjarファイルに含まれる(PROFILE_HOME/confに保存される)形式ですが、実際には定義ファイルはコンポーネント(またはマッパー関数)の単位で作成されます。
JavaInterpreterのウィザードによって生成される定義ファイルのスケルトンはこちらの分割形式のファイルであり、ビルド時に分割された定義ファイルが収集されてロケールに応じた定義ファイルが生成され jarファイル内の適切な場所に配置されます。
分割形式の場合でも、各国語版の定義が1ファイルに含まれるようになるだけで定義内容自体は全く一緒です。

3 コンポーネント定義ファイル - ComponentDefine.xconf

3.1 名前空間と文書要素

この文書内で説明される要素は全て上記の名前空間に属します。
ただし、自作プロパティの作成などによりSDKユーザーによって定義ファイルが拡張される場合はその限りではありません。

3.2 リファレンス

3.2.1 ComponentDefine

文書要素

ComponentDefine要素の属性
名前区分説明
version必須「4.0」固定

ComponentDefine要素は複数のComponent要素を持ちます。

3.2.2 Component

コンポーネントの情報を記述するための要素です。
コンポーネント名(name属性)はフローサービス内でユニークである必要があります。
サーバー側、デザイナー側の両方で評価されます。

Component要素の属性
名前区分説明
name必須コンポーネント名を指定します。
コンポーネント名は作成したComponentクラスのgetComponentNameで指定した名前です。
コンポーネント名はフローサービス内でユニークでなければなりません
category必須コンポーネントの属するカテゴリを指定します。
インストール時には、コンポーネントはパレット上のここで指定したカテゴリ名のタブに載っています。
(インストール後はユーザーによってパレット上での配置を変更することができます。)
icon必須コンポーネントのアイコンファイルを指定します。
アイコンファイルのフォーマットはPNG形式(32 * 32ドット)です。
ここで指定したアイコンファイルはjarファイルの「META-INF/asteria/icons」に配置されている必要があります。
ここで指定されたアイコンファイルが見つからない場合はフローデザイナー上では「?」アイコンで表示されます。
displayNameコンポーネントの表示名を指定します。省略された場合は表示名はname属性の値になります
toolTipフローデザイナーで表示するツールチップを指定します
requiredLicenseコンポーネントの実行にライセンスが必要な場合、必要なライセンス文字列を指定します。
通常はSDKユーザーが指定する必要はありません。
typeコンポーネント種別を指定します。
  • normal - 通常コンポーネント(入力コネクタ、出力コネクタを備えたコンポーネント)
  • start - 開始コンポーネント(出力コネクタのみを備えたコンポーネント)
  • end - 終了コンポーネント(入力のみを備えたコンポーネント)
  • independence - 独立コンポーネント(入力コネクタも出力コネクタも持たないコンポーネント)
省略された場合はnormalになります。
現在SDKユーザーに開発方法が公開されているのは通常コンポーネントのみなので、通常は指定する必要はありません。
targetこの定義を何処で使用するかを指定します。
  • both - サーバー側とデザイナー側の両方で使用します。
  • server - サーバー側でのみ読み込まれデザイナー側では無視されます。
  • designer - デザイナー側でのみ読み込まれサーバー側では無視されます。
  • none - サーバー、デザイナーの両方で無視され、使用されません。
省略された場合はbothになります。
通常は指定する必要はありません。
paletteこのコンポーネントをパレットに載せることができるかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
Startコンポーネントなどの特殊なコンポーネント以外ではtrueにする必要はありません。
(palette=trueであっても、パレット編集機能で非表示にすることはできます。)
sptIconStreamPassThroughアイコン(コンポーネントの右上に表示される入力ストリームがそのまま出力されることを示すアイコン) を表示する場合はtrueを指定します。 省略された場合はfalseになります。

Component要素は以下の要素を持つことができます。

Class要素は要素内容の最初に位置する必要がありますが、他の要素の出現順序は任意です。
Property要素はその出現順でフローデザイナーのプロパティインスペクタに表示されます。

3.2.3 Class

要素内容としてコンポーネントの実装クラスのクラス名を指定します。
サーバー側でのみ解釈され、デザイナー側では使用されません。
(Designerはxfpファイルを編集することがその責務であり、実際にコンポーネントを実行する必要がないからです。)
デザイナー側ではコンポーネントの持つプロパティなどの情報はProperty要素などを元に構築されます。

Class要素の属性
名前区分説明
initコンポーネントの初期化のタイミングを指定します。
「start」を指定した場合はサーバー起動時にコンポーネントは初期化されます。
省略された場合は、初期化のタイミングは最初にそのコンポーネントを含むフローがコンパイルされた時になります。

Class要素は要素内容としてクラス名を持つので、子要素はありません。

3.2.4 Message

実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はComponent#getMessageメソッドで取得できます。
key属性はComponent要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれComponent#getMessageの引数で置換されます。
※key属性には数値以外も記述できますが、数値を推奨します。

Message要素の属性
名前区分説明
key必須メッセージのキーを指定します。
Component要素内でユニークでなければなりません。

Message要素は要素内容としてメッセージ内容の文字列を持つので、子要素はありません。

3.2.5 Param

サーバー側の実装クラスが使用するパラメーターをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はComponentManager#getParamメソッドで取得できます。
name属性はComponent要素内でユニークでなければなりません。

Param要素の属性
名前区分説明
name必須パラメーター名を指定します。
Component要素内でユニークでなければなりません。

Param要素は要素内容としてパラメーター文字列を持つので、子要素はありません。

3.2.6 Resource

デザイナー側の実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
デザイナー側でのみ解釈され、サーバー側では使用されません。
例えば、独自のListenerクラスを作成する場合にその中で使用する文字列リソースなどをここで定義します。
ここで定義された文字列はComponent#getMetaData()#getResourceメソッドで取得できます。
key属性はComponent要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれComponent#getMetaData()#getResourceの引数で置換されます。

Resource要素の属性
名前区分説明
key必須リソースのキーを指定します。
Component要素内でユニークでなければなりません。

Resource要素は要素内容としてリソース文字列を持つので、子要素はありません。

3.2.7 Property

コンポーネントの持つプロパティ情報を記述します。
フローデザイナーではひとつのProperty要素がインスペクタ上でのひとつのプロパティに対応します。
(このProperty要素以降の要素はフローデザイナー側で使用される要素です。)

Property定義の詳細については後述のプロパティの章を参照してください。

3.2.8 AdditionalProp

AdditionalPropとはインスペクタ上でタブページとなるプロパティのことです。
独自のAdditonalPropを作成することにより、インスペクタにタブページを追加し、 その上に専用の入力インターフェースを作成することができます。

AdditionalProp要素の属性
名前区分説明
name必須プロパティ名を指定します。
class必須AdditionalPropの実装クラスを指定します。

AdditionalProp要素にはその実装クラスが解釈する独自の属性/子要素を持つことがあります。
次節で説明するCategoryはAdditionalPropのひとつです。

「<Category name="Category1" ...」と定義するところを
「<AdditionalProp name="Category1" class="com.infoteria.asteria.flowbuilder2.property.category.CategoryProperty"...」
と定義しても同じですが、Categoryは多くのコンポーネントで使用されるので専用の要素が用意されています。

3.2.9 Category

Categoryとはインスペクタ上でタブページの上にテーブル形式の入力インターフェースを持つプロパティのことです。
テーブルの列はProperty要素を用いて定義します。

Category要素の属性
名前区分説明
name必須プロパティ名を指定します。
displayNameプロパティの表示名を指定します。省略された場合は表示名はname属性の値になります
key列となるPropertyの内Key列となるPropertyのnameを指定します。
Key列の値はMapperでの表示などに使用されます。
keyが指定されない場合は、マッピングを行うことはできません。
value列となるPropertyの内、値となるPropertyのnameを指定します。
readonlyCategoryが編集可能かどうかを「true」「false」で指定します。
省略された場合はfalseになります。
mappingCategoryのMapperでの見え方を指定します。
  • true - 入出力の両方でMapperで使用できます
  • readonly - 入力側(Mapper画面左側)でのみ使用できます。
  • writeonly - 出力側(Mapper画面右側)でのみ使用できます。
  • false - Mapperでの値の設定、参照はできません。
  • input - readonlyと同じです。
  • output - writeonlyと同じです。
省略された場合はtrueになります。
input/outputは過去との互換性のために残されている値なので、新しく指定する場合はreadonly/writeonlyを使用してください。
visibleCategoryがインスペクタに表示されるかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
visibleがfalseであってもmappingの設定によってはCategoryはマッパーに表示されます。
streamVariablesCategoryの内容をストリーム変数にする場合trueを指定します。
Category自体はコンポーネントに紐づいているので直後にリンクした Mapperからしか値を参照できません。
それをストリーム変数化することにより、直後にStreamPassThroughなコンポーネント があった場合でも、その先でマッピングを行うことができます。
(この機能を使用する場合、サーバー側で作成するコンポーネントのコードで、CategoryPropertyをストリーム変数に代入する処理を入れる必要があります。)

Categoryの各列の定義にはProperty要素を使用します。
Property要素の定義方法についてはPropertyの章を参照してください。

例 - RDBGetコンポーネントのSQLParameter


<Category key="Name" mapping="true" name="SQLParameter displayName="SQLパラメーター" readonly="true" value="Default">
	<Property displayName="パラメーター名" name="Name" toolTip="header name" type="string"/>
	<Property displayName="データ型" name="Type" toolTip="data type" type="choice">
		<Value>String</Value>
		<ChoiceItem ref="DataType"/>
	</Property>
	<Property displayName="値" name="Default" toolTip="header value" type="string"/>
</Category>

3.2.10 Listener

コンポーネントの動作を拡張するためのListenerを追加します。
Listenerを追加するとコンポーネントの追加やリンクなどの各種イベントでの処理を拡張することができます。

Listener定義の詳細については後述のListenerの章を参照してください。

3.2.11 PropertyListener

コンポーネントのPropertyの動作を拡張するためのPropertyListenerを追加します。
PropertyListenerを追加するとプロパティ値設定時の処理を拡張することができます。

PropertyListener定義の詳細については後述のPropertyListenerの章を参照してください。

3.2.12 Input

Startコンポーネントと独立コンポーネント以外のコンポーネントは1組の入力コネクタセットを持ちます。
入力コネクタセットはひとつのデフォルトコネクタと、0個以上複数のサブコネクタを持つことができます。
デフォルトコネクタの情報はInput要素自身に、サブコネクタの情報は子要素であるSubConnector要素に記述します。

Input要素の属性
名前区分説明
location入力コネクタセットの位置を「top」「bottom」「left」「right」から指定します。
省略された場合はtopになります。
accept入力コネクタの受け入れるストリームフォーマットを指定します。
指定は「ALL」として全てのフォーマットを受け入れるか、
「BINARY」「TEXT」「HTML」「ParameterList」「Record」「CSV」「FixedLength」「MIME」「XML」「JSON」
のうちひとつ以上のフォーマットを「;」で区切って指定します。
省略された場合はALLになります。
default入力コネクタの受け入れ可能なストリームフォーマットのデフォルトを指定します。
省略された場合はaccept属性で指定された値の先頭になります。
(accpet="ALL"の場合はBINARYになります。)
count入力コネクタの受け入れ可能なリンク数を指定します。
入力コネクタが無制限に複数のリンクを受け入れる場合は「unbounded」を指定します。
省略された場合は 1になります。
defineStream入力コネクタでストリーム定義を行うかどうかを「true」「false」で指定します。
通常、ストリーム定義は出力コネクタで行われ、それがリンクしたコンポーネントに受け入れられますが、
RDBPut、WebServiceなどの一部のコンポーネントでは入力されるストリームの定義を行い、
それをリンクされたコンポーネントの出力コネクタにコピーします。
その場合にはこの属性をtrueにします。
省略された場合はfalseになります。

Input要素は次の子要素を持つことができます。

3.2.12.1 SubConnector

SubConnector要素は「location」以外はInput要素と同じ属性を定義できます。
子要素としてはSubConnector要素を持つことはできませんが、defineStream=trueの場合は、
FieldDef要素を持つことができます。

SubConnector要素の属性
名前区分説明
name必須SubConnectorを識別するための名前を指定します。
デフォルトコネクタの名前が「default」になるので、それ以外の名前を指定します。
「location」以外はInput要素と同じ属性を持つことができます。

3.2.13 Output

終了コンポーネントと独立コンポーネント以外のコンポーネントは1組以上の出力コネクタセットを持ちます。
出力コネクタセットはひとつのデフォルトコネクタと、0個以上複数のサブコネクタを持つことができます。
デフォルトコネクタの情報はOutput要素自身に、サブコネクタの情報は子要素であるSubConnector要素に記述します。

出力コネクタセットが複数定義された場合はそれぞれの出力コネクタセットはブランチに対応します。

Output要素の属性
名前区分説明
location出力コネクタセットの位置を「top」「bottom」「left」「right」から指定します。
省略された場合はbottomになります。
state出力コネクタセットが複数ある場合、ユニークになるようにそれぞれの出力コネクタセットに名前をつけます。
省略された場合は「default」になります。
streamPassThrough入力コネクタで受けたストリームをそのまま出力する場合に指定します。
trueを指定した場合は、入力デフォルトコネクタで受けたストリームを出力します。
入力コネクタの名前を指定することでサブコネクタで受けたストリームを出力することもできます。
ref別のコネクタでされているストリーム定義を参照する場合に指定します。
trueを指定した場合は、同じコネクタセットのデフォルトコネクタの定義を参照します。
名前を指定することで特定のサブコネクタのストリーム定義を参照することもできます。
同一コネクタセット内のコネクタを参照する場合はnameのみを、
別コネクタセットのコネクタを参照する場合は「<state>.<name>」のように、
「.」で区切ってstateとnameを指定します。
ここから先の属性はストリーム定義なので、streamPassThroughまたはrefが指定された場合は必要ありません。
accept出力コネクタの出力できるストリームフォーマットを指定します。
指定は「ALL」として全てのフォーマットを出力可能とするか、
「BINARY」「TEXT」「HTML」「ParameterList」「Record」「CSV」「FixedLength」「MIME」「XML」
のうちひとつ以上のフォーマットを「;」で区切って指定します。
省略された場合は「ALL」になります。
default出力コネクタから出力するストリームフォーマットのデフォルトを指定します。
省略された場合はaccept属性で指定された値の先頭になります。
(accpet="ALL"の場合はBINARYになります。)
allowAny出力コネクタから出力されるストリームのフォーマットが不定であるという状態を許可するかどうかを
「true」「false」で指定します。
省略された場合はfalseになります。
StartコンポーネントとSubFlowコンポーネントではAnyを許可していますが、
通常はtrueにするべきではありません。
loopコンポーネントがループしてストリームを出力するかどうかを「true」「false」で指定します。
省略された場合はfalseになります。
trueにした場合はコネクタの横に表示されるストリームアイコンがループアイコンになります。

Output要素は次の子要素を持つことができます。

3.2.13.1 SubConnector

SubConnector要素は「location」以外はOutput要素と同じ属性を定義できます。
子要素としてはSubConnector要素を持つことはできませんが、FieldDef要素、Variables要素はOutput要素と 同様に定義可能です。

SubConnector要素の属性
名前区分説明
name必須SubConnectorを識別するための名前を指定します。
デフォルトコネクタの名前が「default」になるので、それ以外の名前を指定します。
「location」以外はOutput要素と同じ属性を持つことができます。

3.2.14 FieldDef

ストリーム定義のデフォルトのストリームフォーマットが、ParameterList、Record、CSV、FixedLength、XML のいずれかである場合はデフォルトのフィールド定義を持つことができます。
デフォルトのフィールド定義を行う場合にはFieldDef要素を使用します。

FieldDef要素の属性
名前区分説明
readonlyフィールド定義が編集可能かどうかを「true」「false」または列名のカンマ区切りで指定します。
省略された場合はfalseになります。
trueにした場合はフィールド定義はデフォルト値から変更することはできません。
列名を指定する場合は「Name」「Name,Type」のように編集不可とする列をカンマ区切りで指定します。
編集不可の列がある場合は行の追加/削除はできません。 列名に指定できる値は、「Name」「Type」「Description」「Repeat」「NodeType」「Label」「Stream」です。
「Stream」を指定すると、ストリームフォーマットを編集不可にすることができます。

FieldDefの定義内容はストリームフォーマットによって異なります。
ストリーム定義のdefaultで指定したフォーマットに合わせて定義してください。

3.2.14.1 ストリームフォーマットがParameterList, Record, CSV, FixedLengthの場合

FieldDefの子要素として複数のField要素を持つことができます。
ひとつのField要素は定義の1行に相当します。
Field要素は以下の属性を持ちます。

Field要素の属性
名前区分説明
name必須フィールド名を指定します。
FieldDef内でユニークになる必要があります。
type

フィールド型を指定します。
指定できるタイプは以下になります。

  • String
  • Boolean
  • Integer
  • Double
  • Decimal
  • DateTime
  • Binary - CSVの場合は不可
  • String[] - ParameterListのみ
  • ZonedDecimal - FixedLengthのみ
  • PackedDecimal - FixedLengthのみ
  • String(X) - FixedLengthのみ
  • String(N) - FixedLengthのみ

省略された場合はStringになります。

FixedLengthではさらに以下の属性を定義します。
startPositionフィールドの開始位置を指定します。
省略された場合は0になります。
lengthフィールドの長さを指定します。
省略された場合は0になります。
fractionLengthフィールドの小数点位置を指定します。
省略された場合は0になります。

Field要素は空要素です。

例 - FileListコンポーネントのOutput(デフォルトのフィールド定義がある)


<Output accept="Record">
	<FieldDef readonly="true">
		<Field name="FileName" type="String"/>
		<Field name="FilePath" type="String"/>
		<Field name="FileDate" type="DateTime"/>
		<Field name="FileSize" type="Integer"/>
		<Field name="FileType" type="String"/>
	</FieldDef>
</Output>

3.2.14.2 ストリームフォーマットがXMLの場合

XMLの場合、FieldDefの子要素は名前空間を定義するNamespace要素(複数可)と、 XMLの構造を定義するField要素になります。
Field要素はXML構造のひとつのElementあるいはAttributeに相当し、Field要素の子要素として別のField要素を持つことができます。
FieldDef要素の直接の子要素であるField要素は文書要素となるのでひとつしか定義できません。

Namepspace要素は以下の属性を持ちます。

Namespace要素の属性
名前区分説明
prefix必須NamespacePrefixを指定します。
prefixに「#default」を指定するとデフォルトネームスペースのNamespaceURIを定義することになります。
uri必須NamespaceURIを指定します。

Namespace要素は空要素です。

Field要素は以下の属性を持ちます。

Field要素の属性
名前区分説明
name必須要素名(または属性名)を指定します。
nameにPrefix付きの名前を定義する場合は、Namespace要素でそのPrefixが定義されていなければなりません。
nodeTypeフィールドが要素であるか属性であるかを「Element」「Attribute」で指定します。
省略された場合はElementになります。
nodeTypeがAttributeの場合は子要素を持てません。
type

フィールド型を指定します。
指定できるタイプは以下になります。

  • String
  • Boolean
  • Integer
  • Double
  • Decimal
  • DateTime

省略された場合はStringになります。

repeatnodeTypeがElementの場合に、要素の繰り返しがあるかどうかを「true」「false」で指定します。
省略された場合はfalseになります。
label要素名や属性名につける別名を指定します。
別名を指定するとマッパー画面上に表示されるそれぞれのノードの表示名が指定の値になります。

3.2.15 Variables

Variables要素はストリーム変数を定義する場合に使用します。
Variable要素自身には属性はなく、子要素として複数のField要素を持つことができます。
ひとつのField要素がひとつの変数定義に相当します。
Field要素は以下の属性を持ちます。

Variables要素の属性
名前区分説明
name必須変数名を指定します。
Variables内でユニークになる必要があります。
type

変数の型を指定します。
指定できるタイプは以下になります。

  • String
  • Boolean
  • Integer
  • Double
  • Decimal
  • DateTime
  • Binary

省略された場合はStringになります。

Field要素は空要素です。

例 - FileGetコンポーネントのOutput(ストリーム変数が定義されている)


<Output accept="Binary;Text;HTML;CSV;FixedLength;XML;MIME" default="XML">
	<Variables>
		<Field name="FilePath" type="String"/>
		<Field name="FileDate" type="DateTime"/>
		<Field name="FileSize" type="Integer"/>
	</Variables>
</Output>

4 マッパー関数定義ファイル - FunctionDefine.xconf

4.1 名前空間と文書要素

この文書内で説明される要素は全て上記の名前空間に属します。
ただし、自作プロパティの作成などによりSDKユーザーによって定義ファイルが拡張される場合はその限りではありません。

4.2 リファレンス

4.2.1 FunctionDefine

文書要素

FunctionDefine要素の属性
名前区分説明
version必須「4.0」固定

FunctionDefine要素は複数のFunction要素を持ちます。

4.2.2 Function

マッパー関数の情報を記述するための要素です。
マッパー関数名(name属性)はフローサービス内でユニークである必要があります。
サーバー側、デザイナー側の両方で評価されます。

Function要素の属性
名前区分説明
name必須マッパー関数名を指定します。
マッパー関数名は作成したFunctionクラスのgetFunctionNameで指定した値です。
マッパー関数名はフローサービス内でユニークでなければなりません
category必須マッパー関数の属するカテゴリを指定します。
インストール時には、マッパー関数はパレット上のここで指定したカテゴリ名のタブに載っています。
(インストール後はユーザーによってパレット上での配置を変更することができます。)
icon必須マッパー関数のアイコンファイルを指定します。
アイコンファイルのフォーマットはPNG形式(32 * 32ドット推奨)です。
ここで指定したアイコンファイルはjarファイルの「META-INF/asteria/icons」に配置されている必要があります。
ここで指定されたアイコンファイルが見つからない場合はフローデザイナー上では「?」アイコンで表示されます。
displayNameマッパー関数の表示名を指定します。省略された場合は表示名はname属性の値になります
toolTipフローデザイナーで表示するツールチップを指定します
requiredLicenseマッパー関数の実行にライセンスが必要な場合、必要なライセンス文字列を指定します。
通常はSDKユーザーが指定する必要はありません。
targetこの定義を何処で使用するかを指定します。
  • both - サーバー側とデザイナー側の両方で使用します。
  • server - サーバー側でのみ読み込まれデザイナー側では無視されます。
  • designer - デザイナー側でのみ読み込まれサーバー側では無視されます。
  • none - サーバー、デザイナーの両方で無視され、使用されません。
省略された場合はbothになります。
通常は指定する必要はありません。
paletteこのマッパー関数をパレットに載せることができるかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
通常は指定する必要はありません。
(palette=trueであっても、パレット編集機能で非表示にすることはできます。)
inputCountマッパー関数が受け入れ可能な入力リンク数を指定します。
Const関数やNow関数のように入力なしで動作するマッパー関数の場合は0を指定します。
Concatenate関数やSum関数のように入力をいくつでも取れる関数の場合はunboundedを指定します。
省略された場合は1になります。

Function要素は以下の要素を持つことができます。

Class要素は要素内容の最初に位置する必要がありますが、他の要素の出現順序は任意です。
Property要素はその出現順でフローデザイナーのプロパティインスペクタに表示されます。

4.2.3 Class

要素内容としてマッパー関数の実装クラスのクラス名を指定します。
サーバー側でのみ解釈され、デザイナー側では使用されません。
(フローデザイナーはxfpファイルを編集することがその責務であり、実際にマッパー関数を実行する必要がないからです。)
デザイナー側ではマッパー関数の持つプロパティなどの情報はProperty要素などを元に構築されます。

Class要素の属性
名前区分説明
initマッパー関数の初期化のタイミングを指定します。
「start」を指定した場合はサーバー起動時にマッパー関数は初期化されます。
省略された場合は、初期化のタイミングは最初にそのマッパー関数を含むフローがコンパイルされた時になります。

Class要素は要素内容としてクラス名を持つので、子要素はありません。

4.2.4 Message

実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はFunction#getMessageメソッドで取得できます。
key属性はFunction要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれFunction#getMessageの引数で置換されます。
※key属性には数値以外も記述できますが、数値を推奨します。

Message要素の属性
名前区分説明
key必須メッセージのキーを指定します。
Function要素内でユニークでなければなりません。

Message要素は要素内容としてメッセージ内容の文字列を持つので、子要素はありません。

4.2.5 Param

サーバー側の実装クラスが使用するパラメーターをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はFunctionManager#getParamメソッドで取得できます。
name属性はFunction要素内でユニークでなければなりません。

Param要素の属性
名前区分説明
name必須パラメーター名を指定します。
Function要素内でユニークでなければなりません。

Param要素は要素内容としてパラメーター文字列を持つので、子要素はありません。

4.2.6 Resource

デザイナー側の実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
デザイナー側でのみ解釈され、サーバー側では使用されません。
例えば、独自のListenerクラスを作成する場合にその中で使用する文字列リソースなどをここで定義します。
ここで定義された文字列はFunction#getMetaData()#getResourceメソッドで取得できます。
key属性はFunction要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれFunction#getMetaData()#getResourceの引数で置換されます。

Resource要素の属性
名前区分説明
key必須リソースのキーを指定します。
Function要素内でユニークでなければなりません。

Resource要素は要素内容としてリソース文字列を持つので、子要素はありません。

4.2.7 Property

マッパー関数の持つプロパティ情報を記述します。
フローデザイナーではひとつのProperty要素がインスペクタ上でのひとつのプロパティに対応します。
(このProperty要素以降の要素はデザイナー側で使用される要素です。)

Property定義の詳細については後述のプロパティの章を参照してください。

4.2.8 Listener

マッパー関数の動作を拡張するためのListenerを追加します。
Listenerを追加するとマッパー関数の追加やリンクなどの各種イベントでの処理を拡張することができます。

Listener定義の詳細については後述のListenerの章を参照してください。

4.2.9 PropertyListener

マッパー関数のPropertyの動作を拡張するためのPropertyListenerを追加します。
PropertyListenerを追加するとプロパティ値設定時の処理を拡張することができます。

PropertyListener定義の詳細については後述のPropertyListenerの章を参照してください。

4.2.10 Output

マッパー関数が複数の出力を持つ場合に定義します。
省略された場合はマッパー関数はひとつの出力だけを持ちます。

Output要素の属性
名前区分説明
count必須マッパー関数の出力数を指定します。

例 - Split関数は2つの出力を持つ


<Function category="文字列" icon="str_split.png" inputCount="2" name="Split" toolTip="文字列を分割します">
	<Class>com.infoteria.asteria.flowlibrary2.mapper.string.Split</Class>
	<Property name="Separator" displayName="分割キー文字列" required="true" replace="2" type="string"/>
	<Property choiceItem="Left=左(先頭)から&#xa;Right=右(末尾)から" name="SearchDir" displayName="検索方向" type="choice">Left</Property>
	<Property choiceItem="None=出力に含めない&#xa;Left=出力1に含める&#xa;Right=出力2に含める" name="SeparatorMode" displayName="キーの扱い" type="choice">None</Property>
	<Output count="2"/>
	<Listener class="com.infoteria.asteria.flowbuilder2.plugin.IconReplace" icon="str_split2.png"/>
</Function>

5 プロパティ

プロパティの定義はProperty要素を使用して行われます。
Property要素の持つ属性/子要素にはProperty要素共通のものとtype固有のものの両方があります。
(例えばtype="choice"のプロパティはchoiceItem属性またはChoiceItem要素を持ちます。)
まずProperty要素共通の内容について説明し、その後個別のプロパティ型について説明します。

5.1 共通の定義

Property要素の属性
名前区分説明
name必須プロパティ名を指定します。
typeclass属性がない場合は必須。
プロパティのtypeを指定します。
指定可能なtypeについてはPropertyの章を参照してください。
classtype属性がない場合は必須。
プロパティの実装クラスを指定します。
汎用的でないそのコンポーネント特有のプロパティを使用する場合に指定します。
displayNameプロパティの表示名を指定します。省略された場合は表示名はname属性の値になります
toolTipプロパティのツールチップを指定します。
visibleプロパティをインスペクタで表示するかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
readonlyプロパティが編集可能かどうかを「true」「false」で指定します。
省略された場合はfalseになります。
requiredプロパティが必須かどうかを「true」「false」で指定します。
必須の場合はインスペクタ上でプロパティ名が太字で表示されます。
省略された場合はfalseになります。
designerプロパティがフローデザイナーでのみ使用してサーバー側では必要としないプロパティであるかどうかを「true」「false」で指定します。
trueを指定した場合はxfp2作成時にこのProperty要素は削除されます。
省略された場合はfalseになります。
saveプロパティをどのような場合にxfpファイルに保存するかを指定します。
  • always - 常に保存します
  • never - 常に保存しません
  • notNull - プロパティ値がnullでない場合に保存します
  • notDefault - プロパティ値がデフォルト値と異なる場合に保存します
値がデフォルト値からほとんど変更されることのないようなプロパティでは、
notDefaultを指定することでxfpファイルのサイズが抑制され結果としてコンパイルも早くなります。
省略された場合はalwaysになります。
editorプロパティにはそれぞれtypeに応じたEditor(値を入力するためのUI)クラスが登録されています。
editorを指定することでデフォルトのものではなく別のエディタを使用することができます。
例えばtype="string"のプロパティではデフォルトでは1行の文字列が入力できるダイアログ形式の
エディタが登録されていますが、editor="multiline"を指定することで複数行ダイアログを使用できます。

現在editorに指定できるのは以下の2つです。
  • 「multiline」 - 複数行テキストエディタ
  • 「condition」 - 条件式のコード補完を備えた1行テキストエディタ
editorClassクラス名でエディタを指定します。
汎用エディタではなく特殊なエディタを自作した場合に使用します。
rendererプロパティにはそれぞれtypeに応じたRenderer(値を表示するためのUI)クラスが登録されています。
rendererを指定することでデフォルトのものではなく別のRendererを使用することができます。
例えばtype="string"のプロパティではデフォルトではSwingのJLabelを利用したRendererが使用されているので、「<html>...」 で始まる文字列はHTML形式で表示されます。
それを避けるためにConst関数のデータプロパティやVelocityコンポーネントのテンプレートプロパティでは、renderer="plain"として、 HTML表示をしないRendererを使用しています。

現在rendererに指定できるのは「plain」のみです。
rendererClassクラス名でRendererを指定します。
汎用Rendererではなく特殊なRendererを自作した場合に使用します。
mappingコンポーネントプロパティの場合だけ指定できます。
プロパティのマッパーでの見え方を指定します。値には次のいずれかを指定します。
  • true - 入出力の両方でMapperで使用できます。
  • readonly - 入力側(Mapper画面左側)でのみ使用できます。
  • writeonly - 出力側(Mapper画面右側)でのみ使用できます。
  • false - Mapperでの値の設定、参照はできません。
  • input - readonlyと同じです。
  • output - writeonlyと同じです。
省略された場合はtrueになります。
input/outputは過去との互換性のために残されている値なので、新しく指定する場合はreadonly/writeonlyを使用してください。
replaceマッパー関数プロパティの場合だけ指定できます。
入力リンクがプロパティ値を置換する場合に入力のリンク番号を指定します。
replaceが指定され、入力リンクが指定の数以上ある場合はインスペクタでリンク先のオブジェクトの名前が表示されるようになります。
usemacroプロパティ式エディタを使用不可にする場合に指定します。
省略された場合はtrueになります。
loadingDefaultプロパティをxfpからロードする場合のデフォルト値を指定します。
省略された場合はロード時のデフォルト値は通常のデフォルト値と同じです。
diffプロパティがFlowDiff(比較ツール)での比較の対象となるか否かを「true」「false」で指定します。
falseを指定した場合はFlowDiffではこのプロパティ値は比較されません。
省略された場合はtrueになります。

標準的なProperty定義ではProperty要素は子要素としてValueという要素を持ち、その要素内容としてプロパティ のデフォルト値を記述することができます。
(typeによっては他の子要素を持つプロパティもあります。)
ただし、Property要素の子要素がValue要素だけの場合は、Value要素を省略してデフォルト値を直接Property要素の要素内容として記述することができます。
つまり


<Property name="Prop1" type="string">
	<Value>DefaultValue</Value>
</Property>

という定義内容は


<Property name="Prop1" type="string">DefaultValue</Property>

と書いても同じ意味であり、ほとんどの場合後者の省略形式が使用されます。

loadingDefault属性はリリース済みのコンポーネントやマッパー関数にプロパティが追加された場合などに使用します。
プロパティが新たに追加された場合、それ以前のバージョンで作成されたxfpファイルには当然そのプロパティの設定情報は含まれません。
この場合xfpを読み込んだ時点で追加されたプロパティにはデフォルト値が設定されますが、この時に使用する値を通常のデフォルト値(パレットから新たに配置した場合に 使用されるデフォルト値)とは異なる値にしたい場合にloadingDefaultを使用します。

5.2 プロパティ型

組み込みのプロパティ(Property要素のtypeで指定できるもの)には以下のものがあります。

5.2.1 string

String型のプロパティです。
デフォルトではエディタは1行ダイアログになります。
複数行の文字列を入力する場合はProperty要素でeditor="multiline"を指定します。

5.2.2 int

Integer型のプロパティです。
エディタでは数値以外入力できません。

5.2.3 double

Double型のプロパティです。
エディタでは数値以外入力できません。

5.2.4 decimal

BigDecimal型のプロパティです。
エディタでは数値以外入力できません。

5.2.5 boolean

Boolean型のプロパティです。
デフォルトではエディタは「はい」「いいえ」の選択形式なりますが、true/false属性で表示名を変更することもできます。
(xfpへの保存は表示に関わらず常にtrueかfalseになります。)

boolean型Propertyの属性
名前区分説明
truetrueに対応する表示名を指定します。
省略した場合は「はい」になります。
falsefalseに対応する表示名を指定します。
省略した場合は「いいえ」になります。

5.2.6 choice

文字列選択形式のプロパティです。
choiceには、略記法正記法の2つの方法のどちらかで選択肢となる文字列を定義します。

略記法

Property要素にchoiceItem属性を持たせ、そこに選択肢となる文字列を「&#xa;」で区切って羅列します。
実名(xfpファイルに保存される値)と異なる表示名を指定するには、実名=表示名のように指定します。

例:


<Property choiceItem="Left=左(先頭)から&#xa;Right=右(末尾)から" name="SearchDir" displayName="検索方向" type="choice">Left</Property>

注意:
実名、表示名には、「=」を含む定義はできません。「=」を使用する場合は正記法で定義してください。

正記法

Property要素の子要素としてChoiceItem要素を定義します。
ChoiceItem要素の定義方法は以下の通りです。

ChoiceItem要素の属性
名前区分説明
ref指定した場合、定義済みのChoiceItemを参照します。
定義済みのChoiceItemはflowbuilder.xconfで定義されています。
(「Encoding」「Locale」「Timezone」など)

ChoiceItem要素は子要素として、Include要素、Exclude要素を複数持つことができます。

Include要素では選択肢に追加する値を定義します。(ref属性と組み合わせて使用することもできます。)
Include要素は次の属性を持ちます。

Include要素の属性
名前区分説明
name必須選択肢の実名を指定します。
displayName選択肢の表示名を指定します。
省略された場合は表示名はnameの値になります。
defaultこの選択肢をデフォルト値とする場合は、「true」を指定します。

Exclude要素では選択肢から除外する値を定義します。(ref属性と組み合わせで使用します。)
Exclude要素は次の属性を持ちます。

Exclude要素の属性
名前区分説明
name必須選択肢から除外するnameを指定します。

Include、Exclude共に空要素です。

例:


<Property name="SearchDir" displayName="検索方向" type="choice">
  <ChoiceItem>
    <Include name="Left" displayName="左(先頭)から"/>
    <Include name="Right" displayName="右(末尾)から"/>
  </ChoiceItem>
</Property>

5.2.7 editableChoice

文字列選択形式のプロパティです。
choiceが選択肢からの選択しかできないのに対し、editableChoiceは文字列の直接入力を許します。
choiceの場合と同様に選択肢を正記法または略記法で定義する必要があります。

5.2.8 datetime

日付と時刻を指定するためのプロパティです。 エディタはカレンダー形式になります。

5.2.9 date

日付を指定するためのプロパティです。 エディタはカレンダー形式になります。

5.2.10 time

時刻を指定するためのプロパティです。 エディタはスピンボックスになります。

5.2.11 color

色を選択するためのプロパティです。
xfp上にはColorがRGB形式で保存されます。xfpに保存された値をJavaのColorクラスに戻すためのコードは以下の様になります。


   String propValue;
   Color c = new Color((int)Long.parseLong(propValue, 16), true);

5.2.12 remoteFile

文字列プロパティの一種ですが、エディタとしてフローサービスホームフォルダーのファイルオープンダイアログを備えています。
ダイアログからファイルを選択するとそのパスがプロパティ値として設定されます。

多くの場合remoteFileプロパティは次に説明するpathResolverプロパティとの組み合わせて使用されます。
対応するpathResolverプロパティの値が「プロジェクトフォルダー」の場合はプロジェクトファイルのあるフォルダからの相対パスが、 「ホームフォルダー」の場合はホームフォルダーからの相対パスがプロパティ値として設定されます。
ただし「プロジェクトフォルダー」の場合でも選択したファイルのパスがプロジェクトフォルダーの下位にあるファイルでない場合は、 pathResolverプロパティの値が「ホームフォルダー」に変更された上でホームフォルダーからのパスが設定されます。
対応するpathResolverプロパティがない場合はホームフォルダーからの相対パスが設定されます。

またpathResolverプロパティの設定に関わらず、プロパティ値として絶対パスを指定することもできます。
(ただしコンポーネントによっては絶対パスの指定が禁止されているものもあります。)

このプロパティでは追加の属性として以下を持つことができます。

remoteFile型Propertyの属性
名前区分説明
selectionMode選択モードを指定します。指定できる値は
  • FILES_ONLY - ファイルのみ選択可能
  • DIRECTORIES_ONLY - フォルダーのみ選択可能
  • FILES_AND_DIRECTORIES - ファイルまたはフォルダーが選択可能
省略された場合はFILES_ONLYになります。

また子要素としてFilter要素を追加することにより拡張子によるファイルのフィルタを追加することができます。
Filter要素は次の属性を持ちます。

Filter要素の属性
名前区分説明
description必須「XMLファイル(*.xml)」といったフィルタの説明を指定します。
extensions必須「.xml;.xsl」のようにフィルタにマッチする拡張子を「;」で区切って指定します。

5.2.13 pathResolver

pathResolverプロパティは上述のremoteFileプロパティの値がどこからのパスであるかを示すために使用されます。
対象となるremoteFileプロパティが何であるかはtarget属性で示されます。

pathResolver型Propertyの属性
名前区分説明
target必須対象とするremoteFileプロパティのプロパティ名を指定します。

pathResolverプロパティの設定値はほとんどの場合「プロジェクトフォルダー」、「ホームフォルダー」の2択であるか、 それに「実行ユーザーのホームフォルダー」を加えた3択となります。
通常はflowbuilder.xconfで定義されたChoiceItem「pathResolver」を参照することで選択肢を定義します。


<Property displayName="ファイルパスの起点" mapping="false" name="HomeDirectory" target="FilePath" type="pathResolver">
	<ChoiceItem ref="PathResolver">
		<Exclude name="ExecuteUser"/>
	</ChoiceItem>
	<Value>Relative</Value>
</Property>

pathResolverプロパティの値が「実行ユーザーのホームフォルダー」の場合はremoteFileプロパティのファイル選択ダイアログは あまり意味を持たないので、その場合はファイル名を直接タイプします。

5.2.14 group

groupはプロパティを階層化するための仕組みです。
type="group"を指定した場合にはProperty要素は別のProperty要素を子要素として持つことができインスペクタ上では階層表示されます。
(groupの子としてさらにgroupを指定することもできます。)

group型Propertyの属性
名前区分説明
unfoldtrueを指定するとxfp2作成時にグループに対応するProperty要素が削除され、その子要素であるProperty要素がフラットに展開されます。
現在はサーバー側のコンパイラがグループに対応していないので必ずunfold="true"を指定してください。
initialStateexpandまたはcollapseで初期状態でインスペクタで開いているか閉じているかを指定します。
省略した場合はcollapseになります。

5.2.15 subflow

フローを選択するためのプロパティです。
エディタはフローの選択ダイアログになります。
このプロパティでは追加の属性として以下を持つことができます。

subflow型Propertyの属性
allowRecursiveフローの再帰呼び出し(自分の属するフローをプロパティ値として設定する)を許可するかどうかを「true」「false」で指定します。
例えばTimerコンポーネントは再帰呼び出しを許可しますが、サブフローコンポーネントは許可しません。
省略された場合はfalseになります。
param選択したフローの引数を同期するCategoryプロパティを指定します。
paramが指定されている場合、フローが選択された時にそのフローの引数が自動的に指定したCategoryプロパティに設定されます。
選択したフローが同一プロジェクト内のフローの場合は、そちらの方で引数が変更された場合も自動的にCategoryプロパティは同期します。
選択したフローが別プロジェクトの場合はCategoryプロパティの同期はリクエストベースになります。
リクエストはListenerのひとつであるSubFlowControllerを用いることで行えます。

5.2.16 exception

Exceptionフローを選択するためのコンポーネント専用プロパティです。
Exceptionプロパティはインスペクタ上では他のプロパティとは別のカテゴリーに表示されます。
subflowとの違いは、ダイアログの選択肢に「エラーを無視する」「リクエストを終了する」「フローを終了する」があるかどうかです。

5.2.17 connection

ASMCで定義したコネクションを選択するためのプロパティです。
connection属性で選択させるコネクション種別を指定します。

connection型Propertyの属性
名前区分説明
connection選択するコネクション種別を指定します。
コネクション種別には「RDBConnection」「HTTPConnection」などがあります。
allowNone選択肢として「(none)」(選択値なし)を表示するかどうかを「true」「false」で指定します。
省略された場合はfalseになります。

5.2.18 holiday

FSMCで設定した休日設定を選択するためのプロパティです。
休日設定はコード内ではFlowEngine#getHolidayメソッドから利用できます。

5.2.19 password

文字列プロパティの1種ですが、xfpにはエンクリプトして保存されます。
またエディタでの入力、表示は「*」でマスクされ指定した文字列は隠されます。

password型Propertyの属性
名前区分説明
keyword必須エンクリプトに使用するキーワードを指定します。

5.2.20 loopProcess

コンポーネント専用のプロパティです。
Booleanプロパティの1種ですが、「true」「false」の切り替えと画面上でのストリームアイコンの表示が連動します。

loopProcess型Propertyの属性
名前区分説明
targetConnectorStateLoopProcessを連動させるコネクタのstateを指定します。
省略された場合は「default」になります。
targetConnectorNameLoopProcessを連動させるコネクタのnameを指定します。
省略された場合は「default」になります。

ほとんどのコンポーネントは出力コネクタを一つしか持たないので特にstateやnameを指定する必要はありません。

loopProcessプロパティを使用する場合その対象となるコネクタのloop属性はloopProsssプロパティの初期値と揃えておく必要があります。
(そうしておかないと初期状態でストリームのアイコンが示すループ状態が実際の設定値と異なるという状態になります。)

5.2.21 streamPassThrough

コンポーネント専用のプロパティです。
Booleanプロパティの1種ですが、「true」「false」の切り替えと画面上でのStreamPassThroughアイコンの表示が連動します。

streamPassThrough型Propertyの属性
名前区分説明
outputStateStreamPassThroughを連動させるコネクタのstateを指定します。
省略された場合は「default」になります。
outputNameStreamPassThroughを連動させるコネクタのnameを指定します。
省略された場合は「default」になります。
inputNameパススルーするストリームを受けるコネクタのnameを指定します。
省略された場合は「default」になります。

ほとんどのコンポーネントは入出力コネクタを一つしか持たないので特にこれらの属性を指定する必要はありません

このプロパティのデフォルト値をtrueにする場合はComponent要素のsptIcon属性もあわせてtrueにしてください。

5.2.22 xml

XMLをプロパティ値として持つプロパティです。
xfp上ではプロパティ値であるXMLの文書要素がProperty要素の子要素となります。

このプロパティには汎用のプロパティエディタはありません。
通常はこのプロパティはインスペクタ上では非表示とし、Listenerでこのプロパティ値を扱う処理を行うか、 次に説明するxpathプロパティのサンプルインスタンスを保持するための隠しプロパティとして使用されます。

xml型Propertyの属性
名前区分説明
normalizeWhitespacetrueを指定した場合、XML中の余分な空白が削除されます。 省略された場合はfalseになります。
xml型Propertyの子要素
名前区分説明
Template扱うXMLの雛型がある場合はこの要素の子要素として記述できます。
(デフォルト値と考えても良いです。)

5.2.23 xpath

stringプロパティの1種ですが、XPathを設定するための専用ダイアログをエディタとして備えています。

xpath型Propertyの属性
名前区分説明
sampleサンプルインスタンスをxfp中に保存する場合、保存先のxml型プロパティを指定します。
sourceXMLストリームのフィールド定義に対してXPathを指定する場合、 それが入力のXMLの場合は「in」を、自身の定義するXMLである場合は「out」を指定します。
localVarXPath式内で使用可能なローカル変数をCategoryプロパティとして定義させている場合は そのプロパティ名を指定します。
additionalVarその他にXPath式内で使用できる変数がある場合はその変数名を「;」で区切って指定します。

5.2.24 pluginCall

サーバー側のComponentに実装したpluginCallメソッドを実行してその結果をドロップダウンリストに表示するプロパティです。
使用するためには定義を行うだけではなくサーバー側で対応するpluginCallの実装を行わなければなりません。

pluginCall型Propertyの属性
名前区分説明
component

pluginCallを実行するコンポーネント名
省略した場合はこの定義の属するコンポーネントになります。

pluginCallの実行時に設定するパラメーターはParam要素で指定できます。

pluginCall型Propertyの子要素
名前説明
Param

pluginCallに設定するパラメーターを指定します。
name属性にパラメーター名を、要素内容にパラメーター値を指定します。

ここから先に説明するプロパティは汎用のプロパティというよりもコンポーネント(マッパー関数)の用途に応じて カスタマイズされた特殊プロパティです。
場合によってはこのような専用のプロパティを作成することもできます。

5.2.25 variant

データ型に応じてエディタの切り替わるプロパティです。
Const関数のデータプロパティとマッパー変数で使用されています。

variant型Propertyの属性
名前区分説明
typePropvariant型をプロパティとして定義する場合に、データ型を表すプロパティのプロパティ名を指定します。
ここで指定されたプロパティの値の変更に応じてこのプロパティのエディタが切り替わります。
typeColvariant型をCategoryPropertyの列として定義する場合に、データ型を表す列の列名を指定します。
ここで指定された列の値の変更に応じてこの列のエディタが切り替わります。

5.2.26 componentName

コンポーネント専用のプロパティです。
フロー上に存在するコンポーネント名を選択できます。

LoopEndコンポーネントで使用されています。

componentName型Propertyの属性
名前区分説明
range

選択対象とするコンポーネントの範囲を指定します。

  • all
    プロパティ自身の属するコンポーネント以外の全てのコンポーネントが対象となります。
  • before
    プロパティ自身の属するコンポーネントの直前にリンクされているコンポーネントのみが対象となります。
    (コンポーネントにリンクがされていない場合は「all」と同じになります。)
  • beforeAll
    プロパティ自身の属するコンポーネントの前にリンクされているコンポーネント全てが対象となります。
    つまり、直前のコンポーネントからさらにさかのぼって前のコンポーネントも選択対象となります。 (コンポーネントにリンクがされていない場合は「all」と同じになります。)
  • loopStart
    プロパティ自身の属するコンポーネントの前にリンクされているコンポーネントでかつループを開始しているコンポーネントが対象となります。
    (コンポーネントにリンクがされていない場合は「all」と同じになります。)

省略された場合は「all」になります。

5.2.27 propertyName

コンポーネント専用のプロパティです。
直前のコンポーネントのプロパティ名を選択できます。

BranchByComponentPropertyコンポーネント、BranchByExceptionコンポーネントで使用されています。

propertyName型Propertyの属性
名前区分説明
targetType

選択対象とするプロパティの型を指定します。
型の指定は「;」で区切って複数行うことができます。
また型名の先頭に「^」をつけることによって、指定の型以外を対象とすることもできます。

例えば「string;int」と指定すればstring型とint型のプロパティのみが対象となり、「^exception」とするとExceptionプロパティ以外が対象となります。

5.2.28 inputField

コンポーネント専用のプロパティです。
直前のコンポーネントのフィールド名を選択できます。

RecordJoinコンポーネントで使用されています。

inputField型Propertyの属性
名前区分説明
targetIndex入力となるコンポーネントが複数ある場合にそのインデックスを指定します。
省略された場合は0になります。
addComponentNameフィールド名の前にコンポーネント名をつけるかどうかをtrueまたはfalseで指定します。
省略された場合はfalseになります。

5.2.29 subFunction

サブ関数専用のプロパティです。
サブ関数を選択ダイアログから選択できます。

6 Listener

コンポーネントもマッパー関数もBaseObjectという抽象基底クラスを継承したオブジェクトです。
BaseObjectにはその各種イベントをハンドルするためのListenerを登録することができます。
Listenerは「com.infoteria.asteria.flowbuilder2.event.BaseObjectListener」インターフェースを実装するクラスで次のイベントをハンドルできます。

Listener要素共通の属性としては次のものがあり、これ以外に個別のListenerが独自の要素や属性定義を持つこともあります。

Listener要素の属性
名前区分説明
class必須Listenerの実装クラスを指定します。
commonListenerのインスタンスが同種のコンポーネントやマッパー関数で共有されるのかどうかを「true」「false」で指定します。
falseを指定した場合はフロー上のコンポーネントまたはマッパー関数と1対1でListenerのインスタンスも存在することになります。
省略された場合はtrueになります。
この属性は非推奨です。
あるListenerクラスがケースバイケースで共有可能になったり不可になったりすことはほとんどなく、 多くの場合クラスの設計によって共有可否は確定的に決まります。
そのため定義ごとに設定しなければならないこの属性で示すよりもCommonMarkインターフェースを実装するのが望ましい方法です。

汎用的な組み込みListenerとしては次のものがあります。

6.1 プロパティの編集

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.EditProperty

コンポーネント(またはMapper関数)のダブルクリック時に指定のプロパティのエディタを起動するListenerです。
また、ポップアップメニューに同じプロパティの編集メニューを追加することもできます。

Listener要素の属性
名前区分説明
propertyダブルクリックで編集を開始するプロパティ名を指定します。
switch属性が定義されない場合必須です。
switchあるプロパティの値によって編集対象のプロパティを切り替えたい場合に切り替えのキーとなるプロパティ名を指定します。
menuItemプロパティ編集をポップアップメニューに組み込む場合のキャプションを指定します。
省略された場合はポップアップメニューは拡張されません。

switch属性が指定された場合、子要素としてCaseまたはDefault要素を定義して指定のプロパティの値に応じた編集対象プロパティを定義する必要があります。

Case要素は複数定義することができ、次の属性を持ちます。

Case要素の属性
名前区分説明
value必須監視するプロパティ(switch属性で指定したプロパティ)の値を指定します。
value属性には&#xa;で区切ることにより複数の値をまとめて定義できます。
property必須監視するプロパティの値がvalueで指定された値である場合に編集対象とするプロパティを指定します。

Default要素ではマッチするCase要素がなかった場合の編集対象プロパティを指定します。

Default要素の属性
名前区分説明
property必須マッチするCase定義がなかった場合に編集対象とするプロパティを指定します。

例1 - Const関数はダブルクリックで「データ」プロパティの編集を開始します。


<Listener class="com.infoteria.asteria.flowbuilder2.plugin.EditProperty" menuItem="データ編集" property="Data"/>

例2 - Table関数は「「テーブルの指定方法」プロパティの値によって「テーブルの内容」か「ファイルパス」プロパティの編集を開始します。


<Listener class="com.infoteria.asteria.flowbuilder2.plugin.FileEditProperty" menuItem="テーブルの編集" switch="Mode">
    <Case value="Inline" property="InlineTable"/>
    <Case value="File" property="FilePath"/>
</Listener>

6.2 remoteFileプロパティの編集

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.FileEditProperty

remoteFileプロパティに特化したプロパティ編集のためのListenerで、 ダブルクリック時に指定のプロパティに既に値が設定されている場合はそのファイルを開き、 空の場合はエディタを起動(ファイル選択ダイアログを表示)します。

Listener要素の属性
名前区分説明
propertyダブルクリックで編集を開始するプロパティ名を指定します。
switch属性が定義されない場合必須です。
switchあるプロパティの値によって編集対象のプロパティを切り替えたい場合に切り替えのキーとなるプロパティ名を指定します。
menuItemプロパティ編集をポップアップメニューに組み込む場合のキャプションを指定します。
省略された場合はポップアップメニューは拡張されません。

FileEditPropertyはEditProperyのサブクラスですのでswitch属性を指定した場合の子要素の定義方法はEditPropertyと同じです。
またその場合のtargetにはremoteFileプロパティ以外も指定することができます。

例 - FileGetコンポーネントはダブルクリックで「ファイルパス」プロパティの編集を開始します。


<Listener class="com.infoteria.asteria.flowbuilder2.plugin.FileEditProperty" menuItem="ファイルの編集..." property="FilePath"/>

6.3 SubFlowController

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SubFlowController

subFlowプロパティのコントロールを行うためのListenerで、次のことが行えます。

Listener要素の属性
名前区分説明
property必須対象となるsubFlowプロパティを指定します。
menuItemサブフロー編集をポップアップメニューに組み込む場合のキャプションを指定します。
省略された場合はポップアップメニューは拡張されません。

サブフロー情報の更新メニューは対象となるsubFlowプロパティにparam属性が指定されている場合、自動的に組み込まれます。

例 - Timerコンポーネント


<Component category="Schedule" icon="timer.png" name="TimerRequest" toolTip="タイマーによる実行">
	<Property mapping="false" name="Exception" type="exception"/>
	<Property name="Time" type="int">0</Property>
	<Property mapping="true" name="Flow" type="subflow" param="Argument" allowRecursive="true"/>
	<Property mapping="false" name="KeepSession" type="boolean">false</Property>
	<Category name="Argument" key="Name" value="Default" mapping="output">
		<Property name="Name" toolTip="header name" type="string" readonly="true"/>
		<Property name="Type" toolTip="data type" type="choice" readonly="true">
			<Value>String</Value>
			<ChoiceItem ref="DataType"/>
		</Property>
		<Property name="Default" displayName="Value" type="string" editor="multiline"/>
	</Category>
	<Listener class="com.infoteria.asteria.flowbuilder2.plugin.SubFlowController"
		menuItem="フローの編集..." property="Flow"/>
	<Input accept="ALL"/>
	<Output streamPassThrough="true"/>
</Component>

6.4 条件式制御

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SearchConditionSpec

変数ナビの検索に指定のプロパティが条件式であるものとして検索対象に含めるためのListenerです。
例えば指定のプロパティの値が「$flow.var1 = 0」であれば変数ペインでフロー変数「var1」を選択した時の変数ナビの表示にこのコンポーネントが加わります。
また変数名を変更した場合にもこのListenerでプロパティを監視しておくと自動的に条件式に変数名の変更が反映されます。

Listener要素の属性
名前区分説明
property必須Condition式のプロパティ名を指定します。

例 - BranchStartコンポーネントの「Condition」プロパティを変数検索の対象にします。


<Listener class="com.infoteria.asteria.flowbuilder2.plugin.SearchConditionSpec" property="Condition"/>

6.5 外部ファイルをプロパティ検索

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SearchExternalFile

プロパティ検索でプロパティ値として指定された外部ファイルを検索対象に含みます。
(検索ダイアログで「拡張検索」がチェックされた場合のみ有効です。)

Listener要素の属性
名前区分説明
filepathProp必須外部ファイル名が指定されているプロパティ名を指定します。
encodingProp外部ファイルのエンコーディングが指定されているプロパティ名を指定します。
指定がない場合はプラットフォームのデフォルトエンコーディングとしてファイルを検索します。

例 - Velocityコンポーネントの「TemplateFilename」プロパティで指定されたファイルをプロパティ検索の対象にします。


<Listener class="com.infoteria.asteria.flowbuilder2.plugin.SearchExternalFile" encodingProp="TemplateEncoding" filepathProp="TemplateFilename"/>

6.6 コンポーネントの置き換え

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.ReplaceComponent

コンポーネントを別のコンポーネントに置き換えるメニューを追加するListenerです。
置き換え対象のコンポーネントは子要素「Component」で定義します。

Listener要素の属性
名前区分説明
caption必須追加するメニューのキャプションを指定します。
calcEnabled置換可能かどうかのチェックを行うかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
ignoreInvisible非表示のプロパティ値を置換対象から外すかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
Listener要素の子要素
名前区分説明
Component必須Listener要素の子要素として置き換えるコンポーネント名をname属性に指定します。
PropertyComponent要素の子要素として置き換え時に同時に変更するプロパティを定義します。
name属性にプロパティ名を、要素内容に置き換える値を指定します。

例 - RDBGetコンポーネントはSQLCallコンポーネントに置き換えることができます。


<Listener caption="コンポーネントの置き換え" class="com.infoteria.asteria.flowbuilder2.plugin.ReplaceComponent">
	<Component name="SQLCall">
		<Property name="Mode">SQL-Record</Property>
	</Component>
</Listener>

6.7 マッパー関数の置き換え

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.ReplaceFunction

マッパー関数を別のマッパー関数に置き換えるメニューを追加するListenerです。
置き換え対象のマッパー関数は子要素「Function」で定義します。
(子要素の名前がFunctionに変わる以外はコンポーネントの置き換えと同じです。)

Listener要素の属性
名前区分説明
caption必須追加するメニューのキャプションを指定します。
calcEnabled置換可能かどうかのチェックを行うかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
ignoreInvisible非表示のプロパティ値を置換対象から外すかどうかを「true」「false」で指定します。
省略された場合はtrueになります。
Listener要素の子要素
名前区分説明
Function必須Listener要素の子要素として置き換えるマッパー関数名をname属性に指定します。
PropertyFunction要素の子要素として置き換え時に同時に変更するプロパティを定義します。
name属性にプロパティ名を、要素内容に置き換える値を指定します。

例 - 「==」などの比較関数は別の比較関数に置き換えることができます。


<Listener caption="関数の置き換え" class="com.infoteria.asteria.flowbuilder2.plugin.ReplaceFunction">
	<Function name="NotEqual"/>
	<Function name="Greater"/>
	<Function name="GreaterEqual"/>
	<Function name="Less"/>
	<Function name="LessEqual"/>
</Listener>

6.8 アイコン変更

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.IconReplace

パレット上で使用されているアイコンをドロップ時に別のアイコンに変更するためのListenerです。
Split関数などドロップ時のアイコンの大きさが通常のアイコンサイズよりも大きい場合や、 アイコンに文字列を描画したい場合に使用します。

Listener要素の属性
名前区分説明
icon置き換えるアイコンのファイル名
labelアイコンに描画する文字列

6.9 外部アプリケーション起動

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.LaunchExternalApp

外部アプリケーションを起動するためのListenerです。
このListenerは実行時には

  1. preExecuteメソッドを実行
  2. 指定のコマンドを実行
  3. postExecuteメソッドを実行

という順序で動作します。
デフォルトではpreExecute、postExecuteの各メソッドは

という処理を行いますが、通常はこのListenerのサブクラスを作成してpreExecute/postExecuteでの処理を独自に実装します。
(ExcelBuilder、PDFBuilderはそのようにして作成されています。)

Listener要素の属性
名前区分説明
command必須外部アプリケーションを実行するためのコマンド
appName必須実行中ダイアログで表示される外部アプリケーション名
menuItem外部アプリケーション実行メニューのキャプション。
省略された場合はメニューは拡張されず、ダブルクリック時にのみ外部アプリケーションが実行されます。
execDir外部アプリケーションの実行フォルダー
「toolshedDir」を指定した場合は「OSUSER_HOME/.asteria/toolshed」が実行フォルダーになります。
「installDir」を指定した場合は「DESIGNER_HOME」が実行フォルダーになります。
それ以外の値を指定した場合は絶対パスまたはinstallDirからの相対パスとして評価されます。
省略時は「installDir」となります。

子要素としてSaveProperty要素を定義することで外部アプリケーションの実行前後にファイルにプロパティ値を書き出し&書き戻すことができます。
SaveProperty要素は次の属性を持ちます。

SaveProperty要素の属性
名前区分説明
name必須ファイルに書き出すプロパティ名を指定します。
filename必須プロパティ値を書き出すファイル名を指定します。
実際に保存される場所は「OSUSER_HOME/.asteria/toolshed/[指定のファイル名]」となります。
encodingファイルにプロパティ値を書き出す際のエンコーディングを指定します。
省略された場合はプラットフォームのエンコーディング(Windows-31J)になります。

例 - 次のような定義で指定のプロパティ値をメモ帳で編集できるようになります。


<Listener class="com.infoteria.asteria.flowbuilder2.plugin.LaunchExternalApp" menuItem="ソースの編集"
    command="notepad.exe Temp.java" appName="Javaソース編集" execDir="toolshedDir">
	<SaveProperty name="Source" filename="Temp.java"/>
</Listener>

6.10 テンプレートから選択

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SelectTemplate

コンポーネント(マッパー関数)の右クリックメニューに標準で存在する「テンプレートから選択」をダブルクリック時に実行するListenerです。
通常テンプレートファイルはユーザーが「テンプレートに追加」を行うことではじめて作成され、それまでは「テンプレートから選択」は実行できませんが、 このListenerではテンプレートファイルがない場合にjarファイル内からテンプレートファイルを抜き出すことができます。
言い換えればコンポーネント開発者が最初から標準のテンプレートファイルをjarファイル内に組み込んで提供することができます。

Listener要素の属性
名前区分説明
filenamejarファイル内のテンプレートファイル名
テンプレートファイルはClass要素で指定したクラスと同じパッケージ内に配置する必要があります。

例 - OnSheetRestコンポーネントでは標準でOnSheetのWebAPIの設定がテンプレートファイルで提供されています。


<Listener class="com.infoteria.asteria.flowbuilder2.plugin.SelectTemplate" filename="OnSheetRest_jp.xml"/>

7 PropertyListener

プロパティでの値の設定時に処理を行うPropertyListenrを作成することができます。
PropertyListenerは「com.infoteria.asteria.gui.property.event.PropertyChangeListener」インターフェースを実装するクラスで次のイベントをハンドルできます。

PropertyListener要素共通の属性としては次のものがあり、これ以外に個別のPropertyListenerが独自の要素や属性定義を持つこともあります。

PropertyListener要素の属性
名前区分説明
class必須PropertyListenerの実装クラスを指定します。
target必須Listenerを追加する対象のPropertyのnameを指定します。
対象がストリーム定義を一つだけ持つコンポーネントの場合は「Stream/プロパティ名」を指定することでストリームプロパティ をTargetにすることもできます。(ただし、ストリームプロパティはフォーマットによって変化するので指定できるのは事実上 「Stream/Format」のみです。)
commonPropertyListenerのインスタンスが同種のコンポーネントで共有されるのかどうかを「true」「false」で指定します。
falseを指定した場合はフロー上のコンポーネントまたはマッパー関数と1対1でListenerのインスタンスも存在することになります。
省略された場合はtrueになります。
この属性は非推奨です。
あるPropertyListenerクラスがケースバイケースで共有可能になったり不可になったりすことはほとんどなく、 多くの場合クラスの設計によって共有可否は確定的に決まります。
そのため定義ごとに設定しなければならないこの属性で示すよりもCommonMarkインターフェースを実装するのが望ましい方法です。

汎用的な組み込みPropertyListenerとしては次のものがあります。

7.1 プロパティ値による状態変更

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SimplePropertyController

SimplePropertyControllerはあるプロパティの値の変更と同時に別の状態を変更することのできるPropertyListenerです。
SimplePropertyControllerはプロパティ値に対応する動作の定義のためにCase要素とDefault要素を使用します。
Case要素はPropertyListener要素の子要素として複数定義でき、Default要素はPropertyListener要素の子要素としてひとつだけ定義できます。
それぞれのCase要素とDefault要素では動作を指定するための要素を複数定義できます。

Case要素は複数定義することができ、次の属性を持ちます。

Case要素の属性
名前区分説明
value必須監視するプロパティ(PropertyListenerのtarget属性で指定したプロパティ)がこの値になった時に、
子要素で定義されたアクションを実行します。
value属性には&#xa;で区切ることにより複数の値をまとめて定義できます。

Default要素は属性を持ちません。
Default要素では監視するプロパティの値がどのCase要素ともマッチしなかった場合の動作を定義します。

CaseおよびDefault要素がもつことのできる子要素には次のものがあります。

Target要素を使用すると監視するプロパティ値の変更に連動して別のプロパティの状態を変更することができます。

Target要素の属性
名前区分説明
name必須監視するプロパティの変更に伴い状態変更を行うプロパティの名前を指定します。

ストリームプロパティを対象とする場合は

「Stream/ストリームプロパティ名」(そのコンポーネントが持つストリーム定義が一つだけの場合)

または
「Stream[ストリーム定義名]/ストリームプロパティ名」(そのコンポーネントが複数のストリーム定義が一つだけの場合)

を指定します。
通常ストリーム定義名は入力ストリーム定義の場合は「Input」出力ストリーム定義の場合は「Output」です。
(複数の入出力ストリーム定義を持つコンポーネントの場合は設定内容に従って組み立てられます。
ストリーム定義名を確認するためにはComponent#getStreamDefinitionNamesメソッドを使用してください。)
visible指定のプロパティを表示するかどうかを「true」「false」で指定します。
readonly指定のプロパティを編集可能とするかどうかを「true」「false」で指定します。
set指定のプロパティに設定する値を指定します。
setNullと同時には指定できません。
setNull指定のプロパティにnullを設定する場合に「true」を指定します。 setと同時には指定できません。

Target要素には複数の状態変更の属性を同時に定義できます。

例 - HTTPGetコンポーネントではUseConnectionプロパティの変化に伴いプロパティの可視性が変化します。


<PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.SimplePropertyController" target="UseConnection">
	<Case value="true">
		<Target name="Connection" visible="true"/>
		<Target name="ConnectionInfo" visible="false"/>
	</Case>
	<Case value="false">
		<Target name="Connection" visible="false"/>
		<Target name="ConnectionInfo" visible="true"/>
	</Case>
</PropertyListener>

PropertyListenerは初期化時には実行されません。
上の例で言えばUseConnectionの初期値が「true」であるならば初期状態ではConnectionInfoは表示したくないので、
ConnectionInfoのProperty要素定義にvisible="false"も定義します。

Icon要素を使用すると監視するプロパティ値の変更に連動してアイコンを変更することができます。
またアイコン上に文字列を描画することもできるので、フロー内のアイコンをより説明的にすることが可能です。

Icon要素の属性
名前区分説明
filenameアイコンのファイル名
labelアイコンに描画する文字列

Message要素を使用すると監視するプロパティ値の変更に連動して要素内容として定義した文字列をメッセージペインに出力することができます。
メッセージはプロパティのオーナーであるオブジェクトとひもづいているのでダブルクリック時にはそのワークスペースの表示がそのオブジェクトにジャンプします。

Message要素の属性
名前区分説明
level「info」「warn」「error」でメッセージのレベルを指定します。
省略時は「info」になります。
(level指定による動作の違いはメッセージペインでの文字色の違いのみです。)

Connector要素を使用すると監視するプロパティ値の変更に連動してコンポーネントの入出力コネクタを増減させることができます。
ただし現在はまだ仕様変更の可能性があるため使用することはできません。

Output要素を使用すると監視するプロパティ値の変更に関数の出力数を変更することができます。

Output要素の属性
名前区分説明
count必須マッパー関数の出力数を指定します。
tileIcon出力数を変更した際のアイコンをデフォルトのアイコンを出力数の数だけ並べた形式にする場合はtrueにします。
省略された場合はfalseになります。
falseの場合はIcon要素を併用して出力数に対応したアイコンが表示されるようにしてください。

例 - DateSplit関数では出力対象プロパティの値に応じて出力数が変わります。


<PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.SimplePropertyController" target="Mode">
	<Case value="DateTime">
		<Output count="8" tileIcon="false"/>
		<Icon filename="DateSplit_datetime.png"/>
		<Target name="WeekDay" visible="true"/>
	</Case>
	<Case value="Date">
		<Output count="4" tileIcon="false"/>
		<Icon filename="DateSplit_date.png"/>
		<Target name="WeekDay" visible="true"/>
	</Case>
	<Case value="Time">
		<Output count="4" tileIcon="false"/>
		<Icon filename="DateSplit_time.png"/>
		<Target name="WeekDay" visible="false"/>
	</Case>
</PropertyListener>

7.2 プロパティ値とDescriptionの同期

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.DescriptionSynchronizer

指定したプロパティの値にDescription内容が連動します。
ユーザーが自分でDescriptionを編集してプロパティ値とDescription内容が異なる状態になった場合は連動しなくなります。

例 - Const関数では「データ」プロパティ値とDescriptionが連動します。


<PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.DescriptionSynchronizer" target="Data"/>

7.3 コンポーネント入出力数の動的制御

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.ConnectorController

int型のプロパティを指定してその設定値にコンポーネントの入出力コネクタ数を連動させます。

PropertyListener要素の追加属性
名前区分説明
modeプロパティ値によって連動して増減させるコネクタが入力コネクタなのか出力コネクタなのかを指定します。
  • input - 入力コネクタを連動します。
  • output - 出力コネクタを連動します。

例 - OnSheetInputComponentでは隠しプロパティ「OutputCount」と出力コネクタ数が連動します。


<Property name="OutputCount" type="int" visible="false">1</Property>
<PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.ConnectorController" mode="output" target="OutputCount"/>

ConnectorControllerの使い方としてはこのように監視するプロパティは非表示にしておき別途独自に作成したコンポーネントエディタ からプロパティを設定して制御することが多いです。

7.4 マッパー関数出力数の動的制御

クラス名 - com.infoteria.asteria.flowbuilder2.plugin.FunctionOutputPropertyListener

int型のプロパティを指定してその設定値にマッパー関数の出力コネクタ数を連動させます。

PropertyListener要素の追加属性
名前区分説明
drawNumber出力数が2以上になった場合、マッパー関数のアイコンは元のアイコンが縦に並べられた形式になります。
その時にアイコンに出力番号の数値を描画するかどうかを「true」「false」で指定します。
省略された場合はtrueになります。

例 - JavaInterpreter関数やSplit関数では「出力数」プロパティ値と出力コネクタ数が連動します。


<PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.FunctionOutputPropertyListener" target="Count"/>