Exemple #1
0
        public static IList <Type> CreateActivities(Workflow workflow, Application backendApplication, IEnumerable <Dialog> dialogs, IEnumerable <ServiceMethod> serviceMethods, IEnumerable <Workflow> subworkflows)
        {
            IList <string> sources = new List <string>();

            AlarmActivityTemplate alarmTemplate = new AlarmActivityTemplate();

            alarmTemplate.SetProperty("module", workflow.Module);
            alarmTemplate.SetProperty("isDesignTime", true);
            alarmTemplate.SetProperty("backendApplication", backendApplication);
            sources.Add(alarmTemplate.RenderToString());

            DialogActivityTemplate dialogTemplate = new DialogActivityTemplate();

            foreach (Dialog dialog in dialogs)
            {
                WorkflowDialog workflowDialog = new WorkflowDialog();
                workflowDialog.Workflow = workflow;
                workflowDialog.Dialog   = dialog;
                dialogTemplate.SetProperty("workflowDialog", workflowDialog);
                dialogTemplate.SetProperty("isDesignTime", true);
                sources.Add(dialogTemplate.RenderToString());
            }

            ServiceMethodActivityTemplate serviceTemplate = new ServiceMethodActivityTemplate();

            foreach (ServiceMethod serviceMethod in serviceMethods)
            {
                WorkflowServiceMethod workflowServiceMethod = new WorkflowServiceMethod();
                workflowServiceMethod.Workflow      = workflow;
                workflowServiceMethod.ServiceMethod = serviceMethod;
                serviceTemplate.SetProperty("workflowServiceMethod", workflowServiceMethod);
                serviceTemplate.SetProperty("isDesignTime", true);
                sources.Add(serviceTemplate.RenderToString());
            }

            SubworkflowActivityTemplate subworkflowTemplate = new SubworkflowActivityTemplate();

            foreach (Workflow subworkflow in subworkflows)
            {
                WorkflowSubworkflow workflowSubworkflow = new WorkflowSubworkflow();
                workflowSubworkflow.Workflow    = workflow;
                workflowSubworkflow.SubWorkflow = subworkflow;

                subworkflowTemplate.SetProperty("workflowSubworkflow", workflowSubworkflow);
                subworkflowTemplate.SetProperty("isDesignTime", true);
                sources.Add(subworkflowTemplate.RenderToString());
            }

            ActivityThemeTemplate themeTemplate = new ActivityThemeTemplate();

            themeTemplate.SetProperty("workflow", workflow);
            sources.Add(themeTemplate.RenderToString());

            CSharpCodeProvider provider = new CSharpCodeProvider(new Dictionary <string, string>()
            {
                { "CompilerVersion", "v3.5" }
            });

            CompilerParameters options = new CompilerParameters();

            //options.TempFiles = new TempFileCollection("c:\\temp\\files\\", true);
            options.OutputAssembly = string.Format("Workflow_{0}.dll", Guid.NewGuid().ToString());
            options.ReferencedAssemblies.Add("System.dll");
            options.ReferencedAssemblies.Add("System.Core.dll");
            options.ReferencedAssemblies.Add("System.Drawing.dll");
            options.ReferencedAssemblies.Add("System.Workflow.ComponentModel.dll");
            options.ReferencedAssemblies.Add("System.Workflow.Activities.dll");

            CompilerResults results = provider.CompileAssemblyFromSource(options, sources.ToArray());

            var activityTypes = new List <Type>();

            foreach (Type type in results.CompiledAssembly.GetTypes())
            {
                if (type.BaseType == typeof(Activity))
                {
                    activityTypes.Add(type);
                }
            }

            return(activityTypes);
        }
Exemple #2
0
        public static string GetServiceMethodActivityClassName(ServiceMethod serviceMethod)
        {
            ServiceMethodActivityTemplate serviceMethodTemplate = new ServiceMethodActivityTemplate();

            return(serviceMethodTemplate.GetServiceMethodActivityClassName(serviceMethod));
        }