1

Spring MVC を使用して Web アプリを開発しています。簡単に言えば、ユーザーがさまざまなタイプ (.csv、.xls、.txt、.xml) のファイルをアップロードすると、アプリケーションはこのファイルを解析し、さらに処理するためにデータを抽出します。問題は、ファイルの形式が頻繁に変更される可能性があることです。したがって、迅速かつ簡単にカスタマイズする方法が必要です。Talend に少し慣れてきたので、試してみて、アプリの ETL ツールとして使用することにしました。この短いチュートリアルでは、Java アプリ内から Talend ジョブを実行する方法を示します - http://www.talendforge.org/forum/viewtopic.php?id=2901 ただし、Talend を使用して作成されたジョブは、物理ファイル、ディレクトリ、またはデータベースに対して読み取り/書き込みを行うことができます。Javaオブジェクトをパラメーターとして指定し、通常のJavaメソッドと同じようにJavaオブジェクトを返すように、Talendジョブを変更することはできますか? たとえば、次のようなものです。

String[] param = new String[]{"John Doe"};
String talendJobOutput = teaPot.myjob_0_1.myJob.main(param);

ここで、teaPot.myjob_0_1.myJob はアプリに統合された talend ジョブです

4

3 に答える 3

2

私は似たようなことをしたと思います。tMapを使用してtallendでマッピングを作成し、これをtalendジョブ(java se programm)としてエクスポートしました。そのジョブのライブラリを含めると、他の人が説明したようにtalendジョブを実行できます。

任意のJavaオブジェクトを渡すには、すべてのtalendジョブに存在する次のメソッドを使用できます:

public Object getValueObject() {
    return this.valueObject;
}

public void setValueObject(Object valueObject) {
    this.valueObject = valueObject;
}

あなたの仕事では、このオブジェクトをキャストする必要があります。たとえば、HashMaps のリストを配置し、Java リフレクションを使用して行を入力できます。そのためにはtJavaFlexまたはカスタムコンポーネントを使用してください。

この方法を使用すると、Talendでデータのマッピングを視覚的に調整できますが、生成されたコードをJavaアプリケーションのライブラリとして引き続き使用できます。

于 2013-09-24T15:25:20.350 に答える
1

Talendのアーキテクチャはスタンドアロンアプリのように作られ、Javaのmain()メソッドと同じように「メイン」エントリポイントがあるだけなので、これは不可能だと思います。

public String[][] runJob(String[] args) {
    int exitCode = runJobInTOS(args);
    String[][] bufferValue = new String[][] { { Integer.toString(exitCode) } };
    return bufferValue;
}

つまり、Talend実行エントリポイントは入力として文字列配列のみを受け入れ、出力として何も返しません(システムリターンコードを除く)。

そのため、Talend (生成された) コードをライブラリとしてリンクすることはできませんが、起動前に (コンテキスト変数を使用して、私の他の回答を参照してください) パラメーター化することしかできない分離ツールとしてリンクすることはできません。

Talendヘルプセンターまたはフォーラムで説明されている唯一の統合は、「外部」ジョブ実行としてのものであることがわかります...:

Talendナレッジベース「外部JavaアプリケーションからのTalendジョブの呼び出し」記事

Talendコミュニティフォーラム「TalendへのJavaオブジェクト」トピック

Talendを目的のETLツールとして使用する場合は、アプリケーションのアーキテクチャを再考する必要があるかもしれません.

于 2013-09-12T16:13:06.083 に答える
1

Talend ETLの観点から: ジョブの実行環境 (アップロードされたファイルの物理ディレクトリなど) をパラメーター化する場合は、ここで説明されているように、実行時に構成ファイルからロードできるコンテキスト変数を使用する必要があります : https://help.talend.com/display/TalendOpenStudioforDataIntegrationUserGuide53EN/2.6.6+Context+settings

于 2013-09-12T16:19:05.453 に答える