| 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.
# 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
Returns the expression class corresponding to the given expression name
# 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.
# 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.
# 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
# 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.
# 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.
# 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
# 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