public function testGuard() { $subject = new GenericSubject('test_machine', 'state1'); $guard = new VariableGuard(['expression' => 'event === "erp.derped"']); $subject->getExecutionContext()->setParameter('event', 'erp.derped'); $this->assertTrue($guard->accept($subject)); $this->assertEquals(PHP_EOL . 'if event === "erp.derped"', $guard->__toString()); }
public function accept(StatefulSubjectInterface $process_state) { if ($this->hasOption('expression') && !parent::accept($process_state)) { return false; } $export_val = null; $export_key = $this->options->get('export_to', false); $execution_context = $process_state->getExecutionContext(); $projection = $this->findProjection($this->getPayloadIdentifier($process_state)); if ($projection) { $export_val = $projection; if ($this->options->has('export_as_reference')) { $export_config = $this->options->get('export_as_reference'); $embed_type = $export_config->get('reference_embed_type'); $execution_context->setParameter($export_config->get('export_to'), [['@type' => $embed_type, 'referenced_identifier' => $projection->getIdentifier()]]); } } if ($export_key) { $execution_context->setParameter($export_key, $export_val); } return $projection != null; }