Biztalk 使用平面文件批处理行项目数据
我必须解析一个CSV平面文件,该文件只包含行项目数据,没有可识别的头记录,有点像这样:Biztalk 使用平面文件批处理行项目数据,biztalk,flat-file,Biztalk,Flat File,我必须解析一个CSV平面文件,该文件只包含行项目数据,没有可识别的头记录,有点像这样: 930001,14-02-2013,100.00,1,Line 1,2,10.00,20.00 930001,14-02-2013,100.00,2,Line 2,2,20.00,40.00 930001,14-02-2013,100.00,3,Line 3,1,40.00,40.00 930002,13-02-2013,200.00,1,Line 1,10,10.00,100.00 930002,13-02
930001,14-02-2013,100.00,1,Line 1,2,10.00,20.00
930001,14-02-2013,100.00,2,Line 2,2,20.00,40.00
930001,14-02-2013,100.00,3,Line 3,1,40.00,40.00
930002,13-02-2013,200.00,1,Line 1,10,10.00,100.00
930002,13-02-2013,200.00,2,Line 2,5,20.00,100.00
930003,14-02-2013,100.00,1,Line 1,3,20.00,60.00
930003,14-02-2013,100.00,2,Line 2,2,20.00,40.00
其中字段按顺序排列:
Order No,Order Date,Order Amt,Line No,Line Desc,Line Qty,Unit Price,Line Price
我想使用BizTalk平面文件接收管道将其转换为分层架构,在第一个字段上分组,顺序号:
Order_Batch
+ Order
+ OrderLine
是否有方法通过平面文件接收执行分组操作,以便在上述实例中,前3行(订单号=930001)
930001
1.
930001
2.
930001
2.
... 订单930002的详细信息。。。
... 订单930003的详细信息。。。
我目前看到的唯一可用选项是将整个文件作为一组订单行记录接受,取消批处理,然后在另一个业务流程中使用聚集模式执行批处理。我更愿意让它非常简单。使用地图将平面转换为层次:
我相信你可以在地图中使用xsl,你可以做为了做到这一点,你需要事先知道订单号以及它们的顺序。由于这些文件不受限制,并且可以动态添加或删除,因此仅通过使用平面文件模式是不可能的。至少,我们需要一个标记标识符来区分一批记录的结束位置和一批新记录的开始位置。
<OrderBatch>
<Order>
<OrderLine>
<OrderNo>930001</OrderNo>
<other_fields />
<LineNo>1</LineNo>
<other_fields_etc />
</OrderLine>
<OrderLine>
<OrderNo>930001</OrderNo>
<other_fields />
<LineNo>2</LineNo>
<other_fields_etc />
</OrderLine>
<OrderLine>
<OrderNo>930001</OrderNo>
<other_fields />
<LineNo>2</LineNo>
<other_fields_etc />
</OrderLine>
</Order>
<Order> ... Details of Order 930002 ... </Order>
<Order> ... Details of Order 930003 ... </Order>
</OrderBatch>