@LANGUAGE ENGLISH @VERSION 1.03.00 ! CI-Eng-Sample classes, compiled on load (COMPILE = 1), CI Server R1.03.00 ! CIENG_INCR : traditional, based on the INCREMENT example of the Tutorial (IM 36K10G10-01EN 5.2) ! CIENG_TANK : traditional; prompt/attribute, signal to .LEVEL, item created from ! the template TEMPLATES.TPL_REAL (automatic name .VOLUME), ERROR in the prolog ! CIENG_JFLOW: Java; attaches .INFLOW, creates .sPerMin (automatic name) ! Changing a class that has objects: compile, then reset the class (see skill class-object-engineering). @FIELDS NAME,DESCRIPTION,PF_LANGUAGE,TRIGGER_1,COMPILE,LISTING_WANTED,METHOD @CLASS_DF "CIENG_INCR","Count CI-Eng-Sample.DEMO.COUNTER 1..100","Traditional","CIENG_1S",1,1,@" CLASS CIENG_INCR; PROLOG SIGNAL INPUT := "CI-Eng-Sample.DEMO.COUNTER"; BODY METHOD UP_AND_DOWN; BODY IF (INPUT >= 100) THEN INPUT := 0; ENDIF; INPUT := INPUT + 1; ENDMETHOD UP_AND_DOWN; ENDCLASS CIENG_INCR; "@ "CIENG_TANK","Tank volume from level x capacity","Traditional","",1,1,@" CLASS CIENG_TANK; PROLOG ATTRIBUTE CAPACITY OBJECT FLOAT; PROMPT CAPACITY QUERY "Tank capacity (m3)"; SIGNAL LEVEL := SECTION || ".LEVEL" TRIGGER VALUE; SIGNAL VOLUME := FROM "CI-Eng-Sample.TEMPLATES.TPL_REAL" MAKE "DESCRIPTION" EQUAL "Tank volume (m3), class CIENG_TANK"; IF CAPACITY <= 0 THEN ERROR "CIENG_TANK: capacity must be > 0"; ENDIF; BODY METHOD CALC; BODY VOLUME := LEVEL * CAPACITY / 100.0; IF LEVEL >=: 80.0 THEN PRINT "CIENG_TANK ", SECTION, ": level reached 80 pct, volume ", VOLUME; ENDIF; ENDMETHOD CALC; ENDCLASS CIENG_TANK; "@ "CIENG_JFLOW","Inflow per minute (Java)","Java","",1,0,@" import fasttools.processfast.*; public class CIENG_JFLOW extends ProcessClass { Signal sInflow = defineDoubleSignal(Signal.Trigger.VALUE); Signal sPerMin = defineDoubleSignal(); public void create() { attachItemToSignal(sInflow, getSectionsPath() + ".INFLOW"); createItemForSignal(sPerMin, "CI-Eng-Sample.TEMPLATES.TPL_REAL", "DESCRIPTION", "Tank inflow (m3/min), class CIENG_JFLOW"); } public void signalEvent(Signal signal) { double mInflow = sInflow.getValueAsDouble(); sPerMin.setValue(mInflow / 60.0); systemMessage("CIENG_JFLOW " + getTag() + ": inflow " + mInflow); } } "@