Mirth:ファイルリーダーチャネルからソースファイルディレクトリを取得する方法

StackOverflow https://stackoverflow.com/questions/1614664

  •  06-07-2019
  •  | 
  •  

質問

xmlドキュメントを取得するファイルリーダーチャネルがあります。デフォルトでは、ファイルリーダーチャンネルはチャンネルマップに「originalFilename」を入力します。これにより、フルパスではなくファイル名が表示されます。何かをハードコーディングすることなく、フルパスを取得する方法はありますか?

役に立ちましたか?

解決

残念ながら、ファイルのフルパスを取得するための変数やメソッドはありません。もちろん、Directoryフィールドでパスを指定する必要があったため、パスはすでにわかっているでしょう。プリプロセッサを使用してチャネル変数にパスを保存することを試みましたが、ディレクトリフィールドは変数を参照できません。したがって、必要なすべての場所でフルパスをハードコーディングする必要があります。

他のヒント

次のようなソースリーダーのプロパティを取得できます。

var sourceFolder = Packages.com.mirth.connect.server.controllers.ChannelController.getInstance().getDeployedChannelById(channelId).getSourceConnector().getProperties().getProperty('host');

Mirthフォーラムに、アクセス可能な他のプロパティのリストとともに掲載しました http://www.mirthcorp.com/community/forums/showthread.php ?t = 2210

チャンネルデプロイスクリプトにディレクトリを配置できます:

globalChannelMap.put("pickupDirectory", "/Mirth/inbox");

次に、ソースコネクタの両方でそのマップを使用します:

${pickupDirectory}

および別のチャネルスクリプト:

function getFileLastModified(fileName) {
   var directory = globalChannelMap.get("pickupDirectory").toString();
   var fullPath = directory + "/" + fileName;
   var file = Packages.java.io.File(fullPath);
   var formatter = new Packages.java.text.SimpleDateFormat("yyyyMMddhhmmss"); 
   formatter.setTimeZone(Packages.java.util.TimeZone.getTimeZone("UTC")); 
   return formatter.format(file.lastModified()); 
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top