フローサービスおよびフローデザイナーは起動時にコンポーネントとマッパー関数の定義ファイルを読み込みそれぞれの一覧を作成します。
ここではその定義ファイルの書式について説明します。
「FLOWSERVICE_HOME/lib/flowlib」というフォルダーがコンポーネント/マッパー関数の実体クラスを含むjarファイルの置き場所となっています。
このjarファイルの中にロケール毎の定義ファイルを配置します。
標準コンポーネント/マッパー関数には英語、日本語、中国語の3つのロケールの定義ファイルが含まれています。
サーバー側では実行するマシンのロケールに対応した定義ファイルが読み込まれます。
対応するロケールの定義ファイルがない場合は英語版の定義ファイルが読み込まれます。
※ jarの中には必ずしもコンポーネントとマッパー関数の定義ファイルの両方を用意する必要はなく、どちらか片方、実際に作成したクラスに対応するものだけを用意します。
どちらの定義ファイルも含まれていないjarファイルがこのフォルダーに置かれていても特にエラーにはなりませんが、初期化のチェックが入るので起動は遅くなります。
「DESIGNER_HOME/lib/flowlib」というフォルダーにフローサービスに配置したのと同じjarファイルを配置します。
フローデザイナーではサーバーと異なり、jarの中にある定義ファイルが直接読み込まれるのではなく、ロケールに応じた定義ファイルがOSのユーザーフォルダー以下に作成されるフローデザイナーのプロファイル用のフォルダーの「conf」直下に以下の名前にリネームされて保存されます。
起動時にconfフォルダー下にあるファイルとjarファイルの日付を比較して、jarファイルの方が新しい場合は再度jarファイルから定義ファイルが読み出されてconfフォルダーに保存されます。
標準コンポーネント/マッパー関数の定義ファイルもすべて同フォルダーに保存されているので独自のコンポーネント/マッパー関数を作成する際にはそれらを参考にして定義を行うことができます。
また、テスト段階では、コンポーネントやマッパー関数の実体クラスを作成する前に定義ファイルだけを用意してフローデザイナーの動作を検証することも可能です。
以下で説明する定義ファイルの形式はjarファイルに含まれる(PROFILE_HOME/confに保存される)形式ですが、実際には定義ファイルはコンポーネント(またはマッパー関数)の単位で作成されます。
JavaInterpreterのウィザードによって生成される定義ファイルのスケルトンはこちらの分割形式のファイルであり、ビルド時に分割された定義ファイルが収集されてロケールに応じた定義ファイルが生成され
jarファイル内の適切な場所に配置されます。
分割形式の場合でも、各国語版の定義が1ファイルに含まれるようになるだけで定義内容自体は全く一緒です。
この文書内で説明される要素は全て上記の名前空間に属します。
ただし、自作プロパティの作成などによりSDKユーザーによって定義ファイルが拡張される場合はその限りではありません。
文書要素
名前 | 区分 | 説明 |
---|---|---|
version | 必須 | 「4.0」固定 |
ComponentDefine要素は複数のComponent要素を持ちます。
コンポーネントの情報を記述するための要素です。
コンポーネント名(name属性)はフローサービス内でユニークである必要があります。
サーバー側、デザイナー側の両方で評価されます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | コンポーネント名を指定します。 コンポーネント名は作成したComponentクラスのgetComponentNameで指定した名前です。 コンポーネント名はフローサービス内でユニークでなければなりません |
category | 必須 | コンポーネントの属するカテゴリを指定します。 インストール時には、コンポーネントはパレット上のここで指定したカテゴリ名のタブに載っています。 (インストール後はユーザーによってパレット上での配置を変更することができます。) |
icon | 必須 | コンポーネントのアイコンファイルを指定します。 アイコンファイルのフォーマットはPNG形式(32 * 32ドット)です。 ここで指定したアイコンファイルはjarファイルの「META-INF/asteria/icons」に配置されている必要があります。 ここで指定されたアイコンファイルが見つからない場合はフローデザイナー上では「?」アイコンで表示されます。 |
displayName | コンポーネントの表示名を指定します。省略された場合は表示名はname属性の値になります | |
toolTip | フローデザイナーで表示するツールチップを指定します | |
requiredLicense | コンポーネントの実行にライセンスが必要な場合、必要なライセンス文字列を指定します。 通常はSDKユーザーが指定する必要はありません。 |
|
type | コンポーネント種別を指定します。
現在SDKユーザーに開発方法が公開されているのは通常コンポーネントのみなので、通常は指定する必要はありません。 |
|
target | この定義を何処で使用するかを指定します。
通常は指定する必要はありません。 |
|
palette | このコンポーネントをパレットに載せることができるかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 Startコンポーネントなどの特殊なコンポーネント以外ではtrueにする必要はありません。 (palette=trueであっても、パレット編集機能で非表示にすることはできます。) |
|
sptIcon | StreamPassThroughアイコン(コンポーネントの右上に表示される入力ストリームがそのまま出力されることを示すアイコン) を表示する場合はtrueを指定します。 省略された場合はfalseになります。 |
Component要素は以下の要素を持つことができます。
Class要素は要素内容の最初に位置する必要がありますが、他の要素の出現順序は任意です。
Property要素はその出現順でフローデザイナーのプロパティインスペクタに表示されます。
要素内容としてコンポーネントの実装クラスのクラス名を指定します。
サーバー側でのみ解釈され、デザイナー側では使用されません。
(Designerはxfpファイルを編集することがその責務であり、実際にコンポーネントを実行する必要がないからです。)
デザイナー側ではコンポーネントの持つプロパティなどの情報はProperty要素などを元に構築されます。
名前 | 区分 | 説明 |
---|---|---|
init | コンポーネントの初期化のタイミングを指定します。 「start」を指定した場合はサーバー起動時にコンポーネントは初期化されます。 省略された場合は、初期化のタイミングは最初にそのコンポーネントを含むフローがコンパイルされた時になります。 |
Class要素は要素内容としてクラス名を持つので、子要素はありません。
実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はComponent#getMessageメソッドで取得できます。
key属性はComponent要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれComponent#getMessageの引数で置換されます。
※key属性には数値以外も記述できますが、数値を推奨します。
名前 | 区分 | 説明 |
---|---|---|
key | 必須 | メッセージのキーを指定します。 Component要素内でユニークでなければなりません。 |
Message要素は要素内容としてメッセージ内容の文字列を持つので、子要素はありません。
サーバー側の実装クラスが使用するパラメーターをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はComponentManager#getParamメソッドで取得できます。
name属性はComponent要素内でユニークでなければなりません。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | パラメーター名を指定します。 Component要素内でユニークでなければなりません。 |
Param要素は要素内容としてパラメーター文字列を持つので、子要素はありません。
デザイナー側の実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
デザイナー側でのみ解釈され、サーバー側では使用されません。
例えば、独自のListenerクラスを作成する場合にその中で使用する文字列リソースなどをここで定義します。
ここで定義された文字列はComponent#getMetaData()#getResourceメソッドで取得できます。
key属性はComponent要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれComponent#getMetaData()#getResourceの引数で置換されます。
名前 | 区分 | 説明 |
---|---|---|
key | 必須 | リソースのキーを指定します。 Component要素内でユニークでなければなりません。 |
Resource要素は要素内容としてリソース文字列を持つので、子要素はありません。
コンポーネントの持つプロパティ情報を記述します。
フローデザイナーではひとつのProperty要素がインスペクタ上でのひとつのプロパティに対応します。
(このProperty要素以降の要素はフローデザイナー側で使用される要素です。)
Property定義の詳細については後述のプロパティの章を参照してください。
AdditionalPropとはインスペクタ上でタブページとなるプロパティのことです。
独自のAdditonalPropを作成することにより、インスペクタにタブページを追加し、
その上に専用の入力インターフェースを作成することができます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | プロパティ名を指定します。 |
class | 必須 | AdditionalPropの実装クラスを指定します。 |
AdditionalProp要素にはその実装クラスが解釈する独自の属性/子要素を持つことがあります。
次節で説明するCategoryはAdditionalPropのひとつです。
「<Category name="Category1" ...」と定義するところを
「<AdditionalProp name="Category1" class="com.infoteria.asteria.flowbuilder2.property.category.CategoryProperty"...」
と定義しても同じですが、Categoryは多くのコンポーネントで使用されるので専用の要素が用意されています。
Categoryとはインスペクタ上でタブページの上にテーブル形式の入力インターフェースを持つプロパティのことです。
テーブルの列はProperty要素を用いて定義します。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | プロパティ名を指定します。 |
displayName | プロパティの表示名を指定します。省略された場合は表示名はname属性の値になります | |
key | 列となるPropertyの内Key列となるPropertyのnameを指定します。 Key列の値はMapperでの表示などに使用されます。 keyが指定されない場合は、マッピングを行うことはできません。 |
|
value | 列となるPropertyの内、値となるPropertyのnameを指定します。 |
|
readonly | Categoryが編集可能かどうかを「true」「false」で指定します。 省略された場合はfalseになります。 |
|
mapping | CategoryのMapperでの見え方を指定します。
input/outputは過去との互換性のために残されている値なので、新しく指定する場合はreadonly/writeonlyを使用してください。 |
|
visible | Categoryがインスペクタに表示されるかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 visibleがfalseであってもmappingの設定によってはCategoryはマッパーに表示されます。 |
|
streamVariables | Categoryの内容をストリーム変数にする場合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>
コンポーネントの動作を拡張するためのListenerを追加します。
Listenerを追加するとコンポーネントの追加やリンクなどの各種イベントでの処理を拡張することが出来ます。
Listener定義の詳細については後述のListenerの章を参照してください。
コンポーネントのPropertyの動作を拡張するためのPropertyListenerを追加します。
PropertyListenerを追加するとプロパティ値設定時の処理を拡張することが出来ます。
PropertyListener定義の詳細については後述のPropertyListenerの章を参照してください。
Startコンポーネントと独立コンポーネント以外のコンポーネントは1組の入力コネクタセットを持ちます。
入力コネクタセットはひとつのデフォルトコネクタと、0個以上複数のサブコネクタを持つことができます。
デフォルトコネクタの情報はInput要素自身に、サブコネクタの情報は子要素であるSubConnector要素に記述します。
名前 | 区分 | 説明 |
---|---|---|
location | 入力コネクタセットの位置を「top」「bottom」「left」「right」から指定します。 省略された場合はtopになります。 |
|
accept | 入力コネクタの受け入れるストリームフォーマットを指定します。 指定は「ALL」として全てのフォーマットを受け入れるか、 「BINARY」「TEXT」「HTML」「ParameterList」「Record」「CSV」「FixedLength」「MIME」「XML」 のうちひとつ以上のフォーマットを「;」で区切って指定します。 省略された場合はALLになります。 |
|
default | 入力コネクタの受け入れ可能なストリームフォーマットのデフォルトを指定します。 省略された場合はaccept属性で指定された値の先頭になります。 (accpet="ALL"の場合はBINARYになります。) |
|
count | 入力コネクタの受け入れ可能なリンク数を指定します。 入力コネクタが無制限に複数のリンクを受け入れる場合は「unbounded」を指定します。 省略された場合は 1になります。 |
|
defineStream | 入力コネクタでストリーム定義を行うかどうかを「true」「false」で指定します。 通常、ストリーム定義は出力コネクタで行われ、それがリンクしたコンポーネントに受け入れられますが、 RDBPut、WebServiceなどの一部のコンポーネントでは入力されるストリームの定義を行い、 それをリンクされたコンポーネントの出力コネクタにコピーします。 その場合にはこの属性をtrueにします。 省略された場合はfalseになります。 |
Input要素は次の子要素を持つことができます。
SubConnector要素は「location」以外はInput要素と同じ属性を定義できます。
子要素としてはSubConnector要素を持つことはできませんが、defineStream=trueの場合は、
FieldDef要素を持つことができます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | SubConnectorを識別するための名前を指定します。 デフォルトコネクタの名前が「default」になるので、それ以外の名前を指定します。 |
「location」以外はInput要素と同じ属性を持つことができます。 |
終了コンポーネントと独立コンポーネント以外のコンポーネントは1組以上の出力コネクタセットを持ちます。
出力コネクタセットはひとつのデフォルトコネクタと、0個以上複数のサブコネクタを持つことができます。
デフォルトコネクタの情報はOutput要素自身に、サブコネクタの情報は子要素であるSubConnector要素に記述します。
出力コネクタセットが複数定義された場合はそれぞれの出力コネクタセットはブランチに対応します。
名前 | 区分 | 説明 |
---|---|---|
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要素は次の子要素を持つことができます。
SubConnector要素は「location」以外はOutput要素と同じ属性を定義できます。
子要素としてはSubConnector要素を持つことはできませんが、FieldDef要素、Variables要素はOutput要素と
同様に定義可能です。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | SubConnectorを識別するための名前を指定します。 デフォルトコネクタの名前が「default」になるので、それ以外の名前を指定します。 |
「location」以外はOutput要素と同じ属性を持つことができます。 |
ストリーム定義のデフォルトのストリームフォーマットが、ParameterList、Record、CSV、FixedLength、XML
のいずれかである場合はデフォルトのフィールド定義を持つことができます。
デフォルトのフィールド定義を行う場合にはFieldDef要素を使用します。
名前 | 区分 | 説明 |
---|---|---|
readonly | フィールド定義が編集可能かどうかを「true」「false」または列名のカンマ区切りで指定します。 省略された場合はfalseになります。 trueにした場合はフィールド定義はデフォルト値から変更することはできません。 列名を指定する場合は「Name」「Name,Type」のように編集不可とする列をカンマ区切りで指定します。 編集不可の列がある場合は行の追加/削除はできません。 列名に指定できる値は、「Name」「Type」「Description」「Repeat」「NodeType」「Label」「Stream」です。 「Stream」を指定すると、ストリームフォーマットを編集不可にすることができます。 |
FieldDefの定義内容はストリームフォーマットによって異なります。
ストリーム定義のdefaultで指定したフォーマットに合わせて定義してください。
FieldDefの子要素として複数のField要素を持つことができます。
ひとつのField要素は定義の1行に相当します。
Field要素は以下の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | フィールド名を指定します。 FieldDef内でユニークになる必要があります。 |
type |
フィールド型を指定します。
省略された場合は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>
XMLの場合、FieldDefの子要素は名前空間を定義するNamespace要素(複数可)と、
XMLの構造を定義するField要素になります。
Field要素はXML構造のひとつのElementあるいはAttributeに相当し、Field要素の子要素として別のField要素を持つことができます。
FieldDef要素の直接の子要素であるField要素は文書要素となるのでひとつしか定義できません。
Namepspace要素は以下の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
prefix | 必須 | NamespacePrefixを指定します。 prefixに「#default」を指定するとデフォルトネームスペースのNamespaceURIを定義することになります。 |
uri | 必須 | NamespaceURIを指定します。 |
Namespace要素は空要素です。
Field要素は以下の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | 要素名(または属性名)を指定します。 nameにPrefix付きの名前を定義する場合は、Namespace要素でそのPrefixが定義されていなければなりません。 |
nodeType | フィールドが要素であるか属性であるかを「Element」「Attribute」で指定します。 省略された場合はElementになります。 nodeTypeがAttributeの場合は子要素を持てません。 |
|
type |
フィールド型を指定します。
省略された場合はStringになります。 |
|
repeat | nodeTypeがElementの場合に、要素の繰り返しがあるかどうかを「true」「false」で指定します。 省略された場合はfalseになります。 |
|
label | 要素名や属性名につける別名を指定します。 別名を指定するとマッパー画面上に表示されるそれぞれのノードの表示名が指定の値になります。 |
Variables要素はストリーム変数を定義する場合に使用します。
Variable要素自身には属性はなく、子要素として複数のField要素を持つことができます。
ひとつのField要素がひとつの変数定義に相当します。
Field要素は以下の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | 変数名を指定します。 Variables内でユニークになる必要があります。 |
type |
変数の型を指定します。
省略された場合は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>
この文書内で説明される要素は全て上記の名前空間に属します。
ただし、自作プロパティの作成などによりSDKユーザーによって定義ファイルが拡張される場合はその限りではありません。
文書要素
名前 | 区分 | 説明 |
---|---|---|
version | 必須 | 「4.0」固定 |
FunctionDefine要素は複数のFunction要素を持ちます。
マッパー関数の情報を記述するための要素です。
マッパー関数名(name属性)はフローサービス内でユニークである必要があります。
サーバー側、デザイナー側の両方で評価されます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | マッパー関数名を指定します。 マッパー関数名は作成したFunctionクラスのgetFunctionNameで指定した値です。 マッパー関数名はフローサービス内でユニークでなければなりません |
category | 必須 | マッパー関数の属するカテゴリを指定します。 インストール時には、マッパー関数はパレット上のここで指定したカテゴリ名のタブに載っています。 (インストール後はユーザーによってパレット上での配置を変更することができます。) |
icon | 必須 | マッパー関数のアイコンファイルを指定します。 アイコンファイルのフォーマットはPNG形式(32 * 32ドット推奨)です。 ここで指定したアイコンファイルはjarファイルの「META-INF/asteria/icons」に配置されている必要があります。 ここで指定されたアイコンファイルが見つからない場合はフローデザイナー上では「?」アイコンで表示されます。 |
displayName | マッパー関数の表示名を指定します。省略された場合は表示名はname属性の値になります | |
toolTip | フローデザイナーで表示するツールチップを指定します | |
requiredLicense | マッパー関数の実行にライセンスが必要な場合、必要なライセンス文字列を指定します。 通常はSDKユーザーが指定する必要はありません。 |
|
target | この定義を何処で使用するかを指定します。
通常は指定する必要はありません。 |
|
palette | このマッパー関数をパレットに載せることができるかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 通常は指定する必要はありません。 (palette=trueであっても、パレット編集機能で非表示にすることはできます。) |
|
inputCount | マッパー関数が受け入れ可能な入力リンク数を指定します。 Const関数やNow関数のように入力なしで動作するマッパー関数の場合は0を指定します。 Concatenate関数やSum関数のように入力をいくつでも取れる関数の場合はunboundedを指定します。 省略された場合は1になります。 |
Function要素は以下の要素を持つことができます。
Class要素は要素内容の最初に位置する必要がありますが、他の要素の出現順序は任意です。
Property要素はその出現順でフローデザイナーのプロパティインスペクタに表示されます。
要素内容としてマッパー関数の実装クラスのクラス名を指定します。
サーバー側でのみ解釈され、デザイナー側では使用されません。
(フローデザイナーはxfpファイルを編集することがその責務であり、実際にマッパー関数を実行する必要がないからです。)
デザイナー側ではマッパー関数の持つプロパティなどの情報はProperty要素などを元に構築されます。
名前 | 区分 | 説明 |
---|---|---|
init | マッパー関数の初期化のタイミングを指定します。 「start」を指定した場合はサーバー起動時にマッパー関数は初期化されます。 省略された場合は、初期化のタイミングは最初にそのマッパー関数を含むフローがコンパイルされた時になります。 |
Class要素は要素内容としてクラス名を持つので、子要素はありません。
実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はFunction#getMessageメソッドで取得できます。
key属性はFunction要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれFunction#getMessageの引数で置換されます。
※key属性には数値以外も記述できますが、数値を推奨します。
名前 | 区分 | 説明 |
---|---|---|
key | 必須 | メッセージのキーを指定します。 Function要素内でユニークでなければなりません。 |
Message要素は要素内容としてメッセージ内容の文字列を持つので、子要素はありません。
サーバー側の実装クラスが使用するパラメーターをここに記述することができます。
サーバー側でのみ解釈され、デザイナー側では使用されません。
ここで定義された文字列はFunctionManager#getParamメソッドで取得できます。
name属性はFunction要素内でユニークでなければなりません。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | パラメーター名を指定します。 Function要素内でユニークでなければなりません。 |
Param要素は要素内容としてパラメーター文字列を持つので、子要素はありません。
デザイナー側の実装クラスが使用するエラーメッセージなどの文字列リソースをここに記述することができます。
デザイナー側でのみ解釈され、サーバー側では使用されません。
例えば、独自のListenerクラスを作成する場合にその中で使用する文字列リソースなどをここで定義します。
ここで定義された文字列はFunction#getMetaData()#getResourceメソッドで取得できます。
key属性はFunction要素内でユニークでなければなりません。
文字列中では「%1〜%3」というシンボルが使用でき、それぞれFunction#getMetaData()#getResourceの引数で置換されます。
名前 | 区分 | 説明 |
---|---|---|
key | 必須 | リソースのキーを指定します。 Function要素内でユニークでなければなりません。 |
Resource要素は要素内容としてリソース文字列を持つので、子要素はありません。
マッパー関数の持つプロパティ情報を記述します。
フローデザイナーではひとつのProperty要素がインスペクタ上でのひとつのプロパティに対応します。
(このProperty要素以降の要素はデザイナー側で使用される要素です。)
Property定義の詳細については後述のプロパティの章を参照してください。
マッパー関数の動作を拡張するためのListenerを追加します。
Listenerを追加するとマッパー関数の追加やリンクなどの各種イベントでの処理を拡張することが出来ます。
Listener定義の詳細については後述のListenerの章を参照してください。
マッパー関数のPropertyの動作を拡張するためのPropertyListenerを追加します。
PropertyListenerを追加するとプロパティ値設定時の処理を拡張することが出来ます。
PropertyListener定義の詳細については後述のPropertyListenerの章を参照してください。
マッパー関数が複数の出力を持つ場合に定義します。
省略された場合はマッパー関数はひとつの出力だけを持ちます。
名前 | 区分 | 説明 |
---|---|---|
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=左(先頭)から
Right=右(末尾)から" name="SearchDir" displayName="検索方向" type="choice">Left</Property> <Property choiceItem="None=出力に含めない
Left=出力1に含める
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>
プロパティの定義はProperty要素を使用して行われます。
Property要素の持つ属性/子要素にはProperty要素共通のものとtype固有のものの両方があります。
(例えばtype="choice"のプロパティはchoiceItem属性またはChoiceItem要素を持ちます。)
まずProperty要素共通の内容について説明し、その後個別のプロパティ型について説明します。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | プロパティ名を指定します。 |
type | class属性がない場合は必須。 プロパティのtypeを指定します。 指定可能なtypeについてはPropertyの章を参照してください。 |
|
class | type属性がない場合は必須。 プロパティの実装クラスを指定します。 汎用的でないそのコンポーネント特有のプロパティを使用する場合に指定します。 |
|
displayName | プロパティの表示名を指定します。省略された場合は表示名はname属性の値になります | |
toolTip | プロパティのツールチップを指定します。 | |
visible | プロパティをインスペクタで表示するかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 |
|
readonly | プロパティが編集可能かどうかを「true」「false」で指定します。 省略された場合はfalseになります。 |
|
required | プロパティが必須かどうかを「true」「false」で指定します。 必須の場合はインスペクタ上でプロパティ名が太字で表示されます。 省略された場合はfalseになります。 |
|
designer | プロパティがフローデザイナーでのみ使用してサーバー側では必要としないプロパティであるかどうかを「true」「false」で指定します。 trueを指定した場合はxfp2作成時にこのProperty要素は削除されます。 省略された場合はfalseになります。 |
|
save | プロパティをどのような場合にxfpファイルに保存するかを指定します。
notDefaultを指定することでxfpファイルのサイズが抑制され結果としてコンパイルも早くなります。 省略された場合はalwaysになります。 |
|
editor | プロパティにはそれぞれtypeに応じたEditor(値を入力するためのUI)クラスが登録されています。 editorを指定することでデフォルトのものではなく別のエディタを使用することができます。 例えばtype="string"のプロパティではデフォルトでは1行の文字列が入力できるダイアログ形式の エディタが登録されていますが、editor="multiline"を指定することで複数行ダイアログを使用できます。 現在editorに指定できるのは以下の2つです。
|
|
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 | コンポーネントプロパティの場合だけ指定できます。 プロパティのマッパーでの見え方を指定します。値には次のいずれかを指定します。
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を使用します。
組み込みのプロパティ(Property要素のtypeで指定できるもの)には以下のものがあります。
String型のプロパティです。
デフォルトではエディタは1行ダイアログになります。
複数行の文字列を入力する場合はProperty要素でeditor="multiline"を指定します。
Integer型のプロパティです。
エディタでは数値以外入力できません。
Double型のプロパティです。
エディタでは数値以外入力できません。
BigDecimal型のプロパティです。
エディタでは数値以外入力できません。
Boolean型のプロパティです。
デフォルトではエディタは「はい」「いいえ」の選択形式なりますが、true/false属性で表示名を変更することもできます。
(xfpへの保存は表示に関わらず常にtrueかfalseになります。)
名前 | 区分 | 説明 |
---|---|---|
true | trueに対応する表示名を指定します。 省略した場合は「はい」になります。 |
|
false | falseに対応する表示名を指定します。 省略した場合は「いいえ」になります。 |
文字列選択形式のプロパティです。
choiceには、略記法と正記法の2つの方法のどちらかで選択肢となる文字列を定義します。
Property要素にchoiceItem属性を持たせ、そこに選択肢となる文字列を「
」で区切って羅列します。
実名(xfpファイルに保存される値)と異なる表示名を指定するには、実名=表示名のように指定します。
例:
<Property choiceItem="Left=左(先頭)から
Right=右(末尾)から" name="SearchDir" displayName="検索方向" type="choice">Left</Property>
注意:
実名、表示名には、「=」を含む定義はできません。「=」を使用する場合は正記法で定義してください。
Property要素の子要素としてChoiceItem要素を定義します。
ChoiceItem要素の定義方法は以下の通りです。
名前 | 区分 | 説明 |
---|---|---|
ref | 指定した場合、定義済みのChoiceItemを参照します。 定義済みのChoiceItemはflowbuilder.xconfで定義されています。 (「Encoding」「Locale」「Timezone」など) |
ChoiceItem要素は子要素として、Include要素、Exclude要素を複数持つことができます。
Include要素では選択肢に追加する値を定義します。(ref属性と組み合わせて使用することもできます。)
Include要素は次の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | 選択肢の実名を指定します。 |
displayName | 選択肢の表示名を指定します。 省略された場合は表示名はnameの値になります。 |
|
default | この選択肢をデフォルト値とする場合は、「true」を指定します。 |
Exclude要素では選択肢から除外する値を定義します。(ref属性と組み合わせで使用します。)
Exclude要素は次の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
name | 必須 | 選択肢から除外するnameを指定します。 |
Include、Exclude共に空要素です。
例:
<Property name="SearchDir" displayName="検索方向" type="choice"> <ChoiceItem> <Include name="Left" displayName="左(先頭)から"/> <Include name="Right" displayName="右(末尾)から"/> </ChoiceItem> </Property>
文字列選択形式のプロパティです。
choiceが選択肢からの選択しかできないのに対し、editableChoiceは文字列の直接入力を許します。
choiceの場合と同様に選択肢を正記法または略記法で定義する必要があります。
日付と時刻を指定するためのプロパティです。 エディタはカレンダー形式になります。
日付を指定するためのプロパティです。 エディタはカレンダー形式になります。
時刻を指定するためのプロパティです。 エディタはスピンボックスになります。
色を選択するためのプロパティです。
xfp上にはColorがRGB形式で保存されます。xfpに保存された値をJavaのColorクラスに戻すためのコードは以下の様になります。
String propValue; Color c = new Color((int)Long.parseLong(propValue, 16), true);
文字列プロパティの一種ですが、エディタとしてフローサービスホームフォルダーのファイルオープンダイアログを備えています。
ダイアログからファイルを選択するとそのパスがプロパティ値として設定されます。
多くの場合remoteFileプロパティは次に説明するpathResolverプロパティとの組み合わせて使用されます。
対応するpathResolverプロパティの値が「プロジェクトフォルダ」の場合はプロジェクトファイルのあるフォルダからの相対パスが、
「ホームフォルダー」の場合はホームフォルダーからの相対パスがプロパティ値として設定されます。
ただし「プロジェクトフォルダ」の場合でも選択したファイルのパスがプロジェクトフォルダの下位にあるファイルでない場合は、
pathResolverプロパティの値が「ホームフォルダー」に変更された上でホームフォルダーからのパスが設定されます。
対応するpathResolverプロパティがない場合はホームフォルダーからの相対パスが設定されます。
またpathResolverプロパティの設定に関わらず、プロパティ値として絶対パスを指定することもできます。
(ただしコンポーネントによっては絶対パスの指定が禁止されているものもあります。)
このプロパティでは追加の属性として以下を持つことができます。
名前 | 区分 | 説明 |
---|---|---|
selectionMode | 選択モードを指定します。指定できる値は
|
また子要素としてFilter要素を追加することにより拡張子によるファイルのフィルタを追加することができます。
Filter要素は次の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
desription | 必須 | 「XMLファイル(*.xml)」といったフィルタの説明を指定します。 |
extensions | 必須 | 「.xml;.xsl」のようにフィルタにマッチする拡張子を「;」で区切って指定します。 |
pathResolverプロパティは上述のremoteFileプロパティの値がどこからのパスであるかを示すために使用されます。
対象となるremoteFileプロパティが何であるかはtarget属性で示されます。
名前 | 区分 | 説明 |
---|---|---|
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プロパティのファイル選択ダイアログは あまり意味を持たないので、その場合はファイル名を直接タイプします。
groupはプロパティを階層化するための仕組みです。
type="group"を指定した場合にはProperty要素は別のProperty要素を子要素として持つことができインスペクタ上では階層表示されます。
(groupの子としてさらにgroupを指定することもできます。)
名前 | 区分 | 説明 |
---|---|---|
unfold | trueを指定するとxfp2作成時にグループに対応するProperty要素が削除され、その子要素であるProperty要素がフラットに展開されます。 現在はサーバー側のコンパイラがグループに対応していないので必ずunfold="true"を指定してください。 |
|
initialState | expandまたはcollapseで初期状態でインスペクタで開いているか閉じているかを指定します。 省略した場合はcollapseになります。 |
フローを選択するためのプロパティです。
エディタはフローの選択ダイアログになります。
このプロパティでは追加の属性として以下を持つことができます。
allowRecursive | フローの再帰呼び出し(自分の属するフローをプロパティ値として設定する)を許可するかどうかを「true」「false」で指定します。 例えばTimerコンポーネントは再帰呼び出しを許可しますが、サブフローコンポーネントは許可しません。 省略された場合はfalseになります。 |
|
param | 選択したフローの引数を同期するCategoryプロパティを指定します。 paramが指定されている場合、フローが選択された時にそのフローの引数が自動的に指定したCategoryプロパティに設定されます。 選択したフローが同一プロジェクト内のフローの場合は、そちらの方で引数が変更された場合も自動的にCategoryプロパティは同期します。 選択したフローが別プロジェクトの場合はCategoryプロパティの同期はリクエストベースになります。 リクエストはListenerのひとつであるSubFlowControllerを用いることで行えます。 |
Exceptionフローを選択するためのコンポーネント専用プロパティです。
Exceptionプロパティはインスペクタ上では他のプロパティとは別のカテゴリーに表示されます。
subflowとの違いは、ダイアログの選択肢に「エラーを無視する」「リクエストを終了する」「フローを終了する」があるかどうかです。
ASMCで定義したコネクションを選択するためのプロパティです。
connection属性で選択させるコネクション種別を指定します。
名前 | 区分 | 説明 |
---|---|---|
connection | 選択するコネクション種別を指定します。 コネクション種別には「RDBConnection」「HTTPConnection」などがあります。 |
|
allowNone | 選択肢として「(none)」(選択値なし)を表示するかどうかを「true」「false」で指定します。 省略された場合はfalseになります。 |
FSMCで設定した休日設定を選択するためのプロパティです。
休日設定はコード内ではFlowEngine#getHolidayメソッドから利用できます。
文字列プロパティの1種ですが、xfpにはエンクリプトして保存されます。
またエディタでの入力、表示は「*」でマスクされ指定した文字列は隠されます。
名前 | 区分 | 説明 |
---|---|---|
keyword | 必須 | エンクリプトに使用するキーワードを指定します。 |
コンポーネント専用のプロパティです。
Booleanプロパティの1種ですが、「true」「false」の切り替えと画面上でのストリームアイコンの表示が連動します。
名前 | 区分 | 説明 |
---|---|---|
targetConnectorState | LoopProcessを連動させるコネクタのstateを指定します。 省略された場合は「default」になります。 |
|
targetConnectorName | LoopProcessを連動させるコネクタのnameを指定します。 省略された場合は「default」になります。 |
ほとんどのコンポーネントは出力コネクタを一つしか持たないので特にstateやnameを指定する必要はありません。
loopProcessプロパティを使用する場合その対象となるコネクタのloop属性はloopProsssプロパティの初期値と揃えておく必要があります。
(そうしておかないと初期状態でストリームのアイコンが示すループ状態が実際の設定値と異なるという状態になります。)
コンポーネント専用のプロパティです。
Booleanプロパティの1種ですが、「true」「false」の切り替えと画面上でのStreamPassThroughアイコンの表示が連動します。
名前 | 区分 | 説明 |
---|---|---|
outputState | StreamPassThroughを連動させるコネクタのstateを指定します。 省略された場合は「default」になります。 |
|
outputName | StreamPassThroughを連動させるコネクタのnameを指定します。 省略された場合は「default」になります。 |
|
inputName | パススルーするストリームを受けるコネクタのnameを指定します。 省略された場合は「default」になります。 |
ほとんどのコンポーネントは入出力コネクタを一つしか持たないので特にこれらの属性を指定する必要はありません
このプロパティのデフォルト値をtrueにする場合はComponent要素のsptIcon属性もあわせてtrueにしてください。
XMLをプロパティ値として持つプロパティです。
xfp上ではプロパティ値であるXMLの文書要素がProperty要素の子要素となります。
このプロパティには汎用のプロパティエディタはありません。
通常はこのプロパティはインスペクタ上では非表示とし、Listenerでこのプロパティ値を扱う処理を行うか、
次に説明するxpathプロパティのサンプルインスタンスを保持するための隠しプロパティとして使用されます。
名前 | 区分 | 説明 |
---|---|---|
normalizeWhitespace | trueを指定した場合、XML中の余分な空白が削除されます。 省略された場合はfalseになります。 |
名前 | 区分 | 説明 |
---|---|---|
Template | 扱うXMLの雛型がある場合はこの要素の子要素として記述できます。 (デフォルト値と考えても良いです。) |
stringプロパティの1種ですが、XPathを設定するための専用ダイアログをエディタとして備えています。
名前 | 区分 | 説明 |
---|---|---|
sample | サンプルインスタンスをxfp中に保存する場合、保存先のxml型プロパティを指定します。 | |
source | XMLストリームのフィールド定義に対してXPathを指定する場合、 それが入力のXMLの場合は「in」を、自身の定義するXMLである場合は「out」を指定します。 | |
localVar | XPath式内で使用可能なローカル変数をCategoryプロパティとして定義させている場合は そのプロパティ名を指定します。 | |
additionalVar | その他にXPath式内で使用できる変数がある場合はその変数名を「;」で区切って指定します。 |
サーバー側のComponentに実装したpluginCallメソッドを実行してその結果をドロップダウンリストに表示するプロパティです。
使用するためには定義を行うだけではなくサーバー側で対応するpluginCallの実装を行わなければなりません。
名前 | 区分 | 説明 |
---|---|---|
component |
pluginCallを実行するコンポーネント名 |
pluginCallの実行時に設定するパラメーターはParam要素で指定できます。
名前 | 説明 |
---|---|
Param |
pluginCallに設定するパラメーターを指定します。 |
ここから先に説明するプロパティは汎用のプロパティというよりもコンポーネント(マッパー関数)の用途に応じて
カスタマイズされた特殊プロパティです。
場合によってはこのような専用のプロパティを作成することも出来ます。
データ型に応じてエディタの切り替わるプロパティです。
Const関数のデータプロパティとマッパー変数で使用されています。
名前 | 区分 | 説明 |
---|---|---|
typeProp | variant型をプロパティとして定義する場合に、データ型を表すプロパティのプロパティ名を指定します。 ここで指定されたプロパティの値の変更に応じてこのプロパティのエディタが切り替わります。 |
|
typeCol | variant型をCategoryPropertyの列として定義する場合に、データ型を表す列の列名を指定します。 ここで指定された列の値の変更に応じてこの列のエディタが切り替わります。 |
コンポーネント専用のプロパティです。
フロー上に存在するコンポーネント名を選択できます。
LoopEndコンポーネントで使用されています。
名前 | 区分 | 説明 |
---|---|---|
range |
選択対象とするコンポーネントの範囲を指定します。
省略された場合は「all」になります。 |
コンポーネント専用のプロパティです。
直前のコンポーネントのプロパティ名を選択できます。
BranchByComponentPropertyコンポーネント、BranchByExceptionコンポーネントで使用されています。
名前 | 区分 | 説明 |
---|---|---|
targetType |
選択対象とするプロパティの型を指定します。 例えば「string;int」と指定すればstring型とint型のプロパティのみが対象となり、「^exception」とするとExceptionプロパティ以外が対象となります。 |
コンポーネント専用のプロパティです。
直前のコンポーネントのフィールド名を選択できます。
RecordJoinコンポーネントで使用されています。
名前 | 区分 | 説明 |
---|---|---|
targetIndex | 入力となるコンポーネントが複数ある場合にそのインデックスを指定します。 省略された場合は0になります。 |
|
addComponentName | フィールド名の前にコンポーネント名をつけるかどうかをtrueまたはfalseで指定します。 省略された場合はfalseになります。 |
サブ関数専用のプロパティです。
サブ関数を選択ダイアログから選択できます。
コンポーネントもマッパー関数もBaseObjectという抽象基底クラスを継承したオブジェクトです。
BaseObjectにはその各種イベントをハンドルするためのListenerを登録することができます。
Listenerは「com.infoteria.asteria.flowbuilder2.event.BaseObjectListener」インターフェースを実装するクラスで次のイベントをハンドルできます。
Listener要素共通の属性としては次のものがあり、これ以外に個別のListenerが独自の要素や属性定義を持つこともあります。
名前 | 区分 | 説明 |
---|---|---|
class | 必須 | Listenerの実装クラスを指定します。 |
common | Listenerのインスタンスが同種のコンポーネントやマッパー関数で共有されるのかどうかを「true」「false」で指定します。 falseを指定した場合はフロー上のコンポーネントまたはマッパー関数と1対1でListenerのインスタンスも存在することになります。 省略された場合はtrueになります。 この属性は非推奨です。 あるListenerクラスがケースバイケースで共有可能になったり不可になったりすことはほとんどなく、 多くの場合クラスの設計によって共有可否は確定的に決まります。 そのため定義ごとに設定しなければならないこの属性で示すよりもCommonMarkインターフェースを実装するのが望ましい方法です。 |
汎用的な組み込みListenerとしては次のものがあります。
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.EditProperty
コンポーネント(またはMapper関数)のダブルクリック時に指定のプロパティのエディタを起動するListenerです。
また、ポップアップメニューに同じプロパティの編集メニューを追加することもできます。
名前 | 区分 | 説明 |
---|---|---|
property | ダブルクリックで編集を開始するプロパティ名を指定します。 switch属性が定義されない場合必須です。 |
|
switch | あるプロパティの値によって編集対象のプロパティを切り替えたい場合に切り替えのキーとなるプロパティ名を指定します。 | |
menuItem | プロパティ編集をポップアップメニューに組み込む場合のキャプションを指定します。 省略された場合はポップアップメニューは拡張されません。 |
switch属性が指定された場合、子要素としてCaseまたはDefault要素を定義して指定のプロパティの値に応じた編集対象プロパティを定義する必要があります。
Case要素は複数定義することができ、次の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
value | 必須 | 監視するプロパティ(switch属性で指定したプロパティ)の値を指定します。 value属性には
で区切ることにより複数の値をまとめて定義できます。 |
property | 必須 | 監視するプロパティの値がvalueで指定された値である場合に編集対象とするプロパティを指定します。 |
Default要素ではマッチするCase要素がなかった場合の編集対象プロパティを指定します。
名前 | 区分 | 説明 |
---|---|---|
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>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.FileEditProperty
remoteFileプロパティに特化したプロパティ編集のためのListenerで、 ダブルクリック時に指定のプロパティに既に値が設定されている場合はそのファイルを開き、 空の場合はエディタを起動(ファイル選択ダイアログを表示)します。
名前 | 区分 | 説明 |
---|---|---|
property | ダブルクリックで編集を開始するプロパティ名を指定します。 switch属性が定義されない場合必須です。 |
|
switch | あるプロパティの値によって編集対象のプロパティを切り替えたい場合に切り替えのキーとなるプロパティ名を指定します。 | |
menuItem | プロパティ編集をポップアップメニューに組み込む場合のキャプションを指定します。 省略された場合はポップアップメニューは拡張されません。 |
FileEditPropertyはEditProperyのサブクラスですのでswitch属性を指定した場合の子要素の定義方法はEditPropertyと同じです。
またその場合のtargetにはremoteFileプロパティ以外も指定することができます。
例 - FileGetコンポーネントはダブルクリックで「ファイルパス」プロパティの編集を開始します。
<Listener class="com.infoteria.asteria.flowbuilder2.plugin.FileEditProperty" menuItem="ファイルの編集..." property="FilePath"/>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SubFlowController
subFlowプロパティのコントロールを行うための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>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SearchConditionSpec
変数ナビの検索に指定のプロパティが条件式であるものとして検索対象に含めるためのListenerです。
例えば指定のプロパティの値が「$flow.var1 = 0」であれば変数ペインでフロー変数「var1」を選択した時の変数ナビの表示にこのコンポーネントが加わります。
また変数名を変更した場合にもこのListenerでプロパティを監視しておくと自動的に条件式に変数名の変更が反映されます。
名前 | 区分 | 説明 |
---|---|---|
property | 必須 | Condition式のプロパティ名を指定します。 |
例 - BranchStartコンポーネントの「Condition」プロパティを変数検索の対象にします。
<Listener class="com.infoteria.asteria.flowbuilder2.plugin.SearchConditionSpec" property="Condition"/>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SearchExternalFile
プロパティ検索でプロパティ値として指定された外部ファイルを検索対象に含みます。
(検索ダイアログで「拡張検索」がチェックされた場合のみ有効です。)
名前 | 区分 | 説明 |
---|---|---|
filepathProp | 必須 | 外部ファイル名が指定されているプロパティ名を指定します。 |
encodingProp | 外部ファイルのエンコーディングが指定されているプロパティ名を指定します。 指定がない場合はプラットフォームのデフォルトエンコーディングとしてファイルを検索します。 |
例 - Velocityコンポーネントの「TemplateFilename」プロパティで指定されたファイルをプロパティ検索の対象にします。
<Listener class="com.infoteria.asteria.flowbuilder2.plugin.SearchExternalFile" encodingProp="TemplateEncoding" filepathProp="TemplateFilename"/>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.ReplaceComponent
コンポーネントを別のコンポーネントに置き換えるメニューを追加するListenerです。
置き換え対象のコンポーネントは子要素「Component」で定義します。
名前 | 区分 | 説明 |
---|---|---|
caption | 必須 | 追加するメニューのキャプションを指定します。 |
calcEnabled | 置換可能かどうかのチェックを行うかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 |
|
ignoreInvisible | 非表示のプロパティ値を置換対象から外すかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 |
名前 | 区分 | 説明 |
---|---|---|
Component | 必須 | Listener要素の子要素として置き換えるコンポーネント名をname属性に指定します。 |
Property | Component要素の子要素として置き換え時に同時に変更するプロパティを定義します。 name属性にプロパティ名を、要素内容に置き換える値を指定します。 |
例 - RDBGetコンポーネントはSQLCallコンポーネントに置き換えることができます。
<Listener caption="コンポーネントの置き換え" class="com.infoteria.asteria.flowbuilder2.plugin.ReplaceComponent"> <Component name="SQLCall"> <Property name="Mode">SQL-Record</Property> </Component> </Listener>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.ReplaceFunction
マッパー関数を別のマッパー関数に置き換えるメニューを追加するListenerです。
置き換え対象のマッパー関数は子要素「Function」で定義します。
(子要素の名前がFunctionに変わる以外はコンポーネントの置き換えと同じです。)
名前 | 区分 | 説明 |
---|---|---|
caption | 必須 | 追加するメニューのキャプションを指定します。 |
calcEnabled | 置換可能かどうかのチェックを行うかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 |
|
ignoreInvisible | 非表示のプロパティ値を置換対象から外すかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 |
名前 | 区分 | 説明 |
---|---|---|
Function | 必須 | Listener要素の子要素として置き換えるマッパー関数名をname属性に指定します。 |
Property | Function要素の子要素として置き換え時に同時に変更するプロパティを定義します。 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>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.IconReplace
パレット上で使用されているアイコンをドロップ時に別のアイコンに変更するためのListenerです。
Split関数などドロップ時のアイコンの大きさが通常のアイコンサイズよりも大きい場合や、
アイコンに文字列を描画したい場合に使用します。
名前 | 区分 | 説明 |
---|---|---|
icon | 置き換えるアイコンのファイル名 | |
label | アイコンに描画する文字列 |
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.LaunchExternalApp
外部アプリケーションを起動するためのListenerです。
このListenerは実行時には
という順序で動作します。
デフォルトではpreExecute、postExecuteの各メソッドは
という処理を行いますが、通常はこのListenerのサブクラスを作成してpreExecute/postExecuteでの処理を独自に実装します。
(ExcelBuilder、PDFBuilderはそのようにして作成されています。)
名前 | 区分 | 説明 |
---|---|---|
command | 必須 | 外部アプリケーションを実行するためのコマンド |
appName | 必須 | 実行中ダイアログで表示される外部アプリケーション名 |
menuItem | 外部アプリケーション実行メニューのキャプション。 省略された場合はメニューは拡張されず、ダブルクリック時にのみ外部アプリケーションが実行されます。 |
|
execDir | 外部アプリケーションの実行フォルダー 「toolshedDir」を指定した場合は「OSUSER_HOME/.asteria/toolshed」が実行フォルダーになります。 「installDir」を指定した場合は「DESIGNER_HOME」が実行フォルダーになります。 それ以外の値を指定した場合は絶対パスまたはinstallDirからの相対パスとして評価されます。 省略時は「installDir」となります。 |
子要素として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>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SelectTemplate
コンポーネント(マッパー関数)の右クリックメニューに標準で存在する「テンプレートから選択」をダブルクリック時に実行するListenerです。
通常テンプレートファイルはユーザーが「テンプレートに追加」を行うことではじめて作成され、それまでは「テンプレートから選択」は実行できませんが、
このListenerではテンプレートファイルがない場合にjarファイル内からテンプレートファイルを抜き出すことができます。
言い換えればコンポーネント開発者が最初から標準のテンプレートファイルをjarファイル内に組み込んで提供することができます。
名前 | 区分 | 説明 |
---|---|---|
filename | jarファイル内のテンプレートファイル名 テンプレートファイルはClass要素で指定したクラスと同じパッケージ内に配置する必要があります。 |
例 - OnSheetRestコンポーネントでは標準でOnSheetのWebAPIの設定がテンプレートファイルで提供されています。
<Listener class="com.infoteria.asteria.flowbuilder2.plugin.SelectTemplate" filename="OnSheetRest_jp.xml"/>
プロパティでの値の設定時に処理を行うPropertyListenrを作成することができます。
PropertyListenerは「com.infoteria.asteria.gui.property.event.PropertyChangeListener」インターフェースを実装するクラスで次のイベントをハンドルできます。
PropertyListener要素共通の属性としては次のものがあり、これ以外に個別のPropertyListenerが独自の要素や属性定義を持つこともあります。
名前 | 区分 | 説明 |
---|---|---|
class | 必須 | PropertyListenerの実装クラスを指定します。 |
target | 必須 | Listenerを追加する対象のPropertyのnameを指定します。 対象がストリーム定義を一つだけ持つコンポーネントの場合は「Stream/プロパティ名」を指定することでストリームプロパティ をTargetにすることもできます。(ただし、ストリームプロパティはフォーマットによって変化するので指定できるのは事実上 「Stream/Format」のみです。) |
common | PropertyListenerのインスタンスが同種のコンポーネントで共有されるのかどうかを「true」「false」で指定します。 falseを指定した場合はフロー上のコンポーネントまたはマッパー関数と1対1でListenerのインスタンスも存在することになります。 省略された場合はtrueになります。 この属性は非推奨です。 あるPropertyListenerクラスがケースバイケースで共有可能になったり不可になったりすことはほとんどなく、 多くの場合クラスの設計によって共有可否は確定的に決まります。 そのため定義ごとに設定しなければならないこの属性で示すよりもCommonMarkインターフェースを実装するのが望ましい方法です。 |
汎用的な組み込みPropertyListenerとしては次のものがあります。
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.SimplePropertyController
SimplePropertyControllerはあるプロパティの値の変更と同時に別の状態を変更することのできるPropertyListenerです。
SimplePropertyControllerはプロパティ値に対応する動作の定義のためにCase要素とDefault要素を使用します。
Case要素はPropertyListener要素の子要素として複数定義でき、Default要素はPropertyListener要素の子要素としてひとつだけ定義できます。
それぞれのCase要素とDefault要素では動作を指定するための要素を複数定義できます。
Case要素は複数定義することができ、次の属性を持ちます。
名前 | 区分 | 説明 |
---|---|---|
value | 必須 | 監視するプロパティ(PropertyListenerのtarget属性で指定したプロパティ)がこの値になった時に、 子要素で定義されたアクションを実行します。 value属性には
で区切ることにより複数の値をまとめて定義できます。 |
Default要素は属性を持ちません。
Default要素では監視するプロパティの値がどのCase要素ともマッチしなかった場合の動作を定義します。
CaseおよびDefault要素がもつことのできる子要素には次のものがあります。
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要素を使用すると監視するプロパティ値の変更に連動してアイコンを変更することができます。
またアイコン上に文字列を描画することもできるので、フロー内のアイコンをより説明的にすることが可能です。
名前 | 区分 | 説明 |
---|---|---|
filename | アイコンのファイル名 | |
label | アイコンに描画する文字列 |
Message要素を使用すると監視するプロパティ値の変更に連動して要素内容として定義した文字列をメッセージペインに出力することができます。
メッセージはプロパティのオーナーであるオブジェクトとひもづいているのでダブルクリック時にはそのワークスペースの表示がそのオブジェクトにジャンプします。
名前 | 区分 | 説明 |
---|---|---|
level | 「info」「warn」「error」でメッセージのレベルを指定します。 省略時は「info」になります。 (level指定による動作の違いはメッセージペインでの文字色の違いのみです。) |
Connector要素を使用すると監視するプロパティ値の変更に連動してコンポーネントの入出力コネクタを増減させることができます。
ただし現在はまだ仕様変更の可能性があるため使用することはできません。
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>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.DescriptionSynchronizer
指定したプロパティの値にDescription内容が連動します。
ユーザーが自分でDescriptionを編集してプロパティ値とDescription内容が異なる状態になった場合は連動しなくなります。
例 - Const関数では「データ」プロパティ値とDescriptionが連動します。
<PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.DescriptionSynchronizer" target="Data"/>
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.ConnectorController
int型のプロパティを指定してその設定値にコンポーネントの入出力コネクタ数を連動させます。
名前 | 区分 | 説明 |
---|---|---|
mode | プロパティ値によって連動して増減させるコネクタが入力コネクタなのか出力コネクタなのかを指定します。
|
例 - OnSheetInputComponentでは隠しプロパティ「OutputCount」と出力コネクタ数が連動します。
<Property name="OutputCount" type="int" visible="false">1</Property> <PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.ConnectorController" mode="output" target="OutputCount"/>
ConnectorControllerの使い方としてはこのように監視するプロパティは非表示にしておき別途独自に作成したコンポーネントエディタ からプロパティを設定して制御することが多いです。
クラス名 - com.infoteria.asteria.flowbuilder2.plugin.FunctionOutputPropertyListener
int型のプロパティを指定してその設定値にマッパー関数の出力コネクタ数を連動させます。
名前 | 区分 | 説明 |
---|---|---|
drawNumber | 出力数が2以上になった場合、マッパー関数のアイコンは元のアイコンが縦に並べられた形式になります。 その時にアイコンに出力番号の数値を描画するかどうかを「true」「false」で指定します。 省略された場合はtrueになります。 |
例 - JavaInterpreter関数やSplit関数では「出力数」プロパティ値と出力コネクタ数が連動します。
<PropertyListener class="com.infoteria.asteria.flowbuilder2.plugin.FunctionOutputPropertyListener" target="Count"/>