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