#created on: 4/11/2008 package org.openiaml.model.drools.rules.operations #list any import classes here. import org.openiaml.model.drools.*; import org.openiaml.model.inference.*; import org.openiaml.model.model.*; import org.openiaml.model.model.impl.*; import org.openiaml.model.model.wires.*; import org.openiaml.model.model.visual.*; import org.openiaml.model.model.operations.*; import org.openiaml.model.model.domain.*; #declare any global variables here global EcoreCreateElementsHelper handler; global DroolsInsertionQueue queue; global DroolsHelperFunctions functions; rule "Create 'update' operation for input text field" when f : InputTextField( overridden == false ) not (Operation( eContainer == f, name=="update" )) then CompositeOperation operation = handler.generatedCompositeOperation(f, f); handler.setName(operation, "update"); queue.add(operation, drools); end rule "Create 'update' operation for domain attribute" when f : DomainAttribute( overridden == false ) not (Operation( eContainer == f, name=="update" )) then CompositeOperation operation = handler.generatedCompositeOperation(f, f); handler.setName(operation, "update"); queue.add(operation, drools); end rule "Create 'update' operation for domain attribute instance" when f : DomainAttributeInstance( overridden == false ) not (Operation( eContainer == f, name=="update" )) then CompositeOperation operation = handler.generatedCompositeOperation(f, f); handler.setName(operation, "update"); queue.add(operation, drools); end rule "Create 'init' operation for input text field" when f : InputTextField( overridden == false ) not (Operation( eContainer == f, name=="init" )) then CompositeOperation operation = handler.generatedCompositeOperation(f, f); handler.setName(operation, "init"); queue.add(operation, drools); end rule "Create components of 'update', 'refresh', 'init' operations" when o : CompositeOperation(overridden == false, (name == "update" || name == "refresh" || name == "init")) field : ApplicationElementProperty( eContainer == o.eContainer, name == "fieldValue" ) then Parameter parameter = handler.generatedParameter(o, o); handler.setName(parameter, "setValueTo"); queue.add(parameter, drools); PrimitiveOperation op = handler.generatedPrimitiveOperation(o, o); handler.setName(op, "setPropertyToValue"); queue.add(op, drools); StartNode start = handler.generatedStartNode(o, o); queue.add(start, drools); FinishNode finish = handler.generatedFinishNode(o, o); queue.add(finish, drools); DataFlowEdge data1 = handler.generatedDataFlowEdge(o, o); handler.setFrom(data1, parameter); handler.setTo(data1, op); queue.add(data1, drools); DataFlowEdge data2 = handler.generatedDataFlowEdge(o, o); handler.setFrom(data2, op); handler.setTo(data2, field); queue.add(data2, drools); ExecutionEdge edge1 = handler.generatedExecutionEdge(o, o); handler.setFrom(edge1, start); handler.setTo(edge1, op); queue.add(edge1, drools); ExecutionEdge edge2 = handler.generatedExecutionEdge(o, o); handler.setFrom(edge2, op); handler.setTo(edge2, finish); queue.add(edge2, drools); end rule "Create components of 'alert' operation" when o : CompositeOperation(overridden == false, (name == "alert")) then Parameter parameter = handler.generatedParameter(o, o); handler.setName(parameter, "alertText"); queue.add(parameter, drools); PrimitiveOperation op = handler.generatedPrimitiveOperation(o, o); handler.setName(op, "javascriptAlert"); queue.add(op, drools); StartNode start = handler.generatedStartNode(o, o); queue.add(start, drools); FinishNode finish = handler.generatedFinishNode(o, o); queue.add(finish, drools); DataFlowEdge data1 = handler.generatedDataFlowEdge(o, o); handler.setFrom(data1, parameter); handler.setTo(data1, op); queue.add(data1, drools); ExecutionEdge edge1 = handler.generatedExecutionEdge(o, o); handler.setFrom(edge1, start); handler.setTo(edge1, op); queue.add(edge1, drools); ExecutionEdge edge2 = handler.generatedExecutionEdge(o, o); handler.setFrom(edge2, op); handler.setTo(edge2, finish); queue.add(edge2, drools); end