Different Transaction XML between IMan 3 and 4 (assumption) (5 replies)
In my connector code, when iterating over the Transaction objects, I export the XML of the Transaction (accessed via Transaction.Data.OuterXml). When I look at the output on my local machine (where the connector development happens) AND on one of our test machines (both on IMan 3.2 PU1), I see an XML structure which includes a RECORD node, FIELD nodes, VALUES nodes, and VALUE nodes.
<RECORD timestamp="12:33:38:938"><FIELD name="sku"><VALUES><VALUE>A11050</VALUE></VALUES></FIELD></RECORD>
When I look at the same output from a machine where IMan 4.0 is installed, the XML is quite different. The export of this data looks like this
. Unfortunately, this breaks my recent update to the RAPID Web Sync, as I cannot parse this XML in the same way as before.
Is there a reason why the XML is so different now? Is it possible to bring back the old XML with RECORD, FIELD, VALUES, and VALUE nodes?
We won't be going back to the old data structure I'm afraid.
These changes were all part of the performance improvements in V4.0, as you can see, even with this small example, the new data structure is far more efficient.
Drop me an email on why you needed the XML and I'll see if we can find a better way for you to get what you need, accessing the XML directly doesn't seem like a good solution.
Randy, why are you even trying to parse our internal data structure? In another forthcoming version you won't be able to access any Xml.
ITransformProcess.Initialise takes as one argument an TransactionIterator.
You need to use that and not the underlying data structure.
Please also note that the TransactionIterator (and close cousin TransactionSelector) are the only means we use to iterate and transform data.
I’m looking for a way to look at the data INSIDE of an individual Transaction object.
The TransactionIterator appears to only iterator OVER the Transaction objects.
Additionally, the Transaction object itself appears to only allow querying of individual fields. Is it possible to pull data from a Transaction object without knowing the fieldnames in advance? In the first iteration of the RAPIDWebSync I used Transaction.Definition to get a collection of TransformRecordField objects. Is that functionality safe to keep using?
Randy, correct the TransactionIterator does only iterate over Transaction objects.
Yes, the Transaction.Definition is still safe to use; we won't ever break this functionality.
You may notice BulkGetValue in v4, but you won't be able to use this since it requires a call to a parent object (TransactionFactory) prior to the creation of the TransactionIterator (which is too late for you).
You also have Transaction.Definition.FieldIds() which will return a list of the field ids (and is supremely quick since it returns the index cache).
I hope this helps.