Class OpenWFE::ExpressionMap
In: lib/openwfe/expressions/expressionmap.rb
Parent: Object

The mapping between expression names like ‘sequence’, ‘participant’, etc and classes like ‘ParticipantExpression’, ‘SequenceExpression’, etc.

Methods

Public Class methods

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 78
 78:         def initialize ()
 79: 
 80:             super
 81: 
 82:             @expressions = {}
 83:             @ancestors = {}
 84: 
 85:             register DefineExpression
 86: 
 87:             register SequenceExpression
 88:             register ParticipantExpression
 89: 
 90:             register ConcurrenceExpression
 91:             register GenericSyncExpression
 92: 
 93:             register ConcurrentIteratorExpression
 94: 
 95:             register SubProcessRefExpression
 96: 
 97:             register SetValueExpression
 98:             register UnsetValueExpression
 99: 
100:             register DefinedExpression
101: 
102:             register IfExpression
103:             register CaseExpression
104: 
105:             register EqualsExpression
106: 
107:             register SleepExpression
108:             register CronExpression
109:             register WhenExpression
110:             register WaitExpression
111: 
112:             register ReserveExpression
113: 
114:             register RevalExpression
115:             register PrintExpression
116:             register LogExpression
117: 
118:             register LoseExpression
119:             register ForgetExpression
120: 
121:             register CursorExpression
122:             register LoopExpression
123: 
124:             register CursorCommandExpression
125: 
126:             register IteratorExpression
127: 
128:             register FqvExpression
129:             register AttributeExpression
130: 
131:             register CancelProcessExpression
132: 
133:             register UndoExpression
134:             register RedoExpression
135: 
136:             register SaveWorkItemExpression
137:             register RestoreWorkItemExpression
138: 
139:             register FilterDefinitionExpression
140:             register FilterExpression
141: 
142:             register ListenExpression
143: 
144:             register TimeoutExpression
145: 
146:             register EvalExpression
147:             register ExpExpression
148: 
149:             register Environment
150:                 #
151:                 # only used by get_expression_names()
152: 
153:             register_ancestors RawExpression
154:             #register_ancestors XmlRawExpression
155:             #register_ancestors ProgRawExpression
156:                 #
157:                 # just register the ancestors for those two
158:         end

Public Instance methods

Returns the expression class corresponding to the given expression name

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 164
164:         def get_class (expression_name)
165: 
166:             expression_name = expression_name.expression_name \
167:                 if expression_name.kind_of?(RawExpression)
168: 
169:             expression_name = OpenWFE::symbol_to_name(expression_name)
170: 
171:             @expressions[expression_name]
172:         end

Returns an array of expression classes that have the given class/module among their ancestors.

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 211
211:         def get_expression_classes (ancestor)
212: 
213:             @ancestors[ancestor]
214:         end

Returns an array of expression names whose class are assignable from the given expression_class.

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 195
195:         def get_expression_names (expression_class)
196: 
197:             return expression_class.expression_names \
198:                 if expression_class.method_defined?(:expression_names)
199: 
200:             names = []
201:             @expressions.each do |k, v|
202:                 names << k if v.ancestors.include? expression_class
203:             end
204:             names
205:         end

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 174
174:         def get_sync_class (expression_name)
175: 
176:             get_class(expression_name)
177:         end

Returns true if the given expression name (‘sequence’, ‘process-definition’, …) is a DefineExpression.

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 183
183:         def is_definition? (expression_name)
184: 
185:             c = get_class(expression_name)
186: 
187:             #c == DefineExpression
188:             (c and c.is_definition?)
189:         end

Registers an Expression class within this expression map. This method is usually never called from out of the ExpressionMap class, but, who knows, it could prove useful one day as a ‘public’ method.

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 230
230:         def register (expression_class)
231: 
232:             expression_class.expression_names.each do |name|
233:                 name = OpenWFE::to_dash(name)
234:                 @expressions[name] = expression_class
235:             end
236:             register_ancestors expression_class
237:         end

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 216
216:         def to_s
217:             s = ""
218:             @expressions.keys.sort.each do |name|
219:                 s << "- '#{name}' -> '#{@expressions[name].to_s}'\n"
220:             end
221:             s
222:         end

Protected Instance methods

registers all the ancestors of an expression class

[Source]

     # File lib/openwfe/expressions/expressionmap.rb, line 244
244:             def register_ancestors (expression_class)
245: 
246:                 expression_class.ancestors.each do |ancestor|
247:                     (@ancestors[ancestor] ||= []) << expression_class
248:                 end
249:             end

[Validate]