このコードは、現在のすべてのバージョンのファイルを1つのフォルダーから別のフォルダーに移動しますが、古いバージョンはすべて移動しません。(コンテキストは、DocumentumにアクセスするDFCのJavaコードです。)
String strObjId = versionColl.getString("r_object_id");
com.documentum.fc.common.IDfId curObjectID = new DfId(strObjId);
IDfSysObject curObj = (IDfSysObject)sess.getObject(curObjectID);
versionlabel = curObj.getAllRepeatingStrings("r_version_label", ",");
System.out.println("Moving document with Name:" + objName + " and version:" + versionlabel);
if (runMode.equals("1")) {
curObj.unlink(oldpath);
curObj.link(newpath);
curObj.setString("a_special_app", curObj.getString("r_modifier"));
curObj.setTime("a_last_review_date", curObj.getTime("r_modify_date"));
curObj.setString("a_category","MOVED");
curObj.save();
System.out.println("Successfully Moved document with Name:" + objName + " and version:" + versionlabel);
}
古いバージョンの移動中に発生したエラーは、「ドキュメントが不変」でした。そこで、不変フラグを一時的に無効にし、ファイルを移動できるようにしてから、不変フラグをtrueにリセットするこのコードを追加しました。
curObj.setBoolean("r_immutable_flag", false);
問題は、このコードが本番環境(Windows)でクラッシュしたときに、開発マシン(Windows)で完全に実行された(リンクエラーが発生した)ことでした。なぜこれがそのまま機能しているのか、そしてこの問題を解決するための他のコードについてのアイデアは素晴らしいでしょう。ありがとう。