{
* Module: System-oHome-DeepTelos-ProcessModels
* ---------------------------------------------------------
* This file has been extracted from a ConceptBase database.
* Copyright is with the respective authors!

* Time extracted: 2019-07-15T12:24:59,705Z (UTC) 
* Active user: jeusfeld@myon
* CBserver version: 8.1.03 (2019-07-11) 
*
* -author: Manfred Jeusfeld
* -license: Creative Commons Attribution-ShareAlike International 4.0 (CC BY-SA 4.0)
* -uses: https://bscw.dbis.rwth-aachen.de/pub/bscw.cgi/3812285
}

{$set module=System-oHome-DeepTelos-ProcessModels}

{ 2019-07-15 12:10:12.355 }

ProcessModels with 
   comment
    author : "Manfred Jeusfeld";
    license : "Creative Commons Attribution-ShareAlike International 4.0 (CC BY-SA 4.0)";
    uses : "https://bscw.dbis.rwth-aachen.de/pub/bscw.cgi/3812285"
end 

NodeOrLink with 
   attribute
    connectedTo : NodeOrLink
end 

Node isA NodeOrLink  end 

NodeOrLink!connectedTo isA NodeOrLink  end 

ModelType isA Node with 
   attribute
    contains : NodeOrLink
end 

ModelType!contains isA NodeOrLink!connectedTo  end 

{---}

Model with
  IN class: ModelType
  attribute
    content: Proposition
end

Proposition with
  attribute,transitive
    dependsOn: Proposition
end

{---}



GProcessElement in NodeOrLink with 
   connectedTo
    flowTo : GProcessElement
end 

GProcessElement!flowTo isA GProcessElement  end 

GPlace in NodeOrLink,Class isA GProcessElement with 
   attribute
    marks : Integer
  rule
    defaultmarks : $ forall p/GPlace (not exists n/Integer :(p marks n):) ==> (p marks 0) $
end 

GTransition in NodeOrLink isA GProcessElement  end 

M in Function isA Integer with 
   parameter
    p : GPlace
  constraint
    c1 : $ (p marks this) $
end 

Input in GenericQueryClass isA GPlace with 
   parameter
    t : GTransition
  constraint
    ci : $ (this flowTo t) $
end 

Enabled in QueryClass isA GTransition with 
   constraint
    c : $ forall p/Input[this] (M(p) > 0) $
end 

MarkedGPlace in QueryClass isA GPlace with 
   constraint
    c : $ (M(this) > 0) $
end 

ConnectedPlace in GenericQueryClass isA GPlace with 
   parameter
    trans : GTransition
  constraint
    c : $ (this flowTo trans) or (trans flowTo this) $
end 

inFlow in GenericQueryClass isA GProcessElement!flowTo with 
   parameter
    place : GPlace;
    trans : GTransition
  constraint
    c1 : $ From(this,trans) and To(this,place) $
end 

outFlow in GenericQueryClass isA GProcessElement!flowTo with 
   parameter
    place : GPlace;
    trans : GTransition
  constraint
    c1 : $ From(this,place) and To(this,trans) $
end 

IM in Function isA Integer with 
   parameter
    p : GPlace;
    t : GTransition
  constraint
    c1 : $  (t flowTo p) and not (p flowTo t) and (this = 1) or
             (p flowTo t) and not (t flowTo p) and (this = -1) or
             not (p flowTo t) and not (t flowTo p) and (this = 0)
         $
end 

gfire in GenericQueryClass isA YesClass with 
   parameter
    transition : Enabled
  constraint
    c1 : $ (this=yes) $
end 

ReportState in QueryClass isA GPlace with 
   retrieved_attribute
    marks : Integer
end 

StateFormat in AnswerFormat with 
   forQuery
    q : ReportState
  order
    o : ascending
  orderBy
    ob : "this"
  head
    h : "Place   #Tokens
-----------------
"
  pattern
    p : "{this}   {this.marks}
"
  tail
    t : "-----------------
"
end 

{***} { 2019-07-15 12:10:12.589 }

BPMN_Pool in ModelType with 
   contains
    contains : BPMN_Element
end 

BPMN_Element in Node isA GProcessElement with 
   connectedTo
    next : BPMN_Element
end 

BPMN_Activity in Node  end 

BPMN_Event in Node  end 

BPMN_StartEvent in Node isA BPMN_Event  end 

BPMN_StartMessageEvent in Node isA BPMN_StartEvent  end 

BPMN_EndEvent in Node isA BPMN_Event  end 

BPMN_EndMessageEvent in Node isA BPMN_Event  end 

BPMN_IntermediateEvent in Node isA BPMN_Event  end 

BPMN_IntermediateMessageEvent in Node isA BPMN_IntermediateEvent  end 

BPMN_AndGW in Node  end 

BPMN_OrGW in Node  end 

BPMN_EventBasedGW in Node isA BPMN_OrGW  end 

TransitionLike isA BPMN_Element,GTransition  end 

PlaceLike isA BPMN_Element,GPlace  end 

BPMN_Activity isA TransitionLike  end 

BPMN_Event isA PlaceLike  end 

BPMN_AndGW isA TransitionLike  end 

BPMN_OrGW isA PlaceLike  end 

PlainOrGW in QueryClass isA BPMN_OrGW with 
   constraint
    cp : $ :(this in BPMN_OrGW): $
end 

MapBPMNToGPM in Class with 
   rule
    r1 : $ forall a1,a2/TransitionLike link/BPMN_Element!next
              From(link,a1) and To(link,a2) ==> (link in GPlace) $;
    r2 : $ forall a1,a2/TransitionLike link/BPMN_Element!next
              From(link,a1) and To(link,a2) ==> (a1 flowTo link) $;
    r3 : $ forall a1,a2/TransitionLike link/GPlace
              (link in BPMN_Element!next) and
              From(link,a1) and To(link,a2) ==> (link flowTo a2) $;
    r4a : $ forall b1,b2/BPMN_Element link/BPMN_Element!next
              From(link,b1) and To(link,b2) and
              (b1 in TransitionLike) and (b2 in PlaceLike)
          ==> (link in GProcessElement!flowTo) $;
    r4b : $ forall b1,b2/BPMN_Element link/BPMN_Element!next
              From(link,b1) and To(link,b2) and
              (b2 in TransitionLike) and (b1 in PlaceLike)
          ==> (link in GProcessElement!flowTo) $;
    r5a : $ forall g/BPMN_EventBasedGW ie/BPMN_IntermediateEvent b/BPMN_Element
                  n1,n2/BPMN_Element!next
              From(n1,g) and To(n1,ie) and From(n2,ie) and To(n2,b)
              ==> (n2 in GProcessElement!flowTo) $;
    r5b : $ forall g/BPMN_EventBasedGW ie/BPMN_IntermediateEvent b/BPMN_Element
                  n1,n2/BPMN_Element!next
              From(n1,g) and To(n1,ie) and From(n2,ie) and To(n2,b)
              ==> (g flowTo b) $;
    r6a : $ forall g1,g2/PlainOrGW link/BPMN_Element!next
            From(link,g1) and To(link,g2)
            ==> (link in GTransition) $;
    r6b : $ forall g1,g2/BPMN_OrGW link/BPMN_Element!next
            (g1 in PlainOrGW) and (g2 in PlainOrGW) and
            From(link,g1) and To(link,g2)
            ==> (g1 flowTo link) $;
    r6c : $ forall g1,g2/BPMN_OrGW link/GTransition
            (link in BPMN_Element!next) and
            (g1 in PlainOrGW) and (g2 in PlainOrGW) and
            From(link,g1) and To(link,g2)
            ==> (link flowTo g2) $
end 

BPMNPalette in JavaGraphicalPalette,Class isA XPalette with 
   palproperty
    longtitle : "BPMN Graphical Shapes"
  contains
    bp01 : Pool_GT
end 

Pool_GT  end 

Activity_GT  end 

BPMNPalette with 
   contains
    bp02 : Activity_GT;
    bp03 : StartEvent_GT
end 

StartEvent_GT  end 

EndEvent_GT  end 

BPMNPalette with 
   contains
    bp04 : EndEvent_GT;
    bp05 : IntermediateEvent_GT
end 

IntermediateEvent_GT  end 

AndGW_GT  end 

BPMNPalette with 
   contains
    bp06 : AndGW_GT;
    bp07 : OrGW_GT
end 

OrGW_GT  end 

next_GT  end 

BPMNPalette with 
   contains
    bp08 : next_GT;
    bp09 : EnabledActivity_GT
end 

EnabledActivity_GT  end 

EnabledAndGW_GT  end 

BPMNPalette with 
   contains
    bp10 : EnabledAndGW_GT;
    bp11 : MarkedStartEvent_GT
end 

MarkedStartEvent_GT  end 

MarkedOrGW_GT  end 

BPMNPalette with 
   contains
    bp12 : MarkedOrGW_GT;
    bp13 : MarkedEndEvent_GT
end 

MarkedEndEvent_GT  end 

MarkedIntermediateEvent_GT  end 

BPMNPalette with 
   contains
    bp14 : MarkedIntermediateEvent_GT;
    bp15 : StartMessageEvent_GT
end 

StartMessageEvent_GT  end 

EndMessageEvent_GT  end 

BPMNPalette with 
   contains
    bp16 : EndMessageEvent_GT;
    bp17 : IntermediateMessageEvent_GT
end 

IntermediateMessageEvent_GT  end 

message_GT  end 

BPMNPalette with 
   contains
    bp18 : message_GT;
    bp20 : EventBasedGW_GT
end 

EventBasedGW_GT  end 

flow_GT  end 

BPMNPalette with 
   contains
    bp21 : flow_GT;
    bp22 : MarkedIntermediateMessageEvent_GT
end 

MarkedIntermediateMessageEvent_GT  end 

MarkedEventBasedGW_GT  end 

BPMNPalette with 
   contains
    bp23 : MarkedEventBasedGW_GT;
    bp24 : Enabled_next_GT
end 

Enabled_next_GT  end 

Transition_next_GT  end 

BPMNPalette with 
   contains
    bp25 : Transition_next_GT;
    bp26 : Pool_contains_GT
  rule
    r1 : $ forall p/BPMN_Pool (p graphtype Pool_GT) $;
    r2 : $ forall a/BPMN_Activity (a graphtype Activity_GT) $;
    r3 : $ forall a/BPMN_Activity (a in Enabled) ==> (a graphtype EnabledActivity_GT) $;
    r4 : $ forall e/BPMN_StartEvent (e graphtype StartEvent_GT) $;
    r5 : $ forall e/BPMN_EndEvent (e graphtype EndEvent_GT) $;
    r6 : $ forall e/BPMN_IntermediateEvent (e graphtype IntermediateEvent_GT) $;
    r7 : $ forall g/BPMN_AndGW (g graphtype AndGW_GT) $;
    r8 : $ forall g/BPMN_AndGW (g in Enabled) ==> (g graphtype EnabledAndGW_GT) $;
    r9 : $ forall g/BPMN_OrGW (g graphtype OrGW_GT) $;
    r10 : $ forall n/BPMN_Element!next (n graphtype next_GT) $;
    r11 : $ forall g/MarkedGPlace (g in BPMN_OrGW) ==> (g graphtype MarkedOrGW_GT) $;
    r12 : $ forall g/MarkedGPlace (g in BPMN_StartEvent) ==> (g graphtype MarkedStartEvent_GT) $;
    r13 : $ forall g/MarkedGPlace (g in BPMN_EndEvent) ==> (g graphtype MarkedEndEvent_GT) $;
    r14 : $ forall g/MarkedGPlace (g in BPMN_IntermediateEvent) ==> (g graphtype MarkedIntermediateEvent_GT) $;
    r15 : $ forall e/BPMN_StartMessageEvent (e graphtype StartMessageEvent_GT) $;
    r16 : $ forall e/BPMN_EndMessageEvent (e graphtype EndMessageEvent_GT) $;
    r17 : $ forall e/BPMN_IntermediateMessageEvent (e graphtype IntermediateMessageEvent_GT) $;
    r18 : $ forall n/BPMN_Element!next p1,p2/BPMN_Pool e1,e2/BPMN_Element
                     (p1 <> p2) and From(n,e1) and To(n,e2) and
                     (p1 contains e1) and (p2 contains e2) ==> (n graphtype message_GT) $;
    r20 : $ forall e/BPMN_EventBasedGW (e graphtype EventBasedGW_GT) $;
    r21 : $ forall n/BPMN_Element!next (n in GProcessElement!flowTo) ==> (n graphtype flow_GT) $;
    r22 : $ forall e/MarkedGPlace (e in BPMN_IntermediateMessageEvent) ==> (e graphtype MarkedIntermediateMessageEvent_GT) $;
    r23 : $ forall e/MarkedGPlace (e in BPMN_EventBasedGW) ==> (e graphtype MarkedEventBasedGW_GT) $;
    r24 : $ forall n/BPMN_Element!next (n in Enabled) ==> (n graphtype Enabled_next_GT) $;
    r25 : $ forall n/BPMN_Element!next (n in GTransition) ==> (n graphtype Transition_next_GT) $;
    r26 : $ forall n/BPMN_Pool!contains (n graphtype Pool_contains_GT) $
end 

Pool_contains_GT  end 

Pool_GT in JavaGraphicalType with 
   property
    bgcolor : "249,249,249";
    textcolor : "120,120,120";
    linecolor : "0,0,0";
    fontsize : "10";
    size : "resizable";
    align : "top";
    shape : "PolygonShape; 0,120,121,121,121,2500,2500,   0,0;
                           0,  0,998,998,  0,   0,1000,1000,0";
    nodelevel : "-101"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 22
end 

Activity_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,200";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.RoundRectangle";
    fontsize : "12"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 20
end 

EnabledActivity_GT in JavaGraphicalType with 
   property
    clickaction : "gfire -n";
    bgcolor : "200,255,180";
    textcolor : "0,0,0";
    linecolor : "200,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.RoundRectangle";
    fontsize : "12"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 22
end 

StartEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "1";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 20
end 

MarkedStartEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "220,250,220";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "1";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 22
end 

StartMessageEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "1";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    textposition : "center";
    size : "20x20";
    image : "bpmnicons/wmessage.png"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 21
end 

EndEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "3";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 20
end 

MarkedEndEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "220,250,220";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "3";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 22
end 

EndMessageEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "3";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    textposition : "center";
    size : "20x20";
    image : "bpmnicons/wmessage.png"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 21
end 

IntermediateEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "250,250,250";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 20
end 

MarkedIntermediateEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "220,250,220";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 22
end 

IntermediateMessageEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "250,250,250";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    textposition : "center";
    size : "20x20";
    image : "bpmnicons/wmessage.png"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 21
end 

MarkedIntermediateMessageEvent_GT in JavaGraphicalType with 
   property
    bgcolor : "220,250,220";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Circle";
    fontsize : "12";
    label : " ";
    textposition : "center";
    size : "20x20";
    image : "bpmnicons/wmessage.png"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 23
end 

AndGW_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Diamond";
    fontsize : "14";
    fontstyle : "bold";
    label : "+";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 20
end 

EnabledAndGW_GT in JavaGraphicalType with 
   property
    clickaction : "gfire -n";
    bgcolor : "200,255,180";
    textcolor : "0,0,0";
    linecolor : "200,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Diamond";
    fontsize : "14";
    fontstyle : "bold";
    label : "+";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 22
end 

OrGW_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Diamond";
    fontsize : "14";
    fontstyle : "bold";
    label : "x";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 20
end 

MarkedOrGW_GT in JavaGraphicalType with 
   property
    bgcolor : "220,250,220";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Diamond";
    fontsize : "14";
    fontstyle : "bold";
    label : "x";
    size : "20x20"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 22
end 

EventBasedGW_GT in JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Diamond";
    fontsize : "14";
    fontstyle : "bold";
    label : " ";
    textposition : "center";
    size : "20x20";
    image : "bpmnicons/wpentagon.png"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 21
end 

MarkedEventBasedGW_GT in JavaGraphicalType with 
   property
    bgcolor : "220,250,220";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "2";
    shape : "i5.cb.graph.shapes.Diamond";
    fontsize : "14";
    fontstyle : "bold";
    label : " ";
    textposition : "center";
    size : "20x20";
    image : "bpmnicons/wpentagon.png"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 23
end 

next_GT in JavaGraphicalType,Class with 
   property
    textcolor : "0,0,0";
    edgecolor : "120,120,120";
    edgewidth : "2";
    label : "";
    bgcolor : "220,120,120"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 20
end 

Transition_next_GT in JavaGraphicalType,Class with 
   property
    textcolor : "0,0,0";
    edgecolor : "120,120,120";
    edgewidth : "2";
    label : "next";
    bgcolor : "255,255,255"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 23
end 

Enabled_next_GT in JavaGraphicalType,Class with 
   property
    clickaction : "gfire -n";
    textcolor : "0,0,0";
    edgecolor : "120,120,120";
    edgewidth : "2";
    label : "next";
    bgcolor : "200,255,180"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 24
end 

flow_GT in JavaGraphicalType,Class with 
   property
    textcolor : "0,0,0";
    edgecolor : "140,110,110";
    edgewidth : "2";
    label : "";
    bgcolor : "220,120,120"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 21
end 

message_GT in JavaGraphicalType,Class with 
   property
    textcolor : "0,0,0";
    edgecolor : "120,120,120";
    edgewidth : "2";
    edgestyle : "dashed";
    label : "";
    bgcolor : "220,120,120"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 22
end 

Pool_contains_GT in JavaGraphicalType,Class with 
   property
    textcolor : "0,0,0";
    edgecolor : "50,50,50";
    edgewidth : "1";
    edgestyle : "dotted";
    label : "";
    bgcolor : "220,120,120"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 22
end 



{---} { 2019-07-15 12:10:13.091 }

ProcessType in ModelType with 
   contains
    contains : ProcessElementType
end 

ProcessElementType in Node  end 

{***} { 2019-07-15 12:10:13.183 }

ArtifactType in Node isA ProcessElementType  end 

{***} { 2019-07-15 12:10:13.280 }

TaskType in Node isA ProcessElementType  end 

{***} { 2019-07-15 12:10:13.363 }

ActorType in Node isA ProcessElementType  end 

{***} { 2019-07-15 12:10:13.463 }

BPMN_Element isA ProcessElementType  end 

{***} { 2019-07-15 12:10:13.559 }

ProcessGatewayType in Node isA ProcessElementType  end 

BPMN_AndGW isA ProcessGatewayType  end 

BPMN_OrGW isA ProcessGatewayType  end 

BPMN_Pool isA ActorType  end 

{***} { 2019-07-15 12:10:13.648 }

BPMN_Activity isA TaskType  end 

{***} { 2019-07-15 12:10:13.752 }

TaskType with 
   connectedTo
    uses : ArtifactType;
    produces : ArtifactType
end 

{***} { 2019-07-15 12:10:13.856 }

ValidationTaskType in Node isA TaskType  end 

CriticalTaskType in Node isA TaskType  end 

{***} { 2019-07-15 12:10:13.957 }

Actor with 
   IN
    class : ActorType
end 

Artifact with 
   IN
    class : ArtifactType
end 

ActorType in Class  end 

ArtifactType in Class  end 

{***} { 2019-07-15 12:10:14.275 }

SeniorActorType in Node isA ActorType  end 

SeniorActor with 
   IN
    class : SeniorActorType
end 

SeniorActorType in Class  end 

{***} { 2019-07-15 12:10:14.496 }

Task with 
   IN
    class : TaskType
end 

Actor in Class  end 

TaskType in Class  end 

{***} { 2019-07-15 12:10:14.744 }

Process with 
   IN
    class : ProcessType
end 

ProcessType in Class  end 

{***} { 2019-07-15 12:10:15.007 }

Task with 
   attribute
    uses : Artifact;
    produces : Artifact
end 

{***} { 2019-07-15 12:10:15.122 }

Task!uses with 
   IN
    class : TaskType!uses
end 

{***} { 2019-07-15 12:10:15.410 }

Task!produces with 
   IN
    class : TaskType!produces
end 

{---} { 2019-07-15 12:10:15.696 }

ProcessElement with 
   IN
    class : ProcessElementType
end 

ProcessElementType in Class  end 

{***} { 2019-07-15 12:10:16.032 }

Process with 
   attribute
    contains : ProcessElement
end 

ProcessElement in Class  end 

{***} { 2019-07-15 12:10:16.235 }

Process!contains with 
   IN
    class : ProcessType!contains
end 

{---} { 2019-07-15 12:10:16.535 }

CriticalTask isA Task with 
   IN
    class : CriticalTaskType
end 

CriticalTask!class isA Task!class  end 

CriticalTaskType in Class  end 

{---} { 2019-07-15 12:10:16.838 }

ValidationTask isA Task with 
   IN
    class : ValidationTaskType
end 

ValidationTask!class isA Task!class  end 

ValidationTaskType in Class  end 

{***} { 2019-07-15 12:10:17.220 }

TaskType with 
   connectedTo
    executortype : ActorType
  attribute
    creator : Actor
end 

{***} { 2019-07-15 12:10:17.381 }

NormalActorType isA ActorType  end 

{***} { 2019-07-15 12:10:17.516 }

SeniorManager in SeniorActorType  end 

ProjectLeader in SeniorActorType  end 

RegularEmployee in NormalActorType  end 

SeniorActor in Class  end 

{***} { 2019-07-15 12:10:17.976 }

Document in ArtifactType  end 

Invoice isA Document  end 

TravelExpenseStatement isA Document  end 

ProgramCode in ArtifactType  end 

Artifact in Class  end 

{***} { 2019-07-15 12:10:18.386 }

Proposition with 
   attribute
    altname : String
end 

{***} { 2019-07-15 12:10:18.557 }

Task in Class with 
   attribute
    begindate : Integer;
    enddate : Integer;
    duration : Integer
end 

{***} { 2019-07-15 12:10:18.719 }

taskDuration in Function isA Integer with 
   parameter
    t : Task
  constraint
    cdur : $ exists d1,d2/Integer (t begindate d1) and (t enddate d2) and (this = d2-d1) $
end 

{***} { 2019-07-15 12:10:18.894 }

Task with 
   rule
    durrule : $ forall t/Task d/Integer (d = taskDuration(t)) ==> (t duration d) $
end 

{***} { 2019-07-15 12:10:19.071 }

TaskType with 
   attribute
    plannedduration : Integer
end 

{***} { 2019-07-15 12:10:19.228 }

taskDelay in Function isA Integer with 
   parameter
    t : Task
  constraint
    cdelay : $ exists T/TaskType d1,d2/Integer 
                  (t in T) and (t duration d1) and (T plannedduration d2) and (this = d1-d2)$
end 

{***} { 2019-07-15 12:10:38.222 }

DelayedTask in QueryClass isA Task with 
   constraint
    isDelayed : $ exists T/TaskType pd,d/Integer
                 (this in T) and (T plannedduration pd) and
                 (this duration d) and (d > pd) $
end 

{***} { 2019-07-15 12:10:19.451 }


Task with 
   attribute
    executor : Actor
end 

Actor with 
   attribute
    authorizedFor : TaskType
end 

{***} { 2019-07-15 12:10:19.643 }

AuthorizedTaskType in QueryClass,MSFOLrule isA TaskType with 
   constraint
    catt : $ exists a/Actor (a authorizedFor this) $
end 

{***} { 2019-07-15 12:10:19.819 }

Actor with 
   constraint
    isAuthorized : $ forall a/Actor t/Task T/AuthorizedTaskType
          (t in T) and (t executor a) ==> (a authorizedFor T) $
end 

{***} { 2019-07-15 12:10:20.015 }

CriticalButNotValidatedM1 in QueryClass isA CriticalTaskType with 
   constraint
    c3 : $ exists x/ArtifactType (this produces x) and 
           not (exists vt/ValidationTaskType (vt uses x)) $
  comment
    com1 : "This query checks at the model level (M1) whether validation tasks are planned"
end 

{***} { 2019-07-15 12:10:20.179 }

CriticalButNotValidatedM0 in QueryClass isA CriticalTask with 
   constraint
    c3 : $ exists x/Artifact (this produces x) and 
           not (exists vt/ValidationTask (vt uses x)) $
  comment
    com1 : "This query checks at the data level (M0) whether validation tasks are executed"
end 

{***} { 2019-07-15 12:10:20.363 }

CodingProcess in Module  end 

{***} { 2019-07-15 12:10:20.512 }

ProperProcessType in QueryClass isA ProcessType with 
   constraint
    isProper : $ (this <> Process) and not (this in QueryClass) $
end 

ProperTaskType in QueryClass isA TaskType with 
   constraint
    isProper : $ (this <> Task) and not (this in QueryClass) $
end 

ProperProcess in QueryClass isA Process with 
   constraint
    isProper : $ not (this in QueryClass) $
end 

ProperTask in QueryClass isA Task with 
   constraint
    isProper : $ not (this in QueryClass) $
end 

{***} { 2019-07-15 12:10:20.704 }

MatchedTask in QueryClass isA ProperTask with 
   constraint
    cm : $ exists T/ProperTaskType 
                  PT/ProperProcessType
                  P/ProperProcess
      (P contains this) and
      :(this in T): and (P in PT) and
      (PT <> Process) and (T <> Task) and (PT contains T) $
end 

UnmatchedTask in QueryClass isA ProperTask with 
   computed_attribute
    T : ProperTaskType;
    PT : ProperProcessType;
    P : ProperProcess
  constraint
    cm : $ 
      (P contains this) and
      :(this in T): and (P in PT) and
      (PT <> Process) and (T <> Task) and not (PT contains T) $
end 

{***}

ArtifactType in Class with
  rule
    deprule1: $ forall a1,a2/ArtifactType tt/TaskType
                     (tt uses a1) and (tt produces a2) and (tt <> Task) ==> (a2 dependsOn a1) $
end

Artifact in Class with
  rule
    deprule2: $ forall a1,a2/Artifact t/Task
                     (t uses a1) and (t produces a2) ==> (a2 dependsOn a1) $
end


{***}

Depender in GenericQueryClass isA Proposition with
  parameter,computed_attribute
     dependee: Proposition
  constraint
     depc1: $ (~this dependsOn ~dependee) $
end

Dependee in GenericQueryClass isA Proposition with
  parameter,computed_attribute
     depender: Proposition
  constraint
     depc1: $ (~depender dependsOn ~this) $
end


{---}




ImplicitGT_dependsOn in Class,JavaGraphicalType with 
   property
    bgcolor : "255,255,255,240";
    textcolor : "0,0,0";
    edgecolor : "100,100,100";
    edgewidth : "1";
    edgestyle : "dotted";
    label : "depOn";
    fontsize: "8";
    edgeheadcolor : "255,10,10";
    edgeheadshape : "SmallArrow"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 7
end 

DependsOn_GT in Class,JavaGraphicalType with 
   property
    bgcolor : "255,255,255,240";
    textcolor : "0,0,0";
    edgecolor : "100,100,100";
    edgewidth : "1";
    edgestyle : "continuous";
    label : "depOn";
    fontsize: "8";
    edgeheadcolor : "255,10,10";
    edgeheadshape : "SmallArrow"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 7
  rule
    gtrule : $ forall a/Proposition!dependsOn (a graphtype DependsOn_GT) $
end

Task_GT in Class,JavaGraphicalType with 
   property
    bgcolor : "255,255,225";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "1";
    shape : "i5.cb.graph.shapes.RoundRectangle";
    size : "resizable";
    fontsize : "10"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 21
  rule
    gtrule : $ forall t/Task (t graphtype Task_GT) $
end 

Artifact_GT in Class,JavaGraphicalType with 
   property
    bgcolor : "255,255,225";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    linewidth : "1";
    shape : "i5.cb.graph.shapes.Page";
    size : "resizable";
    fontsize : "10"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 21
  rule
    gtrule : $ forall a/Artifact (a graphtype Artifact_GT) $
end 

1_ProcessPalette in Class,JavaGraphicalPalette isA XPalette with 
   palproperty
    bgcolor : "255,255,255";
    longtitle : "ProcessModeling"
  contains,implicitInstanceOf
    sp4 : INSTOFDEDUCED_GT
  contains,implicitAttribute
    sp5 : ATTRDEDUCED_GT
  contains,implicitIsA
    sp6 : ISADEDUCED_GT
  contains
    sp7 : ISA_GT;
    sp1 : INDIVIDUAL_GT;
    sp2 : INSTOF_GT;
    sp3 : ATTR_GT;
    dt15 : IN_Link_GT;
    dt16 : SPEC_Link_GT;
    dt17 : ImplicitGT_ISA;
    pt1 : ImplicitGT_dependsOn;
    pt2 : DependsOn_GT;
    pt3 : Task_GT;
    pt4 : Artifact_GT;
    bp01 : Pool_GT;
    bp02 : Activity_GT;
    bp03 : StartEvent_GT;
    bp04 : EndEvent_GT;
    bp05 : IntermediateEvent_GT;
    bp06 : AndGW_GT;
    bp07 : OrGW_GT;
    bp08 : next_GT;
    bp09 : EnabledActivity_GT;
    bp10 : EnabledAndGW_GT;
    bp11 : MarkedStartEvent_GT;
    bp12 : MarkedOrGW_GT;
    bp13 : MarkedEndEvent_GT;
    bp14 : MarkedIntermediateEvent_GT;
    bp15 : StartMessageEvent_GT;
    bp16 : EndMessageEvent_GT;
    bp17 : IntermediateMessageEvent_GT;
    bp18 : message_GT;
    bp20 : EventBasedGW_GT;
    bp21 : flow_GT;
    bp22 : MarkedIntermediateMessageEvent_GT;
    bp23 : MarkedEventBasedGW_GT;
    bp24 : Enabled_next_GT;
    bp25 : Transition_next_GT;
    bp26 : Pool_contains_GT
end 



{ -/- }