public Dictionary <string, object> PrepareChildTaskInputData(CompositeTaskInstance cti, TaskDef childTask, ITaskExecutionContext ctx) { _pd.SetTaskInstanceInfo(cti, ctx); string k1 = DslUtil.TaskInputDataBindingKey(childTask.Id); if (_pd._exprs.ContainsKey(k1)) { //get full data record SC.IDictionary dic = (SC.IDictionary)_pd._exprs[k1](); return(ToTaskData(dic)); } Dictionary <string, object> ret = new Dictionary <string, object>(); if (childTask.Variables != null) { if (childTask.AutoBindVariables) { foreach (var vd in childTask.Variables) { if (vd.VariableDir == ProcessModel.Data.VariableDef.Dir.In || vd.VariableDir == ProcessModel.Data.VariableDef.Dir.InOut) { //TODO add type conversion/control if (cti.TaskData.ContainsKey(vd.Name)) { ret[vd.Name] = cti.TaskData[vd.Name]; } } } } if (childTask.InputDataBindings != null) { foreach (var bd in childTask.InputDataBindings) { if (bd.BindType == DataBindingType.CopyVar) { ret[bd.Target] = cti.TaskData[bd.Source]; } else if (bd.BindType == DataBindingType.Literal) { ret[bd.Target] = bd.Source; } else if (bd.BindType == DataBindingType.Expr) { string k = DslUtil.TaskVarInBindingKey(childTask.Id, bd.Target); if (!_pd._exprs.ContainsKey(k)) { throw new Exception("Fail: missing delegate: " + k); } ret[bd.Target] = _pd._exprs[k](); } } } } return(ret); }
protected void GenerateBaseTaskScripts(TaskDef td) { if (td.Variables != null) { foreach (var vd in td.Variables.Where(x => !string.IsNullOrEmpty(x.DefaultValueExpr))) { GenExpression(DslUtil.TaskVariableDefaultKey(td.Id, vd.Name), vd.DefaultValueExpr); } } if (td.InputDataBindings != null) { foreach (var bnd in td.InputDataBindings.Where(x => x.BindType == DataBindingType.Expr)) { GenExpression(DslUtil.TaskVarInBindingKey(td.Id, bnd.Target), bnd.Source); } } if (td.OutputDataBindings != null) { foreach (var bnd in td.OutputDataBindings.Where(x => x.BindType == DataBindingType.Expr)) { GenExpression(DslUtil.TaskVarOutBindingKey(td.Id, bnd.Target), bnd.Source); } } if (td.InputParameterBindings != null) { foreach (var bnd in td.InputParameterBindings.Where(x => x.BindType == DataBindingType.Expr)) { GenExpression(DslUtil.TaskParamInBindingKey(td.Id, bnd.Target), bnd.Source); } } if (td.OutputParameterBindings != null) { foreach (var bnd in td.OutputParameterBindings.Where(x => x.BindType == DataBindingType.Expr)) { GenExpression(DslUtil.TaskParamOutBindingKey(td.Id, bnd.Target), bnd.Source); } } if (td.IsMultiInstance) { GenExpression(DslUtil.TaskMultiInstanceSplitKey(td.Id), td.MultiInstanceSplitExpression); } if (!string.IsNullOrEmpty(td.BeforeEnableScript)) { GenStatement(DslUtil.TaskScriptKey(td.Id, "BeforeEnable"), td.BeforeEnableScript); } if (!string.IsNullOrEmpty(td.AfterCompleteScript)) { GenStatement(DslUtil.TaskScriptKey(td.Id, "AfterComplete"), td.AfterCompleteScript); } if (!string.IsNullOrEmpty(td.AfterEnableScript)) { GenStatement(DslUtil.TaskScriptKey(td.Id, "AfterEnable"), td.AfterEnableScript); } }