Open Exchange
Global Masters
Home / Class Reference / ENSLIB namespace / Ens.BPL.Compiler
Private  Storage   


class Ens.BPL.Compiler extends

This is the BPL Compiler. It it called during the compilation process of subclasses of Ens.BusinessProcessBPL to generate the business process runtime classes. These debug flags affect the diagnostic output of the compiler:- ^Ens.Debug("ShowGeneratedXML") - Displays XML reconstructed from the parse tree to the current device.


Parameters Properties Methods Queries Indices ForeignKeys Triggers
17 17


BreakStack CompensationHandlers Context ContextStack
ContinueStack CurrentMethod CurrentStateCounter CurrentThread
Language MethodCounter MethodStack Process
PropertiesToNew StateCounterStack StateStack ThreadCounter

%AddToSaveSet %ClassIsLatestVersion %ClassName %ConstructClone
%DispatchClassMethod %DispatchGetModified %DispatchGetProperty %DispatchMethod
%DispatchSetModified %DispatchSetMultidimProperty %DispatchSetProperty %Extends
%GetParameter %IsA %IsModified %New
%NormalizeObject %ObjectModified %OriginalNamespace %PackageName
%RemoveFromSaveSet %SerializeObject %SetModified %ValidateObject
CompileStream CreateAlarmCall CurrentMethodGet CurrentStateCounterGet
CurrentThreadGet EndMethod EndResponseMethod EndThread
EvaluateIndirection GenerateClass GenerateCode GenerateXML
GetStateForLabel LanguageGet StartMethod StartThread


• property BreakStack as Ens.BPL.Stack;
This holds the stack of states which may be broken to
• property CompensationHandlers as %String [ MultiDimensional ];
This holds the collection of compensatation handlers which are active for the current scope
• property Context as %Dictionary.ClassDefinition;
This holds the business class being generated
• property ContextStack as Ens.BPL.ContextStack;
This holds the current context of the compilation. It supports a 'Path' property which defines the current position in the nesting hierarchy of the parse tree being traversed.
• property ContinueStack as Ens.BPL.Stack;
This holds the stack of states which may be continued to
• property CurrentMethod as %Dictionary.MethodDefinition [ Calculated ];
This holds the current method being generated
• property CurrentStateCounter as Ens.BPL.Counter [ Calculated ];
This holds the counter for the current state
• property CurrentThread as Ens.BPL.CompilerThread [ Calculated ];
This holds the current thread being generated
• property Language as %String;
This holds the language for the generated classes
• property MethodCounter as Ens.BPL.Counter;
This holds the method counter
• property MethodStack as Ens.BPL.Stack;
This holds the stack of methods being generated
• property Process as Ens.BPL.Process;
This holds the root of the parse tree being compiled
• property PropertiesToNew as list of %String;
This holds the list of properties which must be instantiated in the %OnNew() method of the context class
• property StateCounterStack as Ens.BPL.Counter;
This holds the state counter
• property StateStack as Ens.BPL.Stack;
This holds the stack of states
• property ThreadCounter as Ens.BPL.Counter;
This holds the thread counter
• property ThreadStack as Ens.BPL.Stack;
This holds the stack of thread classes being generated. There is at minimum a single thread class which implements the top-level activities of the process.


• classmethod CompileStream(pStream As %BinaryStream, pPackage As %String) as %Status
Parse the BPL contained in the supplied stream and generate/compile the resulting Business Process and its supporting Classes. The Package parameter must contain the name of the cache package prefix which will be prepended to the names of the generated classes
• method CreateAlarmCall(Output pCall As Ens.BPL.Call, pCallName As %String, pDuration As %String, pUntil As %String = "") as %Status
• method CurrentMethodGet() as %Dictionary.MethodDefinition
Accessor for the CurrentMethod property.
• method CurrentStateCounterGet() as Ens.BPL.Counter
Accessor for the CurrentStateCounter property.
• method CurrentThreadGet() as Ens.BPL.CompilerThread
Accessor for the CurrentThread property.
• method EndMethod() as %Status
• method EndResponseMethod() as %Status
• method EndThread() as %Status
• classmethod EvaluateIndirection(pString As %String, ByRef pVersion As %Integer) as %Status
• method GenerateClass() as %Status
• classmethod GenerateCode(pProcess As Ens.BPL.Process) as %Status
Given the root of the parse tree, ( an instance of Ens.BPL.Process ), generate the classes corresponding to the process definition
• classmethod GenerateXML(pProcess As Ens.BPL.Process) as %Status
• method GetStateForLabel(pLabel As %String) as %String
• method LanguageGet() as %String
Accesor for Language
• method StartMethod(pName As %String, pThread As Ens.BPL.CompilerThread, pThreadMethod=1, pContext=0) as %Status
Generate definition
• method StartThread(pThreadName As %String) as %Status