You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							105 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							105 lines
						
					
					
						
							3.0 KiB
						
					
					
				| var _ = require('underscore');
 | |
| 
 | |
| /**
 | |
|  * [WorkflowRuleTarget description]
 | |
|  * @param {[type]} options [description]
 | |
|  */
 | |
| function WorkflowRuleTarget(options) {
 | |
|     options = options || {};
 | |
| 
 | |
|     if (!options.queue) { throw 'queue for WorkflowRuleTarget is required'; }
 | |
| 
 | |
|     this.queue = options.queue;
 | |
|     this.expression = options.expression;
 | |
|     this.priority = options.priority;
 | |
|     this.timeout = options.timeout;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [WorkflowRule description]
 | |
|  * @param {[type]} options [description]
 | |
|  */
 | |
| function WorkflowRule(options) {
 | |
|     options = options || {};
 | |
| 
 | |
|     if (!options.expression) { throw 'expression for WorkflowRule is required'; }
 | |
|     if (!options.targets) { throw 'targets for WorkflowRule is required'; }
 | |
| 
 | |
|     this.friendly_name = options.friendly_name || options.friendlyName || options.filter_friendly_name;
 | |
|     this.expression = options.expression;
 | |
|     this.targets = _.map(options.targets, function(target) {
 | |
|         return new WorkflowRuleTarget(target);
 | |
|     });
 | |
|     Object.defineProperty(this, 'friendlyName', {
 | |
|         get: function() { return this.friendly_name; },
 | |
|         set: function(value) { this.friendly_name = value; }
 | |
|     });
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * [TaskRoutingConfiguration description]
 | |
|  * @param {[type]} options [description]
 | |
|  */
 | |
| function TaskRoutingConfiguration(options) {
 | |
|     options = options || {};
 | |
| 
 | |
|     if (!options.filters) { throw 'filters for TaskRoutingConfiguration is required'; }
 | |
| 
 | |
|     this.filters = _.map(options.filters, function(filter) {
 | |
|         return new WorkflowRule(filter);
 | |
|     });
 | |
|     this.default_filter = options.default_filter || options.defaultFilter;
 | |
|     Object.defineProperty(this, 'defaultFilter', {
 | |
|         get: function() { return this.default_filter; },
 | |
|         set: function(o) { this.default_filter = o; }
 | |
|     });
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * [WorkflowConfiguration description]
 | |
|  * @param {[type]} options [description]
 | |
|  */
 | |
| function WorkflowConfiguration(options) {
 | |
|     options = options || {};
 | |
|     var taskRouting = options.task_routing || options.taskRouting;
 | |
| 
 | |
|     if (!taskRouting) { throw 'taskRouting for WorkflowConfiguration is required'; }
 | |
| 
 | |
|     this.task_routing = new TaskRoutingConfiguration(taskRouting);
 | |
|     Object.defineProperty(this, 'taskRouting', {
 | |
|         get: function() { return this.task_routing; },
 | |
|         set: function(o) { this.task_routing = o; },
 | |
|     });
 | |
| }
 | |
| 
 | |
| WorkflowConfiguration.fromJSON = function(json) {
 | |
|     return new WorkflowConfiguration(JSON.parse(json));
 | |
| };
 | |
| 
 | |
| _.extend(WorkflowConfiguration.prototype, {
 | |
|     toJSON: function() {
 | |
|         var ignoredProperties = [
 | |
|             'friendlyName', 'taskRouting', 'defaultFilter'
 | |
|         ];
 | |
|         var skipIgnoredProps = function(key, value) {
 | |
|             return _.contains(ignoredProperties, key) ? undefined : value;
 | |
|         };
 | |
| 
 | |
|         return JSON.stringify({
 | |
|             task_routing : this.taskRouting
 | |
|         }, skipIgnoredProps);
 | |
|     }
 | |
| });
 | |
| 
 | |
| 
 | |
| module.exports = {
 | |
| 
 | |
|     WorkflowRuleTarget: WorkflowRuleTarget,
 | |
|     WorkflowRule: WorkflowRule,
 | |
|     TaskRoutingConfiguration: TaskRoutingConfiguration,
 | |
|     WorkflowConfiguration: WorkflowConfiguration
 | |
| 
 | |
| };
 |