A Külső kommunikációs modul biztosítja a lehetőséget a küldésre és események fogadására külső egyedektől, valamint külső szolgáltatások igénybevételére.
A Külső kommunikációs modult használó profiloknak kötelező:
Események és adatok küldése külső rendszereknek, beleértve külső SCXML interpreterek, vagy egy folyamatban lévő SCXML munkamenetben esemény kiváltására. A célpontja a <send>-nek a "target" és "type" attribútumokkal határozható meg. Ezek az attribútumok szabályozzák, hogy a platform hogy küldje az eseményt a célpontnak.
Neve | Kötelező | Megszorítás | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|---|---|
event | Nem | Nem szerepelhet 'eventexpr'-el. Ha a 'type' scxml, akkor ennek vagy az 'eventexpr'-nek szerepelnie kell. | string | Nincs | A karakterlánc jelzi az üzenet típusát amelyet generál. A szöveg tartalmazhat alfanumerikus karaktereket és a "." (pont) karaktert. Az első karakter nem lehet pont vagy szám. Az üzenet típus nevek case-insensitive-ek. Ha sem 'event, sem 'eventexpr' vagy in-line tartalom nincs megadva, akkor egy error.fetch esemény dobódik. In-line tartalommal együtt használva error.fetch dobódik. |
eventexpr | Nem | Nem szerepelhet 'event'-el. Ha a 'type' scxml, akkor ennek vagy az 'event'-nek szerepelnie kell. | Érték kifejezés | Nincs | Dinamikus alternatívája az 'event'-nek, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'event' értéke lenne. |
target | Nem | Nem szerepelhet 'targetexpr'-el. | URI | Nincs | Egyedi azonosítója az üzenet célpontja, aminek az esemény küldi. |
targetexpr | Nem | Nem szerepelhet 'target'-el. | Érték kifejezés | Nincs | Dinamikus alternatívája az 'target'-nek, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'target' értéke lenne. |
type | Nem | Nem szerepelhet 'typeexpr'-el. | string | Nincs | Egy token, ami meghatározza a szállítási mechanizmusát az üzenetnek. |
typeexpr | Nem | Nem szerepelhet 'type'-al. | Érték kifejezés | Nincs | Dinamikus alternatívája az 'type'-nak, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'type' értéke lenne. |
id | Nem | Nem szerepelhet 'idlocation'-el. | ID | Nincs | Egy karakterlánc, amely azonosítja a <send> példányát. |
idlocation | Nem | Nem szerepelhet 'id'-val. | Hely kifejezés | Nincs | Bármely hely kifejezés kiértékelődik egy adatmodell hellyé. Ha az 'id' attribútum nincs meghatározva, akkor a platform azt az id tárolja amit automatikusan generál ezen a helyen. |
delay | Nem | Nem szerepelhet 'delayexpr'-el, vagy ha a 'target' értéke "_internal". | string | Nincs | Karaktersorozat, ami időintervallumot jelképez. A <send> azonnal visszatér, de az üzenet nem kerül elküldésre, ami az időintervallum el nem telik. Ebben az esetben a <send> összes attribútuma kiértékelődik, amikor a <send> végrehajtódik, és nem az üzenet elküldésekor. |
delayexpr | Nem | Nem szerepelhet 'delay'-el, vagy ha a 'target' értéke "_internal". | Érték kifejezés | Nincs | Dinamikus alternatívája az 'delay'-nek, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'delay' értéke lenne. |
namelist | Nem | Ez az attribútum csak azokban a profilokban támogatott, amelyek tartalmazzák a Data Module-t és Script Module-t. | Hely kifejezés listája | Nincs | Szóközzel elválasztott adatmodell helyek listája csatolva az üzenethez. |
hints | Nem | Nem szerepelhet 'hintsexpr'-el. | string | Nincs | Olyan információkat tartalmaz, amelyeket felhasznál az implementáló platform optimalizálásra az üzenetek átviteléhez. A jelentése platform-specifikus. |
hintsexpr | Nem | Nem szerepelhet 'hints'-el. | Érték kifejezés | Nincs | Dinamikus alternatívája az 'hints'-nek, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'hints' értéke lenne. |
A <send> célpontja
A célpontja <send> műveletnek a célállomás, amelynek az eseményt küldeni kell. Megadható a 'target' vagy a 'targetexpr' attribútumban. Ezek határozzák meg az egyedi azonosítóját a célpontnak. Általában ez egy másik SCXML munkamenet. Más esetekben ez az érték a célpont típusától fog függeni. A következő speciális értékek definiáltak:
A <send> típusa
A <send> művelet típusa meghatározza a módszert, amit használni kell, hogy az üzenet eljusson a célpontjához. A típust a 'type' vagy a 'typeexpr' attribútum határozza meg. A típust a célponttal együtt használják, hogy meghatározzák azt, hogy hogy kapcsolódjon a célállomáshoz. Ha egyik sincs megadva a 'type' vagy a 'typeexpr' közül, akkor az alapértelmezett értéket 'scxml' feltételezi. Ha a megadott típus nem támogatott, akkor a rendszer kiváltja az error.send.typeinvalid hibaeseményt.
Minden rendszer támogatja a következő típust:
Érték | Leírás |
---|---|
"scxml" | A célpont egy SCXML folyamat. A szállítási mechanizmus platform-specifikus. |
A HTTP POST támogatása opcionális, de amelyik támogatja annak a következő értéket kel használnia:
Érték | Leírás |
---|---|
"basichttp" | A célpont egy URL. Az adatot HTTP POST áltál küldve. |
Neve | Kötelező | Megszorítás | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|---|---|
sendid | Nem | Nem szerepelhet 'sendidexpr'-el, de egyiknek szerepelnie kell. | IDREF | Nincs | Törlendő esemény ID-ja. |
sendidexpr | Nem | Nem szerepelhet 'sendid'-el, de egyiknek szerepelnie kell. | Érték kifejezés | Nincs | Dinamikus alternatívája az 'sendid'-nek, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'sendid' értéke lenne. |
Az <invoke> és gyereke a <finalize> hasznosak külső szolgáltatások viselkedését modellező állapotokban. Az <invoke> elem az állapot <onentry> eleme után hajtódik végre egy külső szolgáltatás létrehozását okozza. A <param> elemmel lehet adatot átadni a szolgáltatásnak. Minden olyan eseményt, amit az állapot gép kap a meghívott komponensből a meghívás alatt, azt a feldolgozza a <finalize> kezelő, mielőtt az átmenet kiválasztódik. A <finalize> kód segítségével normalizálja a visszatérő adatokat és frissíti adatmodellt mielőtt kiértékeli a következő állapotot.
Amikor az <invoke> elem végrehajtódik, a rendszernek egy új logika példányt kell kezdenie a "type"-ban megadott külső szolgáltatásról és átadni neki az "src", <content> vagy <parallel>-ban meghatározott adatokat. A szolgáltatás példánya lehet helyi vagy távoli. Az explicit argumentumokon kívül a rendszernek nyomon kell követnie az egyedi hivatkozási azonosítót (invoke id) és biztosítania kell, hogy szerepel az összes eseményben, amikkel a szolgáltatás visszatér a meghívó géphez.
Neve | Kötelező | Megszorítás | Típus | Érvényes értékei | Leírás |
---|---|---|---|---|---|
type | Nem | Nem szerepelhet 'typeexpr'-el. | NMTOKEN | 'scxml', 'vxml2', 'vxml3', 'ccxml' és egyéb platform-specifikus értékek | Karaktersorozat, ami meghatározza a külső szolgáltatást. A rendszernek kötelező támogatnia az 'scxml' értéket. |
typeexpr | Nem | Nem szerepelhet 'type'-al. | Érték kifejezés | Bármilyen érték kifejezés, ami érvényes típus értékű karakterláncra értékelődik ki. | Dinamikus alternatívája az 'type'-nak, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'type' értéke lenne. |
src | Nem | Nem szerepelhet 'srcexpr'-el vagy a <content> elemmel. | URI | Bármilyen URI | Egyedi azonosítója az üzenet célpontja, aminek az esemény küldi. |
srcexpr | Nem | Nem szerepelhet 'target'-el. | Érték kifejezés | Bármilyen kifejezés ami érvényes URI-re értékelődik ki. | Dinamikus alternatívája az 'src'-nek, ami egy statikus string, amíg ez futási időben értékelődik ki, és úgy kezeli, mintha az 'src' értéke lenne. |
id | Nem | Nem szerepelhet 'idlocation'-el. | ID | Bármely érvényes token | Egy karakterlánc, amely azonosítja az <invoke> ezen példányát. |
idlocation | Nem | Nem szerepelhet 'id'-val. | Hely kifejezés | Érvényes hely kifejezés | Bármely hely kifejezés kiértékelődik egy adatmodell hellyé. Ha az 'id' attribútum nincs meghatározva, akkor a platform azt az id tárolja amit automatikusan generál ezen a helyen. |
namelist | Nem | Ez az attribútum csak azokban a profilokban támogatott, amelyek tartalmazzák a Data Module-t és Script Module-t. | Hely kifejezés listája | Adatmodell helyek listája | Szóközzel elválasztott, 0 vagy több adatmodell helyek listája, ami átadandó a szolgáltatásnak. |
autoforward | Nem | Logikai | true vagy false | Igaz: bármely az állapotgép által fogadott külső esemény továbbítódik a hivatkozott külső szolgáltatásnak. |
Gyerekei
Gyerekei:
A <finalize> gyerekei tartalma 0 vagy több végrehajtható tartalom lehet. Egy megfelelő SCXML dokumentumban a végrehajtandó tartalom a <finalize>-ban nem válthat ki eseményt vagy nem hívhat külső tevékenységet. Különösen a <send> és a <raise> elemek nem fordulhatnak elő benne.
Ha nincs futtatható tartalom megadva, az SCXML Processzornak frissítenie kell az adatmodellt minden egyes alkalommal, amikor egy esemény érkezik a gyermek folyamattól, amelyet a szülő <invoke> elem hozott létre. Különösen, ha szülő <invoke> elem tartalmaz 'namelist' attribútumot, vagy egy vagy több <param> gyereke tartalmaz 'location' attribútumot, akkor minden egyes ilyen elemet a Processzornak frissítenie kell a megfelelő helyen a visszatérési értékékkel amelyeknek a neve egyezik. Így a hatása egy <invoke> üres <finalize> elemmel és 'namelist' attribútummal vagy egy 'location' attribútummal rendelkező <param> elemmel, az hogy először elküldjük az adatmodell 'namelist' vagy 'location' által meghatározott részét a hivatkozott komponensnek. Ezután frissítjük azt a részt az egyező nevű visszatérési értékekkel. Ne feledjük, hogy az automatikus frissítésre nem kerül sor, ha a <finalize> elem hiányzik, szemben az üressel.