Class | OpenWFE::FilterDefinitionExpression |
In: |
lib/openwfe/expressions/fe_filter_definition.rb
|
Parent: | FlowExpression |
This expression binds a filter definition into a variable.
class TestFilter48a0 < ProcessDefinition sequence do set :field => "readable", :value => "bible" set :field => "writable", :value => "sand" set :field => "randw", :value => "notebook" set :field => "hidden", :value => "playboy" alice filter :name => "filter0" do sequence do bob charly end end doug end filter_definition :name => "filter0" do field :regex => "readable", :permissions => "r" field :regex => "writable", :permissions => "w" field :regex => "randw", :permissions => "rw" field :regex => "hidden", :permissions => "" end end
In that example, the filter definition is done for filter ‘filter0’.
A filter definition accepts 4 attributes :
Inside of the process definition, fields are identified via regular expressions (‘regex’), a ‘permissions’ string is then expected with four possible values "rw", "w", "r" and "".
Will build the filter and bind it as a variable.
# File lib/openwfe/expressions/fe_filter_definition.rb, line 103 103: def apply (workitem) 104: 105: filter = build_filter workitem 106: filter_name = lookup_attribute :name, workitem 107: 108: set_variable filter_name, filter \ 109: if filter_name and filter 110: 111: reply_to_parent workitem 112: end
builds and add a field (a line) of the filter.
# File lib/openwfe/expressions/fe_filter_definition.rb, line 153 153: def add_field (filter, rawexp, workitem) 154: 155: rawexp.load_attributes 156: 157: regex = rawexp.lookup_attribute :regex, workitem 158: regex = rawexp.lookup_attribute :name, workitem unless regex 159: 160: permissions = 161: rawexp.lookup_downcase_attribute :permissions, workitem 162: 163: filter.add_field regex, permissions 164: end
Builds the filter (as described in the process definition) and returns it.
# File lib/openwfe/expressions/fe_filter_definition.rb, line 120 120: def build_filter (workitem) 121: 122: filter = FilterDefinition.new 123: 124: # filter attributes 125: 126: type = lookup_downcase_attribute :type, workitem 127: closed = lookup_downcase_attribute :closed, workitem 128: 129: filter.closed = (type == "closed" or closed == "true") 130: 131: add = lookup_downcase_attribute :add, workitem 132: remove = lookup_downcase_attribute :remove, workitem 133: 134: filter.add_allowed = (add == "true") 135: filter.remove_allowed = (remove == "true") 136: 137: # field by field 138: 139: @children.each do |fei| 140: 141: rawexp = get_expression_pool.fetch_expression fei 142: get_expression_pool.remove fei 143: 144: add_field filter, rawexp, workitem 145: end 146: 147: filter 148: end