ラベル Asteria の投稿を表示しています。 すべての投稿を表示
ラベル Asteria の投稿を表示しています。 すべての投稿を表示

2009年1月23日金曜日

Asteriaの関数内部でflow変数等を取得するには。

■Flow変数
Value v = context.getFlowVariables().getValue(変数名);

■System変数
Value v = context.getSystemVariables().getValue(変数名);

■外部変数
ExternalVariables vals = context.getExternalVariables(変数名);

2009年1月20日火曜日

Asteriaの関数内部でData登録を行う時は。

関数中でData登録処理を行う場合はこの処理を最後に追加する

try {
context.addTransaction(context.getConnectionTransaction(ConnectionProperty));
} catch (FlowException e) {
throw new MapperException(e);
}

2009年1月15日木曜日

Asteriaのループ処理。

飽くまで自己だけでLoopするコンポーネントの場合。Flow図中でLoopコンポーネントを利用してLoopする場合は常にexecuteが実行される。

■Component側
まずLoopをさせるにはコンポーネントのexecuteメソッドにて最後にfalseを返す。
そうするとexecuteLoop処理でLoopを開始する。

executeLoopメソッドの最後に変えすフラグは以下の通り。
LOOP_END・・・Loop処理を実行し、Loopは終了した
LOOP_CONTINUE・・・Loop処理を実行し、Loopは継続する
LOOP_NOTHING・・・Loop処理は実行されなかった

■定義ファイル側
<Output loop="true" streamPassThrough="true"/>

を追加する

2008年12月24日水曜日

外部JavaからAsteriaを呼ぶ

基本的にFlowclientとFlow自体、及び結果の3種類が必要。

Flowの準備
FlowRequest flow = new FlowRequest();
flow.setUserName(value);
flow.setProjectName(value);
flow.setFlowName(value);
flow.setSessionId(value);
flow.setLifetime(value);
flow.setExecuteMode(value);


引数の設定
VariableList params = new VariableList();
params.putValue(KEY, new Value(VALUE));
flow.setParams(params);


client準備
FlowExecuteClient client = new FlowExecuteClient(IP、ポート);
client.login(ユーザ、パス);


実行と結果取得
FlowResponse response = client.execute(flow);

2008年11月26日水曜日

AsteriaでDBを扱う時のやり方

■init
この時点でPropertyの値は取得出来る
PreparedStatementの作成

■execute
ここではinitの中で作成したpreparedStatementを利用するだけ。
なおDBにデータを登録する際はこの中でcommitする事

■term
PreparedStatementの解放

なおAsteria用独自Componentを作成する際、その内部でStreamExceptionを投げてはいけない。
ComponentException、ComponentExceptionByMessageCodeを利用する事。

後当たり前だけど、DBがDate型でStreamがDate型の所にStringのValueを入れても、DBに登録される時はDate型から値を取得するからNullとして扱われる。

2008年10月27日月曜日

Asteriaコンポーネントで入力Dataを扱う。

Asteriaコンポーネントで多分大きく関与してくるのは
RecordクラスFieldクラス


// 入力Dataの項目数を取得する。
this.inDef = this.getInputConnector().getStream().getFieldDefinition();
// 入力実Data一行を取得する。
Record record = this.getInputConnector().getStream().getRecord();
// 入力実Dataを一行ずつ読み込みループする
while (record != null) {
// ここに行いたい処理を書く。
// this.inDef.getFieldCount()で入力Dataの総項目数を取得してそれを回す。
for (int i = 0; i < this.inDef.getFieldCount(); i++) {
// 項目名をとる
Field fld = this.inDef.getField(i);
Field fld = record.getField(項目名);
Value val = record.getValue(i);
Value val = record.getValue(項目名);
}
record = record.nextRecord();
}

2008年10月21日火曜日

Asteria標準Componeny【RDBPut】の動作

■RDBPut - RDBへの出力

コンポーネントプロパティ→実行する処理
の部分の設に「Insert/Update」と「Update/Insert」がある。

共通するのはエラーがでたら後者を試すという事。
この二つの設定の差異が最も出るのは「有ったら更新なければ追加」という処理を行いたい時。

■パターンA
・システムで利用するKeyColumnと外部取込時に利用するKeyColumnが一致している場合
・外部取込に利用するKeyColumnにPrimaryKey、Uniqueが張られている場合
こちらの条件に当てはまる場合は特に設定の差異を気にする事なく「有ったら更新なければ追加」を実現してくれる。

■パターンB
・システムで利用するKeyColumnと外部取込時に利用するKeyColumnが一致していない場合
・外部取込に利用するKeyColumnにPrimaryKey、Uniqueが張られていない場合
こちらの環境下では差異が発生する。
「Insert/Update」→全て新規追加
「Update/Insert」→「有ったら更新なければ追加」を実現

2008年10月16日木曜日

Asteria独自ComponentのAntビルド

基本的にAsteria FlowDesignerで作成したbuild.xmlに必要な事は全て書かれているのでこれをベースに組み立てる。
・・・んだがエラー発生。
「xercesImpl.jar」がないとか言われた。
確認してみるとFlowDesignerのlibに存在はしているっぽい。
なのでbuild.xmlを書き換えて読み込むライブラリを追加する。
build.xmlの42行目辺りに追記

<taskdef name="mergeDefine" classname="com.infoteria.asteria.flowengine2.tool.anttask.MergeDefineTask">
<classpath>
<fileset dir="${designer.lib}">
<include name="flowengine2.jar">
<include name="flowutil.jar">
<include name="ipex.jar">
<include name="asutil.jar">
<include name="oro.jar">
<include name="xercesImpl.jar"> ←追加
</include></include></include></include></include></include></fileset>
</classpath>
</taskdef>

2008年10月15日水曜日

Asteriaカスタム関数の作り方

■Asteria マッパー関数開発者ガイド

Asteriaを起動して適当にProjectを開き、マッパー関数を適当に置く。
でそのマッパー関数をダブルクリックする。

で、項目マッピング画面が出たら上の方にある関数一覧で「制御」タブを開く。
右から2番目にある「JAVAインタプリンタ」をドラッグ&ドロップして適当な所に置く。

おいた「JAVAインタプリンタ」を右クリックして「カスタム関数の作成」を選択。

そうするとカスタムコンポーネント作成と同じウィザード画面が出てくるのでこれを設定する。


■コンポーネント名
必ず「.」を含ませる。「.」を含まないComponentを作れるのはインフォテリアの特権。
一般的な会社なら「会社名.部署.Component名」とかになるか。

■コンポーネント表示名
日本語OK。FlowDesigner上で表示される名前。

■コンポーネントを初期表示するタブ。
自由。まぁ分かり易い場所に。

■コンポーネントのツールチップ
自由。まぁ分かり易い様に。

■コンポーネントのクラス名
「コンポーネント名」の最後の部分とかにするのが妥当かなと思われる。

■コンポーネントのパッケージ名
実際のJavaソースのフォルダ構成になる部分。
ここは注意が必要。

■生成したフォルダを保存するフォルダ
特にここじゃないとダメという指定はない。
ただおそらくEclipseを使っての開発を行っている人が多いと思うので、EclipseのProject内に出すのが妥当か。

2008年10月14日火曜日

Asteriaの癖等

■FileGetコンポーネント
CSV取込等でヘッダを含まないで取り込みたい場合は「読み取り開始行」の値を2にする。
これを設定しないと下記みたいなエラーが出て動作しない。
フィールド値の取得に失敗しました : [Record=0][Field=XXX][For input string: "XXX"]

Asteria導入

Asteriaは2つのソフトで構成される。
一個がクライアント型の設定ソフトである「Asteria FlowDesigner」。
もう一個がサーバプログラムである「Asteria WARP」。

これら二つを一台のPCに、初期設定のままインスコすると下記の様になる。
C:\Program Files\ASTERIA WARP Flow Designer
C:\Program Files\asteriawarp

という形で2つプログラムフォルダが出来る。
なお初期設定のユーザは「/asu」でパスワード無し。

さてお約束通りOracleのJDBCドライバがAsteriaに同梱されてないのでどっかから入手してくる。「ojdbcXX.jar」ってファイル。XXの部分は適当な数字。今(2008/10)だと14か?
でそのファイルを「Asteria WARP」側のライブラリに追加する。「FlowDesigner」の方に追加しても意味がない。
初期設定のままインスコしたなら下記のディレクトリ。
C:\Program Files\asteriawarp\common\ext

ここに「ojdbcXX.jar」をおく。
で「Asteria WARP」を起動する。
既に起動している人は停止して起動。つまり再起動。



参考サイト
■Asteria実践ガイド(ver一個前)