[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [tamie-comment] XTemp v0.84 - questions
Marius: See
inline <JD> Also,
see in the following package posted recently, the use case #4 that shows the
setting of a different virtual present time using the attribute start/@vptset
(formerly @datetime) , when starting a scriplet: http://www.oasis-open.org/committees/document.php?document_id=39650&wg_abbrev=tamie Other
responses inline. Cheers, Jacques From: Marius Plavan
[mailto:marius.edtf@gmail.com] Hi all,
<JD>
We are aware of the difference between event “posting time” (as
determined by the Event Board) and event “origination time” (as
determined by the business source of this event. These can be very different
(yet the posting time always later than origination time). And you are right to
remark that XTemp seems to only provide support for the “posting time”
as it is the only time looked at for VPT calculations. In short: what you are
asking for is still possible, but users have to define their own <match>
filters that know about “business time”, because the XTemp engine only
“knows” about posting time. Reasons
are: -
issue with “origination time” is that it all depends
on the users to set-it up. This means it can be found (or not found at all) in
very diverse places of the event, e.g. deep inside a business document. -
Moreover, there might be several “business times”
associated with the same event: e.g. for a PurchaseOrder message: creation time
of the PO, actual sending time of the PO, etc. -
Also, there are always issues with timezones as not all times
are set as UTC, etc. Several event-processing companies such as TIBCO,
have warned in the past of the unreliability of origination time. That
means it is hard for XTemp to rely on business time attribute and to trust its
content, and therefore we made the choice of having XTemp engine/language NOT
be aware of business time (or origination time) and ONLY be aware of the event
board posting time. But it is always possible for the user to define his/her
own catch filters for selection based on such business time(s). For example: if
I want to select all Pos created after January 1st 2010, I will still
select events based on post-time, but add a filter condition that takes care of
the business time: <catch vptset=” 2010-01-01T00:00:00 “>
<match><condition>xtemp:content//myapp:PurchaseOrder/myapp:CreationTime
gt xsd:dateTime(‘2010-01-01T00:00:00’) </condition></match>
</catch> The
catch above will still look at events that may have a business time earlier
than Jan 1st (because such events may still have a post-time after
Jan 1st ) but the filter condition on business time will correct this.
</JD>
<JD>
The three operators (catch / sleep / start) only move VP-time forward, by
default – which is quite expected. The @vptset attr (formerly @datetime)
allow for setting VP-time backward in start and catch, for convenience. E.g.
when you catch some type of event, you may want then to check that another kind
of event was present some time ago in the log. You need then to set the VP-time
to a past date, then resume to Actual present date, etc.
"The
X-effect of a catch is the sequence of selected events (or views of these, in
case the related match statements have defined a view)."
<JD>
Absolutely: the second <match> may use information from the event
selected by the first <match>. No need for a second catch: see in
Section 3.8.4 an example where the match/@event values are used as variable
names ($E1, $E2): <catch> <match
event="E1"> <condition >content/soap/Header/msgData/action
= 'PORequest'</condition> </match> <match event="E2"
after="E1"> <condition>(content/soap/Header/msgData/action
= "POAccept" or content/soap/Header/msgData/action =
"POReject") and content/soap/Header/msgData/property[@name =
'order_ref'] = $E1/content/soap/Header/msgData/property[@name = 'order_ref']</condition> </match> <match
event="E3" after="E2"> <condition >content/soap/Header/msgData/action
= 'Receipt' and content/soap/Header/msgData/property/RefMessageID =
$E2/content/soap/Header/msgData/messageID</condition> </match> </catch> We
may want to make that clearer in the draft , thanks for noticing. </JD>
<JD>
Right – you mean exception handling in the sense of conventional
programming languages (not using the <exit> xtemp operator). We thought
of leaving this for a next version. But you are right that it is critical for a
robust test engine to support this. On the XSLT implementation side, we are
encouraged by the coming exception handling support in XSLT2.1. </JD> I target here mostly things
that one or more engine implementations might take as granted when handling
specific exception cases and which might impact portability of that script on
another XTemp engine.
<JD>
These are valid points – frankly this feature has not been high on our
priority list. if you have concrete suggestions to submit on this list, we
welcome them. Yes we’ll need this.
<JD>
see the link on top of this email, you should be able to access it even without
OASIS account – let me know. It has a more up-to-date transformer (beware
the change in namespaces) Best
regards, Jacques Kind regards, |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]