24 {
27 $this->element_varname = '$_v_'.$element_id;
28
29 $event_definition = null;
30 if(count($element['children']))
31 {
32 foreach ($element['children'] as $child)
33 {
34 if($child['name'] == 'messageEventDefinition')
35 {
37 $child['attributes']['messageRef'], 'message', $this->bpmn2_array
38 );
39 }
40 if($child['name'] == 'signalEventDefinition')
41 {
43 $child['attributes']['signalRef'], 'signal', $this->bpmn2_array
44 );
45 }
46 if($child['name'] == 'timerEventDefinition')
47 {
49 $child['attributes']['id'], 'intermediateCatchEvent', $this->bpmn2_array
50 );
51 }
52 }
53 }
54
55 $class_object->
registerRequire(
'./Services/WorkflowEngine/classes/nodes/class.ilBasicNode.php');
57 ' . $this->element_varname . ' = new ilBasicNode($this);
58 $this->addNode(' . $this->element_varname . ');
59 ' . $this->element_varname . '->setName(\'' . $this->element_varname . '\');
60 ';
61
62 if(is_array($event_definition))
63 {
64 $class_object->registerRequire('./
Services/WorkflowEngine/classes/detectors/
class.ilEventDetector.php
');
65 $code .= '
66 ' . $this->element_varname . '_detector =
new ilEventDetector(
' . $this->element_varname . ');
67 ' . $this->element_varname . '_detector->setName(\'' . $this->element_varname . '_detector\');
68 ' . $this->element_varname . '_detector->setEvent( "'.$event_definition['type'].'", "'.$event_definition['content'].'");
69 ' . $this->element_varname . '_detector->setEventSubject( "'.$event_definition['subject_type'].'", "'.$event_definition['subject_id'].'");
70 ' . $this->element_varname . '_detector->setEventContext( "'.$event_definition['context_type'].'", "'.$event_definition['context_id'].'");
71 ';
72
73 if(isset($event_definition['listening_start']) || isset($event_definition['listening_end']))
74 {
75 $code .= $this->element_varname .
'_detector->setListeningTimeframe(' .(int) $event_definition[
'listening_start'] .
76 ', ' . (int) $event_definition['listening_end'] . ');';
77 }
78 else if(isset($event_definition['listening_relative']) && isset($event_definition['listening_interval']))
79 {
80 $code .= $this->element_varname .
'_detector->setTimerRelative(true);';
81 $code .= $this->element_varname .
'_detector->setTimerLimit(' .(int) $event_definition[
'listening_interval'] .
');';
82 }
83
85 ' . $this->element_varname . '->addDetector(' . $this->element_varname . '_detector);
86 ';
87 }
88
90
92 }
static extractILIASEventDefinitionFromProcess($start_event_ref, $type, $bpmn2_array)
static extractTimeDateEventDefinitionFromElement($start_event_ref, $type, $bpmn2_array)
static xsIDToPHPVarname($xsID)
handleDataAssociations($element, $class_object, $element_varname)
@noinspection PhpIncludeInspection
registerRequire($require)