テーブルを監視する tibco adb アダプターを使用して XML メッセージを発行しようとしています。日付をミリ秒単位の long 値として格納する列がテーブルにあります。XML マーシャリングの一部として、この long 値を日付に変換する方法はありますか?
-ティア
テーブルを監視する tibco adb アダプターを使用して XML メッセージを発行しようとしています。日付をミリ秒単位の long 値として格納する列がテーブルにあります。XML マーシャリングの一部として、この long 値を日付に変換する方法はありますか?
-ティア
次の x-path を使用して、ミリ秒を datetime xml 値に変換できます。
tib:add-to-dateTime(tib:translate-timezone('1970-01-01T00:00:00Z', tib:get-timezone-from-dateTime(current-dateTime())), 0, 0, 0, 0, 0, (<your input in ms> div 1000))
これが行うことは次のとおりです。
1) タイムゾーンを見つけます:
tib:get-timezone-from-dateTime(current-dateTime())
2) 基準日 (1970-01-01) を正しいタイムゾーンに移動します。
tib:translate-timezone('1970-01-01T00:00:00Z' <result above>)
3) 入力エポックに秒数を追加します。
tib:add-to-dateTime(<result above>, 0, 0, 0, 0, 0, (<your input in ms> div 1000))
このソリューションの欠点は、ミリ秒の精度が失われることに注意してください。最終日時は秒単位です。
最終結果でミリ秒を維持する必要がある場合は、これを外部 Java ライブラリに委譲することをお勧めします (誰かが既に提案したように)。資源。
これを行うには、カスタムJavaプロセスを作成する必要がありました-誰かがそれを便利だと思った場合に備えて
私はこれにかなり遭遇しました。Adbのオプションを使用して、すべてのデータを他のテーブルに書き込みます。次にできることは次のとおりです
オプション11.他のテーブルのデータ型をvarcharに変更します。2。トリガーを更新してe変換を実行します。3。スキームをbwで更新します。-これにより、Adbの更新にGUIを使用できなくなります
オプション2Adbに使用する別のパターンは、アクションのトリガーとしてAdbを使用することです。したがって、Adbからのすべての情報を使用する代わりに、キーを使用します。ストアドプロシージャへのコールバックを実行して、残りのプロシージャを取得します。ここで、フォーマットの問題を修正します。
したがって、bwでdb呼び出しを行うことに慣れている場合は、2番目のオプションがはるかに簡単でエラーが発生しにくくなります。Tibcoを約3年間使用しており、アクティブなデータベースアダプタにいくつかの制限があることがわかりました。舞台裏では、XMLがシリアル化されたテーブルプーリーであり、メッセージをキュー/トピックに配置します。
オプション3私が使用したもう1つのオプションは、BWプロセスでかなり複雑なマッパーを作成することです。スペースを検索し、「t」に置き換えます。
お役に立てれば