有没有办法取消Mirth频道目标文件编写器?

时间:2015-12-08 20:49:27

标签: mirth

有没有办法在没有返回数据时取消Mirth Channel目标文件writer。每次运行频道时我都不想创建文件。通道需要每2-5分钟运行一次,以处理sql server中队列中的任何挂起记录。

我正在使用Mirth频道查询sql server数据库并将数据作为CSV文件输出。我正在使用Mirth Connect Server 3.2.0.7628。

这是目标转换器上的脚本。 如果result.Size()不大于零,我试图跳过添加到tmp。 在Mirth Connect文档中找不到此用例。

var dbConn = DatabaseConnectionFactory.createDatabaseConnection('net.sourceforge.jtds.jdbc.Driver','jdbc:jtds:sqlserver://xx.xx.x.xx:1433/<dbname>',<user>,<password>);

var result1 = dbConn.executeCachedQuery("exec [z_stored_procedure] param1");

var i = 0;  
if (result1.size()>0)   
{   logger.debug(result1.size())
    while(result1.next())
    {        
          tmp.row += <row>
           <DataField1>"{result1.getString('DataField1')}"</DataField1>
           <DataField2>"{result1.getString('DataField2')}"</DataField2>                                            
          </row>; 
      } 
}

dbConn.close();

2 个答案:

答案 0 :(得分:1)

您始终可以排除该目的地处理邮件。

  

例如,如果某个通道有多个目标,并且每条消息只需要由一个目标处理,则通过在源转换器中调用destinationSet.removeAllExcept(connectorName),只有该目标才会收到该消息。这些目标将没有存储数据,也不会显示在消息浏览器中。这是对每个目标进行过滤的替代方法,可以节省处理时间和磁盘空间。

答案 1 :(得分:1)

将代码放在Destination Filter 而不是 Transformer 中应该会有效。

在if语句之后添加:

else {
return false;
}

如果您有数据,它将运行您的转换并将其传递给目标。 如果不这样做,它将过滤消息并对目的地不执行任何操作。