ナイフ二次開発ノードのプロジェクト構造

目次

1.NumberFormatterNodeFactory.java

2.NumberFormatterNodeModel.java

3.NumberFormatterNodeDialog.java(オプション)

4.NumberFormatterNodeView.java(オプション)

5.NumberFormatterNodeFactory.xml

6.default.png

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ノードの説明は、ルートタグの子で指定されます。いくつかの例については、ファイルの内容をご覧ください。 同じパッケージ内に配置されている必要があり  、それは同じ名前を持つ必要が.xmlNodeFactory(ファイルの末尾のみが異なります)。

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うなずきガイドラインを参照してください 

 

おすすめ

転載: blog.csdn.net/weixin_43135178/article/details/115016431