示例#1
0
        public static IWorQLessWorkflow Create(Type sourceType, Type returnType, IWorkflowContainer workflowContainer)
        {
            var workflow = (IWorQLessWorkflow)Reflection
                           .CreateWorkflow(sourceType, workflowContainer.Name, new Type[] { sourceType, returnType }, workflowContainer.Args);

            workflow.WorkflowContainer = workflowContainer;
            return(workflow);
        }
示例#2
0
        public object Execute(IWorkflowContainer workflow, dynamic data)
        {
            dynamic lastResult = data;

            if (workflow.Operand != WorkflowOperand.UseLastResult || !string.IsNullOrEmpty(workflow.Entity))
            {
                var entityType = Tables[workflow.Entity.ToLower()];
                var setMethod  = GetTableMethod.MakeGenericMethod(entityType);
                data = setMethod.Invoke(this, null);
            }

            var dataType = data.GetType();

            if (dataType.IsGenericType)
            {
                dataType = dataType.GenericTypeArguments[0];
            }

            data = workflow.Execute(dataType, data, lastResult);
            return(data);
        }