blob: 83f014e9f48605dd56010083d4da3d738f0b7c31 [file] [log] [blame]
ePackageImport bank
//Input: client=John, accountId=20
rule createAccount(client:EString,accountId:EInt){
graph{
node BankNode:bank.Bank
node ManagerNode:bank.Manager
node ClientNode:bank.Client{
name=client
}
create node AccountNode:bank.Account{
id=accountId
}
edges[(BankNode->ManagerNode:managers),
(BankNode->ClientNode:clients),
(ManagerNode->ClientNode:clients),
(create BankNode->AccountNode:accounts),
(create ClientNode->AccountNode:accounts)]
matchingFormula{
formula !accountGraph
conditionGraph accountGraph{
node ForbidNode:bank.Account{
id=accountId
}
edges[(BankNode->ForbidNode:accounts)]
}
}
}
}
//Input: client= any name
rule clientNotExist(client:EString){
graph{
node BankNode:bank.Bank
node ManagerNode:bank.Manager{
}
edges[(BankNode->ManagerNode:managers)]
matchingFormula{
formula !accountGraph
conditionGraph accountGraph{
node ForbidNode:bank.Client{
name=client
}
edges[(BankNode->ForbidNode:clients)]
}
}
}
}
//Input: client= any name
rule createNewClient(client:EString){
graph{
node BankNode:bank.Bank
node ManagerNode:bank.Manager
create node ClientNode:bank.Client{
name=client
}
edges[(BankNode->ManagerNode:managers),
(create BankNode->ClientNode:clients),
(create ManagerNode->ClientNode:clients)]
matchingFormula{
formula !accountGraph
conditionGraph accountGraph{
node ForbidNode:bank.Client{
name=client
}
edges[(BankNode->ForbidNode:clients)]
}
}
}
}