extend : org.argeo.slc.ria.execution.Spec,\r
\r
properties : {\r
+ /**\r
+ * Reference module\r
+ */\r
module :{},\r
+ /**\r
+ * Reference flow\r
+ */\r
flow : {},\r
+ /**\r
+ * Original Spec (values shall stay untouched).\r
+ */\r
originalSpec : {} \r
},\r
\r
+ /**\r
+ * Instance of BatchEntrySpec\r
+ * @param module {org.argeo.slc.ria.execution.Module} Reference module\r
+ * @param flow {org.argeo.slc.ria.execution.Flow} Reference flow\r
+ */\r
construct : function(module, flow){\r
this.base(arguments);\r
this.setModule(module);\r
this.setFlow(flow);\r
this.setOriginalSpec(flow.getExecutionSpec());\r
+ this.setName(flow.getExecutionSpec().getName());\r
+ this.fetchInstanceValues();\r
+ },\r
+ \r
+ members : {\r
+ /**\r
+ * Create a label to display in the batch list.\r
+ * @return {String} The label\r
+ */\r
+ getLabel : function(){\r
+ var label = this.getModule().getName();\r
+ label += "/" + this.getModule().getVersion();\r
+ label += "/" + this.getFlow().getName();\r
+ return label;\r
+ },\r
+ \r
+ toXml : function(){ \r
+ var valuesXml = '';\r
+ var values = this.getValues();\r
+ for(var key in values){\r
+ valuesXml += values[key].toValueXml();\r
+ }\r
+ var execFlowDescXML = '<slc:execution-flow-descriptor name="'+this.getFlow().getName()+'" executionSpec="'+this.getName()+'"><slc:values>'+valuesXml+'</slc:values></slc:execution-flow-descriptor>';\r
+ \r
+ var execSpecDescXML = this.getOriginalSpec().toXml();\r
+ \r
+ var moduleData = '<slc:module-name>'+this.getModule().getName()+'</slc:module-name><slc:module-version>'+this.getModule().getVersion()+'</slc:module-version>';\r
+ \r
+ return '<slc:realized-flow>'+moduleData + execFlowDescXML + execSpecDescXML +'</slc:realized-flow>';\r
+ \r
+ },\r
+ \r
+ /**\r
+ * Fetch the Spec Values with the Flow Values to make the current instance value\r
+ */\r
+ fetchInstanceValues : function(){\r
+ var specValues = this.getOriginalSpec().getValues();\r
+ var flow = this.getFlow();\r
+ var instanceValues = {};\r
+ for(var key in specValues){\r
+ var flowValue = flow.getValue(\r
+ key, \r
+ specValues[key].getSpecType(), \r
+ specValues[key].getSpecSubType()\r
+ );\r
+ var instValue = specValues[key].clone();\r
+ if(flowValue){\r
+ instValue.setValue(flowValue);\r
+ }\r
+ instanceValues[key] = instValue;\r
+ }\r
+ this.setValues(instanceValues);\r
+ //this.debug(instanceValues);\r
+ }\r
}\r
});
\ No newline at end of file