トランスフォームスクリプト(Oncomplete)のスクリプトでのtarget.getRowCount()について

Fagi
Tera Contributor

いつもお世話になっております。

現在、トランスフォームスクリプト(Oncomplete)のスクリプトでエラーチェックを行っています。

ターゲットテーブルにレコードが全行分作成されているか、確認するためにtarget.RowCount()を使用しました。

ログを確認した所、1行と出力されていましたが、その後の処理で行っているWhile(target.next())のループ文の中では、今回のインポート処理で作成される全行分(5行)ループします。

こちらの起こってしまう原因について、何かご存じであれば、どんな些細な事でもいいので、ご教授頂けると幸いです。

宜しくお願い致します。

 

trasform_map_script.png

1 ACCEPTED SOLUTION

iwai
Giga Sage

onComplete の target.getRowCount() や target.next() ではなく、 ImportSet Table に Target Table が設定されているので、onComplete内でImportSet Tableを検索して確認したほうが良いです。 Errorが発生しているかは、それだけでは不足している(Recordが作成されたとしても、すべての項目が意図する値に正しく値が設定されているかは別に検知が必要)と思うので、エラーログを出力するなどして検知したほうが良いと思います。 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
	gr = new GlideRecord("sys_import_set_row"); // ImportSet Table の 親。(実際のImportSetTableでも良い)
	gr.addQuery("sys_import_set", import_set.getValue('sys_id'));
	gr.query();
	if (gr.next()) {
		var targetRecord = gr.sys_target_sys_id.getRefRecord(); // 作成か更新したレコード
		// そのほか, sys_import_state, sys_import_row, sys_row_error
	}
})(source, map, log, target);

 

View solution in original post

1 REPLY 1

iwai
Giga Sage

onComplete の target.getRowCount() や target.next() ではなく、 ImportSet Table に Target Table が設定されているので、onComplete内でImportSet Tableを検索して確認したほうが良いです。 Errorが発生しているかは、それだけでは不足している(Recordが作成されたとしても、すべての項目が意図する値に正しく値が設定されているかは別に検知が必要)と思うので、エラーログを出力するなどして検知したほうが良いと思います。 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
	gr = new GlideRecord("sys_import_set_row"); // ImportSet Table の 親。(実際のImportSetTableでも良い)
	gr.addQuery("sys_import_set", import_set.getValue('sys_id'));
	gr.query();
	if (gr.next()) {
		var targetRecord = gr.sys_target_sys_id.getRefRecord(); // 作成か更新したレコード
		// そのほか, sys_import_state, sys_import_row, sys_row_error
	}
})(source, map, log, target);