10000 [Workflow] Added an entered event · symfony/symfony@8adfb58 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8adfb58

Browse files
committed
[Workflow] Added an entered event
1 parent 16cea37 commit 8adfb58

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/Symfony/Component/Workflow/Tests/WorkflowTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ public function testApplyWithEventDispatcher()
173173
'workflow.workflow_name.enter',
174174
'workflow.workflow_name.enter.b',
175175
'workflow.workflow_name.enter.c',
176+
'workflow.entered',
177+
'workflow.workflow_name.entered',
178+
'workflow.workflow_name.entered.b',
179+
'workflow.workflow_name.entered.c',
176180
// Following events are fired because of announce() method
177181
'workflow.guard',
178182
'workflow.workflow_name.guard',

src/Symfony/Component/Workflow/Workflow.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ public function apply($subject, $transitionName)
128128

129129
$this->markingStore->setMarking($subject, $marking);
130130

131+
$this->entered($subject, $transition, $marking);
132+
131133
$this->announce($subject, $transition, $marking);
132134

133135
return $marking;
@@ -238,6 +240,22 @@ private function enter($subject, Transition $transition, Marking $marking)
238240
}
239241
}
240242

243+
private function entered($subject, Transition $transition, Marking $marking)
244+
{
245+
if (null === $this->dispatcher) {
246+
return;
247+
}
248+
249+
$event = new Event($subject, $marking, $transition);
250+
251+
$this->dispatcher->dispatch('workflow.entered', $event);
252+
$this->dispatcher->dispatch(sprintf('workflow.%s.entered', $this->name), $event);
253+
254+
foreach ($transition->getTos() as $place) {
255+
$this->dispatcher->dispatch(sprintf('workflow.%s.entered.%s', $this->name, $place), $event);
256+
}
257+
}
258+
241259
private function announce($subject, Transition $initialTransition, Marking $marking)
242260
{
243261
if (null === $this->dispatcher) {

0 commit comments

Comments
 (0)
0