Declarative Workflow Metamodel

//Declarative Workflow Metamodel

enum State = waiting | running | done | skipped | failed | canceled

abstract OrgUnit
    name : string 
    super -> OrgUnit ?
        [parent in this.sub]
    sub -> OrgUnit *
        [parent in this.super]
    role -> Role *
        [parent in this.orgUnit]

abstract BindingObject
    name : string 
    activity -> Activity *
        [parent in this.bindingObject]

abstract Role : BindingObject 
    orgUnit -> OrgUnit ?
        [parent in this.role]
    person -> Person *
        [parent in this.role]

abstract Person : BindingObject 
    role -> Role *
        [parent in this.person]

abstract DataObject
    classname : string 
    activity -> Activity ?
        [parent in this.dataObject]

abstract DataRead : DataObject 
    selection : string 

abstract DataCreate : DataObject 

abstract DataEdit : DataObject 
    selection : string 

abstract DataflowObject
    activity -> Activity 2..*
        [parent in this.dataflowObject]

abstract PatientData : DataflowObject 
    name : string 
    age : int 
    urgency : int 
    disease -> Disease 

abstract Disease
    name : string 

abstract FlowObject
    process -> Process ?
        [parent in this.flowObject]
    pred -> FlowObject *
        [parent in this.succ]
    succ -> FlowObject *
        [parent in this.pred]

abstract FlowOperator : FlowObject 

abstract AndOperator : FlowOperator 

abstract MergeOperator : FlowOperator 

abstract Discriminator : FlowOperator 

abstract Process
    name : string 
    flowObject -> FlowObject *
        [parent in this.process]

abstract CancelProcess : Process 

abstract ActivityGroup : FlowObject 
    name : string 
    before -> ActivityGroup *
        [parent in this.until]
    until -> ActivityGroup *
        [parent in this.before]
    guard -> Guard *
        [parent in this.option]

abstract Activity : ActivityGroup 
    state -> State 
    start : int 
    finish : int 
    dataObject -> DataObject *
        [parent in this.activity]
    dataflowObject -> DataflowObject *
        [parent in this.activity]
    iteration -> Iteration ?
        [parent in this.activity]
    multiInstance -> MultiInstance ?
        [parent in this.activity]
    group -> Group *
        [parent in this.activity]
    bindingObject -> BindingObject *
        [parent in this.activity]
    activities -> Activity *
	[this in pred]
    [all a:Activity|a in pred => a in activities]
    ops -> Group *
	[this in pred]
    [all g:Group| g in pred => g in ops]
    [state = running => ((all a:activities|a.state = done || a.state = skipped)&&(all a:ops.activity|a.state = done || a.state = skipped))]

abstract Cancel : Activity 

abstract Iteration : Activity 
    iterCount : int 
    iterMax : int 
    activity -> Activity *
        [parent in this.iteration]

abstract MultiInstance : Activity 
    noOfInst : int 
    activity -> Activity *
        [parent in this.multiInstance]

abstract MIWithoutSync : MultiInstance 

abstract MIWithSync : MultiInstance 

abstract MIRuntime : MultiInstance 

abstract MIRuntimeWithAdd : MultiInstance 

abstract Decision : Activity 
    guard_ -> Guard *
        [parent in this.decision]

abstract OrDecision : Decision 

abstract XorDecision : Decision 

abstract NandDecision : Decision 

abstract Timer
    ticks : int 
    seconds : int 

abstract Group : ActivityGroup 
    activity -> Activity +
        [parent in this.group]
    iterationGroup -> IterationGroup ?
        [parent in this.group]
    activities -> Activity *
	[this in pred]
    [all a:Activity|a in pred => a in activities]
    ops -> Group *
	[this in pred]
    [all g:Group| g in pred => g in ops]
    [(some a:activity|a.state = running) => ((all a:activities|a.state = done || a.state = skipped)&&(all a:ops.activity|a.state = done || a.state = skipped))]

abstract DeferredChoice : Group 

abstract InterleavedParallelRouting : Group 

abstract Parallel : Group 

abstract IterationGroup : Group 
    iterCount : int 
    iterMax : int 
    group -> Group *
        [parent in this.iterationGroup]

abstract MultiMerge : IterationGroup 

abstract Guard
    condition : string 
    selected ?
    decision -> Decision ?
        [parent in this.guard_]
    option -> ActivityGroup *
        [parent in this.guard]  

Module Statistics: | No model. |

Module Downloads: | [.cfr] | [.html] |