目次
1.NumberFormatterNodeFactory.java
2.NumberFormatterNodeModel.java
3.NumberFormatterNodeDialog.java(オプション)
4.NumberFormatterNodeView.java(オプション)
5.NumberFormatterNodeFactory.xml
7.plugin.xmlおよびMETA-INF / MANIFEST.MF
ノードの動作
、ダイアログとビューの外観、ノードの説明を含む
1つのXMLファイル、およびノードアイコン(この場合はデフォルトアイコン)として使用される画像を実装する4つのJavaクラスがあります。 KNIME AnalyticsPlatformのワークフロービュー。
一般的に、ノードの実装は以下のクラスで構成します: NodeFactory
、 NodeModel
、 NodeDialog
、 NodeView
。
1.NumberFormatterNodeFactory.java
NodeFactory
ノードを構成するすべての部品をバンドル。このため、工場はの作成方法を提供し NodeModel
、 NodeDialog
と NodeView
。さらに、ファクトリはKNIME拡張ポイントを介して登録 され、ノードがフレームワークによって検出可能になり、KNIME AnalyticsPlatformのノードリポジトリビューに表示されます。このファイルの登録はで行われます plugin.xml
(plugin.xml
以下のファイルの説明を 参照)。
2.NumberFormatterNodeModel.java
に は、ノードが実行することになっていることNodeModel
の実際の実装が含まれています。さらに、ノードの入力と出力の数を指定します。この場合、ノードモデルは実際の数値フォーマットを実装します。
3.NumberFormatterNodeDialog.java
(オプション)
NodeDialog
あなたは(ダブルクリック)を設定したときに開くダイアログウィンドウ提供KNIME解析プラットフォーム内のノードを。これは、ノード固有の構成設定を調整するためのGUIをユーザーに提供します。Number Formatter ノードの場合、 これはユーザーがフォーマット文字列を入力できる単純なテキストボックスです。別の例は、ファイルリーダーノードのファイルパスです。
4.NumberFormatterNodeView.java
(オプション)
NodeViewは、ノードの出力のビューを提供します。Number Formatter ノードの場合 、出力は単純なテーブルであるため、ビューは表示されません。一般に、ビューの例は、デシジョンツリーモデルを作成するノードのツリービューです。
5.NumberFormatterNodeFactory.xml
このXMLファイルには、ノードの説明とノードのメタデータが含まれています。ルート要素は<knimeNode> … </knimeNode>
タグである必要があります 。このタグの属性は、ノードアイコンの場所(icon=”…”
)とノードのタイプ()をさらに指定しますtype=”…”
。これは、前にノードウィザードのダイアログで選択したタイプであることに注意してください。最も一般的な種類があり Source
、 Manipulator
、 Predictor
、 Learner
、 Sink
、 Viewer
、と Loop
。ノードの説明は、ルートタグの子で指定されます。いくつかの例については、ファイルの内容をご覧ください。 同じパッケージ内に配置されている必要があり 、それは同じ名前を持つ必要が.xml
NodeFactory
(ファイルの末尾のみが異なります)。
6.default.png
これは、ワークフローエディタに表示されるノードのアイコンです。ノードアイコンへのパスは、NumberFormatterNodeFactory.xml
( タグのicon
属性)で 指定されます knimeNode
。この場合、アイコンは疑問符を表示する単なるプレースホルダーです。独自のノードの場合は、ノードの機能を表す適切なイメージに置き換えます。解像度は16x16ピクセルである必要があります。
.xml
ノードの実装を定義するJavaクラスとファクトリとは別に 、プロジェクト構成を指定する2つのファイルがあります。
7.plugin.xml
そして META-INF/MANIFEST.MF
これらのファイルには、他のプラグインや前述の拡張ポイントへの依存関係など、拡張プロジェクトに関する重要な構成データが含まれています。をダブルクリックして plugin.xml
Eclipseの概要を開き、いくつかの構成オプションを確認できます(たとえば、KNIMEノードウィザードで入力した値はGeneral Information
、左側の概要ページに表示されます )。ただし、現時点では値を変更する必要はありません。
数値フォーマッタノードの実装:
プロジェクトの構造を確認したら、実装の詳細をいくつか見ていきます。以前に作成したプロジェクトのサンプルコードには、実装されたメソッドのコードに詳細なコメントがすでに含まれているため、最も重要な部分について説明します( リポジトリのorg.knime.examples.numberformatter
フォルダーにあるリファレンス実装も参照して ください knime-examples
)。
通常、 Number Formatter ノードはデータテーブルを入力として受け取り、ユーザー指定のフォーマット文字Double
列を入力テーブルの各列に適用し ます。簡単にするために、出力テーブルには、フォーマットされた数値列のみが文字列列として含まれています。これは基本的にString.format(…)
、Double
値のリストに適用されるJava関数の機能を、 KNIME AnalyticsPlatformで使用可能なノードにラップします 。
各ノードが実装しなければならない最も重要なメソッドを見ていきましょう。ノードの機能は、次のNumberFormatterNodeModel.java
クラスに実装されています 。
protected NumberFormatterNodeModel() {
super(1, 1);
}
super(1, 1)
ノードモデルのコンストラクターでの 呼び出しは、ノードが持つ必要のある出力テーブルと入力テーブルの数を指定します。この場合、それは1つの入力テーブルと1つの出力テーブルです。
BufferedDataTable[] execute(final BufferedDataTable[] inData, final ExecutionContext exec)
ノードの実際のアルゴリズムは、execute
メソッドに実装されてい ます。このメソッドは、先行するすべてのノードが正常に実行された後でのみ呼び出されるため、すべてのデータが入力ポートで使用可能になります。入力テーブルはinData
、コンストラクターで指定された数のデータテーブルを含む指定された配列で使用できます 。したがって、配列のインデックスはノードのポートインデックスに対応します。入力のタイプはです BufferedDataTable
。これは、KNIME AnalyticsPlatformのすべての表形式データの標準タイプです。テーブルの永続性(ワークフローが保存されるときなど)は、フレームワークによって自動的に処理されます。さらに、 BufferedDataTable
データは必要に応じて自動的にディスクにフラッシュされるため、メインメモリのサイズよりも大きいデータを処理できます。テーブルには次のものが含まれます DataRow
オブジェクト。これにはDataCell
オブジェクトが含まれ ます。 DataCell
■データへの実際のアクセスを提供します。 倍精度の浮動小数点数を含むなどDataCell
、すべてのタイプのデータに対して多くの実装 があります DoubleCell
(実装のリストについては、DataCell
クラスのタイプ階層を参照してください )。さらに、それぞれ DataCell
が1つまたは複数のDataValue
インターフェイスを実装し ます。これらは、セルが持つアクセス方法、つまりセルを表すことができるタイプを定義します。たとえば、a としての BooleanCell
実装 IntValue
は、 Boolean
0と1として簡単に表すことができます。したがって、それぞれに対して、 DataValue
いくつかの互換性のあるDataCell
クラスが存在する可能性があり ます。 メソッド
の2番目の引数 exec
は、 ExecutionContext
作成/変更する手段を提供するものです。 BufferedDataTable
オブジェクトを作成し、実行ステータスをユーザーに報告します。新しいものを作成する最も簡単な 方法は、DataTable
の createDataContainer(final DataTableSpec spec)
方法を使用すること ExecutionContext
です。これにより、行を追加できる空のコンテナが作成されます。追加された行はDataTableSpec
、データコンテナが作成されたデータに準拠している必要があります 。たとえば、コンテナが2つのDouble
列を含むテーブル仕様で作成された場合、コンテナに 追加される各行には2つのが含まれている必要があります DoubleCells
。コンテナへの行の追加が完了したら、close()
メソッドを使用してコンテナを閉じ 、BufferedDataTable
withを取得 し getTable()
ます。テーブルを作成するこの方法は、サンプルコードでも使用されています(を参照)。 NumberFormatterNodeModel.java
)。新しいデータコンテナを作成する以外に、既存の入力テーブルを変更するためのより強力な方法があります。ただし、これらはこのクイックスタートガイドの範囲には含まれていませんが、のメソッドを確認できます ExecutionContext
。
この execute
メソッドはBufferedDataTable
、コンストラクターで指定されたテーブル数の長さの出力オブジェクトの配列を返す必要があります 。これらのテーブルには、ノードの出力が含まれています。
DataTableSpec[] configure(final DataTableSpec[] inSpecs)
この configure
方法には2つの責任があります。まず、ユーザーが指定した設定に関して、受信データテーブルの仕様がノードの実行に適しているかどうかを確認する必要があります。たとえば、ユーザーがノードダイアログで特定の列タイプを許可しない場合、この設定に従って入力テーブルに該当する列がまだあるかどうかを確認する必要があります。次に、入力に基づいてノードの出力のテーブル仕様を計算します。例: NumberFormatter ノードが2つのDouble
列と1つの列を含むテーブルをString
入力として取得する と します。次に、このメソッドは、DataTableSpec
2つDataColumnSpec
のタイプ を含むString
(配列でラップすることを忘れないでください)を 返す必要が ありDouble
ます( 列は次のようにフォーマットされます) String
、他のすべての列は無視されます)。execute
メソッドと同様に、 メソッド configure
は入力DataTableSpec
オブジェクトの配列を使用して呼び出され DataTableSpec
、計算されたテーブル仕様を含む出力オブジェクトの配列を出力し ます。着信テーブルの仕様がノードの実行に適していない場合、またはユーザー提供の構成に適合しない場合は、ユーザーにInvalidSettingsException
情報を提供するメッセージを付けてをスロー します。
saveSettingsTo(final NodeSettingsWO settings)
そして
loadValidatedSettingsFrom(final NodeSettingsRO settings)
これらのメソッドは、ノードの動作を制御する設定、つまりユーザーがノードダイアログに入力した設定の読み込みと保存を処理します。これは、ノードモデルとノードダイアログ間の通信、およびワークフローの保存時にユーザー設定を保持するために使用されます。どちらのメソッドもNodeSettings
、設定を格納し、ファイルへの書き込みまたはファイルからの読み取りを管理するオブジェクト(読み取り専用(RO)および書き込み専用(WO)バージョン)で呼び出され ます。 NodeSettings
オブジェクトは、それゆえ、それは書き込み又は設定オブジェクトから読み取ることが容易であり、キー値記憶です。NodeSettings
Eclipseエディターでオブジェクトの提供されたメソッドを見 てください。この例ではNodeSettings
、SettingsModel
オブジェクトを使用してユーザー定義形式の文字列を格納しているため、設定をオブジェクトに 直接書き込むことはありません 。 SettingsModel
オブジェクトは、NodeSettings
(を受け入れるメソッドを介して NodeSettings
)から設定を読み書きする方法をすでに知っており 、モデルとダイアログの間の設定の同期を簡単に保つのに役立ちます。さらに、これらを使用して、設定のロードと保存がすでに処理されている単純なダイアログを作成できます。
Number Formatter ノード の実際のアルゴリズムは execute
、NumberFormatterNodeModel.java
クラスのメソッドにあり ます。上記のクラスのコードを読んで、ノードのすべての部分をより深く理解することをお勧めします。ノードがどのように動作するかについてのより完全な説明については、KNIMEうなずきガイドラインを参照してください 。