Beispiel #1
0
    function afterMicroStep($interpreter)
    {
        print "MyMonitor.afterMicroStep()\n";
    }
    function beforeTakingTransitions($interpreter, $transitions)
    {
        print "MyMonitor.beforeTakingTransitions()\n";
    }
}
$monitor = new MyMonitor();
// run interpreter in blocking mode
$interpreter = Interpreter::fromURL('https://raw.githubusercontent.com/tklab-tud/uscxml/master/test/uscxml/test-invoked.scxml');
$interpreter->addMonitor($monitor);
$interpreter->interpret();
// interleave interpreter execution with this thread
$interpreter = Interpreter::fromURL('https://raw.githubusercontent.com/tklab-tud/uscxml/master/test/uscxml/test-invoked.scxml');
$parentQueue = new ParentQueue();
$interpreter->setParentQueue($parentQueue);
while ($interpreter->step() > 0) {
    $event = $parentQueue->pop();
    print "Name: " . $event->getName() . "\n";
    print "Type: " . $event->getType() . "\n";
    print "Origin: " . $event->getOrigin() . "\n";
    print "OriginType: " . $event->getOriginType() . "\n";
    print "Content " . strlen($event->getContent()) . " bytes: \n'" . $event->getContent() . "'\n";
    $namelist = $event->getNameList();
    print "Namelist " . $namelist->size() . " elements: \n";
    $keys = $event->getNameListKeys();
    for ($i = 0; $i < $keys->size(); $i++) {
        print $keys->get($i) . "\t" . Data::toJSON($namelist->get($keys->get($i))) . "\n";
    }