Skip to content

Commit 5a33d3d

Browse files
authored
Merge pull request #16 from Quee-io/change-element-stage-and-workflow-by-destination-task
feat: full effect executed action into element.
2 parents 3e3b68e + e9d2740 commit 5a33d3d

File tree

22 files changed

+217
-18
lines changed

22 files changed

+217
-18
lines changed

clef-workflow-api/clef-workflow-api-adapter/clef-workflow-api-adapter-element/src/main/kotlin/io/quee/clef/workflow/api/adapter/element/creator/ElementFlowIdentityCreatorImpl.kt

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@ package io.quee.clef.workflow.api.adapter.element.creator
33
import io.quee.clef.workflow.api.adapter.entity.element.ElementFlow
44
import io.quee.clef.workflow.api.adapter.entity.workflow.StageTask
55
import io.quee.clef.workflow.api.adapter.entity.workflow.TaskAction
6+
import io.quee.clef.workflow.api.adapter.entity.workflow.Workflow
7+
import io.quee.clef.workflow.api.adapter.entity.workflow.WorkflowStage
68
import io.quee.clef.workflow.api.adapter.shared.creator.BaseStoreIdentityCreator
79
import io.quee.clef.workflow.api.domain.element.flow.ElementFlowIdentity
10+
import io.quee.clef.workflow.api.domain.workflow.WorkflowIdentity
11+
import io.quee.clef.workflow.api.domain.workflow.stage.StageIdentity
812
import io.quee.clef.workflow.api.domain.workflow.stage.action.TaskActionIdentity
913
import io.quee.clef.workflow.api.domain.workflow.stage.task.StageTaskIdentity
1014
import io.quee.clef.workflow.api.store.element.creator.ElementFlowIdentityCreator
@@ -15,9 +19,32 @@ import io.quee.clef.workflow.api.store.element.creator.ElementFlowIdentityCreato
1519
* Project **clef-workflow** [Quee.IO](https://quee.io/)<br></br>
1620
*/
1721
class ElementFlowIdentityCreatorImpl : BaseStoreIdentityCreator<ElementFlowIdentity>(), ElementFlowIdentityCreator {
22+
private lateinit var fromWorkflow: Workflow
23+
private lateinit var toWorkflow: Workflow
24+
private lateinit var fromStage: WorkflowStage
25+
private lateinit var toStage: WorkflowStage
1826
private lateinit var fromTask: StageTask
1927
private lateinit var toTask: StageTask
2028
private lateinit var action: TaskAction
29+
override fun WorkflowIdentity.fromWorkflow(): ElementFlowIdentityCreator {
30+
fromWorkflow = this as Workflow
31+
return this@ElementFlowIdentityCreatorImpl
32+
}
33+
34+
override fun WorkflowIdentity.toWorkflow(): ElementFlowIdentityCreator {
35+
toWorkflow = this as Workflow
36+
return this@ElementFlowIdentityCreatorImpl
37+
}
38+
39+
override fun StageIdentity.fromStage(): ElementFlowIdentityCreator {
40+
fromStage = this as WorkflowStage
41+
return this@ElementFlowIdentityCreatorImpl
42+
}
43+
44+
override fun StageIdentity.toStage(): ElementFlowIdentityCreator {
45+
toStage = this as WorkflowStage
46+
return this@ElementFlowIdentityCreatorImpl
47+
}
2148

2249
override fun StageTaskIdentity.fromTask(): ElementFlowIdentityCreator {
2350
fromTask = this as StageTask
@@ -35,6 +62,6 @@ class ElementFlowIdentityCreatorImpl : BaseStoreIdentityCreator<ElementFlowIdent
3562
}
3663

3764
override fun create(): ElementFlowIdentity {
38-
return ElementFlow(fromTask, toTask, action, identityStatus = identityStatus)
65+
return ElementFlow(fromTask, toTask, action, fromWorkflow, toWorkflow, fromStage, toStage, identityStatus = identityStatus)
3966
}
4067
}

clef-workflow-api/clef-workflow-api-adapter/clef-workflow-api-adapter-element/src/main/kotlin/io/quee/clef/workflow/api/adapter/element/updater/ElementIdentityUpdaterImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ package io.quee.clef.workflow.api.adapter.element.updater
33
import io.quee.clef.workflow.api.adapter.entity.element.Element
44
import io.quee.clef.workflow.api.adapter.entity.element.ElementFlow
55
import io.quee.clef.workflow.api.adapter.entity.workflow.StageTask
6+
import io.quee.clef.workflow.api.adapter.entity.workflow.Workflow
67
import io.quee.clef.workflow.api.adapter.entity.workflow.WorkflowStage
78
import io.quee.clef.workflow.api.adapter.shared.entity.BaseIdentity
89
import io.quee.clef.workflow.api.adapter.shared.updater.BaseStoreIdentityUpdater
910
import io.quee.clef.workflow.api.domain.element.ElementIdentity
1011
import io.quee.clef.workflow.api.domain.element.flow.ElementFlowIdentity
12+
import io.quee.clef.workflow.api.domain.workflow.WorkflowIdentity
1113
import io.quee.clef.workflow.api.domain.workflow.stage.StageIdentity
1214
import io.quee.clef.workflow.api.domain.workflow.stage.task.StageTaskIdentity
1315
import io.quee.clef.workflow.api.store.element.updater.ElementIdentityUpdater
@@ -20,6 +22,11 @@ import io.quee.clef.workflow.api.store.element.updater.ElementIdentityUpdater
2022
class ElementIdentityUpdaterImpl(private val element: Element) : BaseStoreIdentityUpdater<ElementIdentity>(), ElementIdentityUpdater {
2123
override fun entity(): BaseIdentity = element
2224

25+
override fun WorkflowIdentity.currentWorkflow(): ElementIdentityUpdater {
26+
element.workflow = this as Workflow
27+
return this@ElementIdentityUpdaterImpl
28+
}
29+
2330
override fun StageIdentity.currentStage(): ElementIdentityUpdater {
2431
element.currentStage = this as WorkflowStage
2532
return this@ElementIdentityUpdaterImpl

clef-workflow-api/clef-workflow-api-adapter/clef-workflow-api-adapter-entity/src/main/kotlin/io/quee/clef/workflow/api/adapter/entity/element/ElementFlow.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package io.quee.clef.workflow.api.adapter.entity.element
33
import io.quee.api.develop.shared.model.IdentityStatus
44
import io.quee.clef.workflow.api.adapter.entity.workflow.StageTask
55
import io.quee.clef.workflow.api.adapter.entity.workflow.TaskAction
6+
import io.quee.clef.workflow.api.adapter.entity.workflow.Workflow
7+
import io.quee.clef.workflow.api.adapter.entity.workflow.WorkflowStage
68
import io.quee.clef.workflow.api.adapter.shared.entity.BaseIdentity
79
import io.quee.clef.workflow.api.domain.element.flow.ElementFlowIdentity
810
import java.time.LocalDateTime
@@ -19,6 +21,10 @@ class ElementFlow(
1921
@ManyToOne(optional = false) override var fromTask: StageTask,
2022
@ManyToOne(optional = false) override var toTask: StageTask,
2123
@ManyToOne(optional = false) override var action: TaskAction,
24+
@ManyToOne(optional = false) override var fromWorkflow: Workflow,
25+
@ManyToOne(optional = false) override var toWorkflow: Workflow,
26+
@ManyToOne(optional = false) override var fromStage: WorkflowStage,
27+
@ManyToOne(optional = false) override var toStage: WorkflowStage,
2228
@Id override var uuid: String = UUID.randomUUID().toString(),
2329
@Column(nullable = false) @Enumerated(EnumType.STRING) override var identityStatus: IdentityStatus = IdentityStatus.ENABLED,
2430
@Column(nullable = false) override var creationDate: LocalDateTime = LocalDateTime.now()

clef-workflow-api/clef-workflow-api-adapter/clef-workflow-api-adapter-stage/src/main/kotlin/io/quee/clef/workflow/api/adapter/stage/query/StageStoreQueryImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.quee.clef.workflow.api.adapter.stage.query
22

3+
import io.quee.clef.workflow.api.adapter.entity.workflow.StageTask
34
import io.quee.clef.workflow.api.adapter.entity.workflow.WorkflowStage
45
import io.quee.clef.workflow.api.adapter.shared.query.StoreQueryImpl
56
import io.quee.clef.workflow.api.adapter.stage.repository.WorkflowStageRepository
67
import io.quee.clef.workflow.api.domain.workflow.stage.StageIdentity
8+
import io.quee.clef.workflow.api.domain.workflow.stage.task.StageTaskIdentity
79
import io.quee.clef.workflow.api.store.stage.query.StageStoreQuery
810

911
/**
@@ -19,4 +21,9 @@ class StageStoreQueryImpl(
1921

2022
override fun existByKey(stageKey: String): Boolean =
2123
workflowStageRepository.existsByStageKey(stageKey)
24+
25+
override fun findByTask(stageTaskIdentity: StageTaskIdentity): StageIdentity? {
26+
val tasks = listOf(stageTaskIdentity as StageTask)
27+
return workflowStageRepository.findByTasksInOrInitialTaskIn(tasks, tasks)
28+
}
2229
}

clef-workflow-api/clef-workflow-api-adapter/clef-workflow-api-adapter-stage/src/main/kotlin/io/quee/clef/workflow/api/adapter/stage/repository/WorkflowStageRepository.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.quee.clef.workflow.api.adapter.stage.repository
22

3+
import io.quee.clef.workflow.api.adapter.entity.workflow.StageTask
34
import io.quee.clef.workflow.api.adapter.entity.workflow.WorkflowStage
45
import io.quee.clef.workflow.api.adapter.shared.repository.MainRepository
56
import org.springframework.stereotype.Repository
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Repository
1213
@Repository
1314
interface WorkflowStageRepository : MainRepository<WorkflowStage> {
1415
fun findByStageKeyAndUuid(workflowKey: String, uuid: String): WorkflowStage?
15-
fun existsByStageKeyAndUuid(workflowKey: String, uuid: String): Boolean
1616
fun existsByStageKey(workflowKey: String): Boolean
17+
18+
fun findByTasksInOrInitialTaskIn(tasks: List<StageTask>, initialTask: List<StageTask>): WorkflowStage?
1719
}

clef-workflow-api/clef-workflow-api-adapter/clef-workflow-api-adapter-workflow/src/main/kotlin/io/quee/clef/workflow/api/adapter/workflow/query/WorkflowStoreQueryImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.quee.clef.workflow.api.adapter.workflow.query
22

33
import io.quee.clef.workflow.api.adapter.entity.workflow.Workflow
4+
import io.quee.clef.workflow.api.adapter.entity.workflow.WorkflowStage
45
import io.quee.clef.workflow.api.adapter.shared.query.StoreQueryImpl
56
import io.quee.clef.workflow.api.adapter.workflow.repository.WorkflowRepository
67
import io.quee.clef.workflow.api.domain.workflow.WorkflowIdentity
8+
import io.quee.clef.workflow.api.domain.workflow.stage.StageIdentity
79
import io.quee.clef.workflow.api.store.workflow.query.WorkflowStoreQuery
810

911
/**
@@ -22,4 +24,9 @@ class WorkflowStoreQueryImpl(
2224

2325
override fun existByKey(workflowKey: String): Boolean =
2426
workflowRepository.existsByWorkflowKey(workflowKey)
27+
28+
override fun findByStage(stageIdentity: StageIdentity): WorkflowIdentity? {
29+
val stages = listOf(stageIdentity as WorkflowStage)
30+
return workflowRepository.findByStagesInOrInitialStageIn(stages, stages)
31+
}
2532
}

clef-workflow-api/clef-workflow-api-adapter/clef-workflow-api-adapter-workflow/src/main/kotlin/io/quee/clef/workflow/api/adapter/workflow/repository/WorkflowRepository.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.quee.clef.workflow.api.adapter.workflow.repository
22

33
import io.quee.clef.workflow.api.adapter.entity.workflow.Workflow
4+
import io.quee.clef.workflow.api.adapter.entity.workflow.WorkflowStage
45
import io.quee.clef.workflow.api.adapter.shared.repository.MainRepository
56
import org.springframework.stereotype.Repository
67

@@ -14,4 +15,6 @@ interface WorkflowRepository : MainRepository<Workflow> {
1415
fun findByWorkflowKeyAndUuid(workflowKey: String, uuid: String): Workflow?
1516
fun existsByWorkflowKeyAndUuid(workflowKey: String, uuid: String): Boolean
1617
fun existsByWorkflowKey(workflowKey: String): Boolean
18+
19+
fun findByStagesInOrInitialStageIn(stages: List<WorkflowStage>, initialStage: List<WorkflowStage>): Workflow?
1720
}

clef-workflow-api/clef-workflow-api-domain/clef-workflow-api-domain-element/src/main/kotlin/io/quee/clef/workflow/api/domain/element/flow/ElementFlowIdentity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.quee.clef.workflow.api.domain.element.flow
22

33
import io.quee.api.develop.shared.model.Identity
4+
import io.quee.clef.workflow.api.domain.workflow.WorkflowIdentity
5+
import io.quee.clef.workflow.api.domain.workflow.stage.StageIdentity
46
import io.quee.clef.workflow.api.domain.workflow.stage.action.TaskActionIdentity
57
import io.quee.clef.workflow.api.domain.workflow.stage.task.StageTaskIdentity
68

@@ -10,6 +12,10 @@ import io.quee.clef.workflow.api.domain.workflow.stage.task.StageTaskIdentity
1012
* Project **clef-workflow** [Quee.IO](https://quee.io/)<br></br>
1113
*/
1214
interface ElementFlowIdentity : Identity {
15+
val fromWorkflow: WorkflowIdentity
16+
val toWorkflow: WorkflowIdentity
17+
val fromStage: StageIdentity
18+
val toStage: StageIdentity
1319
val fromTask: StageTaskIdentity
1420
val toTask: StageTaskIdentity
1521
val action: TaskActionIdentity

clef-workflow-api/clef-workflow-api-port/clef-workflow-api-port-element/src/main/kotlin/io/quee/clef/workflow/api/port/element/ElementContextPort.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.quee.clef.workflow.api.store.element.ElementFlowStore
55
import io.quee.clef.workflow.api.store.element.ElementStore
66
import io.quee.clef.workflow.api.usecase.domain.element.ElementDomainUseCaseFactoryImpl
77
import io.quee.clef.workflow.api.usecase.element.ElementUseCaseFactoryImpl
8+
import io.quee.clef.workflow.api.usecase.factory.domain.StageDomainUseCaseFactory
89
import io.quee.clef.workflow.api.usecase.factory.domain.TaskActionDomainUseCaseFactory
910
import io.quee.clef.workflow.api.usecase.factory.domain.WorkflowDomainUseCaseFactory
1011
import io.quee.clef.workflow.api.usecase.factory.element.ElementUseCaseFactory
@@ -26,15 +27,17 @@ class ElementContextPort {
2627
elementDomainUseCaseFactory: ElementDomainUseCaseFactory,
2728
workflowDomainUseCaseFactory: WorkflowDomainUseCaseFactory,
2829
taskActionDomainUseCaseFactory: TaskActionDomainUseCaseFactory,
29-
identityAccessValidation: IdentityAccessValidation
30+
identityAccessValidation: IdentityAccessValidation,
31+
stageDomainUseCaseFactory: StageDomainUseCaseFactory
3032
): ElementUseCaseFactory =
3133
ElementUseCaseFactoryImpl(
3234
elementStore,
3335
elementFlowStore,
3436
elementDomainUseCaseFactory,
3537
workflowDomainUseCaseFactory,
3638
taskActionDomainUseCaseFactory,
37-
identityAccessValidation
39+
identityAccessValidation,
40+
stageDomainUseCaseFactory
3841
)
3942

4043
@Bean

clef-workflow-api/clef-workflow-api-store/clef-workflow-api-store-element/src/main/kotlin/io/quee/clef/workflow/api/store/element/creator/ElementFlowIdentityCreator.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package io.quee.clef.workflow.api.store.element.creator
22

33
import io.quee.api.develop.store.StoreIdentityCreator
44
import io.quee.clef.workflow.api.domain.element.flow.ElementFlowIdentity
5+
import io.quee.clef.workflow.api.domain.workflow.WorkflowIdentity
6+
import io.quee.clef.workflow.api.domain.workflow.stage.StageIdentity
57
import io.quee.clef.workflow.api.domain.workflow.stage.action.TaskActionIdentity
68
import io.quee.clef.workflow.api.domain.workflow.stage.task.StageTaskIdentity
79

@@ -11,6 +13,10 @@ import io.quee.clef.workflow.api.domain.workflow.stage.task.StageTaskIdentity
1113
* Project **clef-workflow** [Quee.IO](https://quee.io/)<br></br>
1214
*/
1315
interface ElementFlowIdentityCreator : StoreIdentityCreator<ElementFlowIdentity> {
16+
fun WorkflowIdentity.fromWorkflow(): ElementFlowIdentityCreator
17+
fun WorkflowIdentity.toWorkflow(): ElementFlowIdentityCreator
18+
fun StageIdentity.fromStage(): ElementFlowIdentityCreator
19+
fun StageIdentity.toStage(): ElementFlowIdentityCreator
1420
fun StageTaskIdentity.fromTask(): ElementFlowIdentityCreator
1521
fun StageTaskIdentity.toTask(): ElementFlowIdentityCreator
1622
fun TaskActionIdentity.action(): ElementFlowIdentityCreator

0 commit comments

Comments
 (0)