ARIS/SmartBus® Communication Middleware for Toronto’s Lester B. Pearson International Airport Greater Toronto Airport Authority
1. General considerations
Generally, there is a split between Reference data and Operational data.
The Reference and Operational services each have a dedicated underlying cache table. These store the pre-formatted XML messages, and indexed values for querying.
The application/controller ARIS/REF and ARIS/OPS respectively.
The arguments for each function take two forms
XML returned by REST service are the same messages posted to ESB.
Results are returned in the form of sets such as
For the various message types, the count and average length are as follows
APT 10000 550
AL 5000 700
ACT 500 450
ACR 25000 350
RSC 5000 350
FL 2000/day 500
RA 2000/day 500
In order to accommodate large result sets, “reply chunking” is provided.
- First GET returns first chunk
- Remaining chunks available using ?MORE=Y
- Client can receive “all” records by using ?ALL=Y then looping with ?MORE=Y until all records have been sent from the cache.
- Chunking is enabled for all queries, but impacts only those that return a large number of records.
- Chunk size currently set to 2000 (to accommodate an operational day)
As of this release, there is one cache per web session. So, the sequence ALL airports followed by ALL airlines followed by /APT?MORE=Y, in the same session, will give the next chunk of Airlines.
However, two separate sessions will not step on each other’s cache
It would be straightforward to create one cache per message-type if the need arises, or if the benefit is clear. At this time the goal is to support an easy way for client to suck over a lot of records, not long-lived caching.
Result set sortation
1. By Key when using ?ALL or ?MORE
2. By Update Seq# otherwise (required by Wipro, reason unclear)
?UpdSeqGt= Update sequence number greater than
?UpdTmGt= Update time greater than
The Update Seq originates with sequence that is used when the underlying record is modified, rather than a sequence which is dedicated to the message generation. This facilitates tracking mods end-to-end.
The Update Time originates with sysdate when the underlying record is modified, or in the case of sync/initialization that sysdate of that operation. This facilitates tracking mods end-to-end.
For reference data, a requirement was given to combine arguments with UpdTm. The use-case may not be obvious, but does allow one to say: given me message for this object if it has changed since some time T.
There is no explicit UpdTm=ALL, but providing no UpdTmGt is equivalent.
Flexibility is provided for specifying “datetime” arguments. Formats include:
D+n/D-n where D= today, n=hours
H+n/H-n where H=now, n=hours
2 Reference Data
2. 1 Airport
Key: primary code in ARIS, exact match. (e.g. YYZ)
?Name= ARIS full_name, start-match (e.g. Tor matches Toronto)
?AltCode= alternate code in ARIS (typically ICAO)
Combination: UpdTmGt + Key
Key: primary code in ARIS, exact match. (e.g. ACA) ?AltCode= alternate code in ARIS (typically 2-char) ?PrefTerm= ARIS airline_type_extra
Combination: UpdTmGt + Key, AltCode, PrefTerm
2.3 Aircraft (Fleet)
Key: primary code in ARIS, exact match. (e.g. C-ABCDE) ?Owner= ARIS aircraft. owner (typically 3-char) ?Tail= ARIS aircraft. Tail_number
?UpdSeqGt= Update sequence number greater than:
?UpdTmGt= Update time greater than
Combination: UpdTmGt + Owner
2.4 Aircraft Type
Key: primary code in ARIS, exact match. (e.g. 788) ?AltCode= ARIS aircraft_subtype .alt_code (typically 4-char) ?Config= ARIS aircraft_subtype .config (not used) ?UpdSeqGt= Update sequence number greater than: ?UpdTmGt= Update time greater than
Combination: UpdTmGt + Key, AltCode
2.5 Airport Resources
?Type= STAND, GATE, BELT_RC, BELT_MU, DESK
?Area= Pier for Stand/Gate, Area for Desk ?UpdSeqGt= Update sequence number greater than: ?UpdTmGt= Update time greater than
Combination: UpdTmGt + Term
3 Operational Data
3.1 Flight Leg
Queries are based on FlightDate or STx at YYZ These are expressed as intervals with a start and window length
Aside from FlightDate/STX, args can be combined as you will.
OPS/FL?FlDate=x&Days=n # default 1 day
OPS/FL?StxS= # Start, default H-1 OPS/FL?StxW= # Window, hours, default 26
OPS/FL?Fid= OPS/FL?Al= OPS/FL?AlAlt= OPS/FL?Sect= OPS/FL?Term= OPS/FL?Stat=
# flight ID, e.g. ACA100
# e.g. ACA
# e.g. AC
# Tn or just n
# the pub-code 3-char set
# Route (includes VIA)
# A or D
# equivalent Rte+ AD=A
# equivalent Rte+ AD=D
For these arguments, omission=ALL. For example, omit
3.2 Resource Allocation
Same arguments as FL, “Type” argument in testing at the moment