Example #1
0
        private void addWorkflowBtn_Click(object sender, EventArgs e)
        {
            FindWorkflowForm form = new FindWorkflowForm();

            form.BackendApplication  = BackendApplication;
            form.FrontendApplication = FrontendApplication;

            if (form.ShowDialog() == DialogResult.OK)
            {
                DataAccess.Domain.Workflow workflow = dialogService.GetWorkflowById(form.SelectedWorkflow.Id);

                foreach (WorkflowSubworkflow subworkflow in Workflow.Subworkflows)
                {
                    if (subworkflow.SubWorkflow.Id == workflow.Id)
                    {
                        MessageBox.Show("The selected Workflow is already present in the current Workflow.", "MetaManager");
                        return;
                    }
                }

                WorkflowSubworkflow workflowSubworkflow = new WorkflowSubworkflow();
                workflowSubworkflow.SubWorkflow = workflow;
                workflowSubworkflow.Workflow    = Workflow;
                Workflow.Subworkflows.Add(workflowSubworkflow);

                Type activityType = WorkflowTypeFactory.CreateActivities(Workflow, this.BackendApplication, new Dialog[0], new ServiceMethod[0], new DataAccess.Domain.Workflow[] { workflow }).Last();

                TypeProvider typeProvider = workflowControl.GetService(typeof(ITypeProvider)) as TypeProvider;
                typeProvider.AddAssembly(activityType.Assembly);
                workflowControl.ToolBox.AddToolBoxItem(new SelfHostToolboxItem(activityType));
            }
        }
        public WorkflowSubworkflow SaveOrUpdateMerge(WorkflowSubworkflow workflowSubworkflow)
        {
            object mergedObj = Session.Merge(workflowSubworkflow);

            HibernateTemplate.SaveOrUpdate(mergedObj);
            return((WorkflowSubworkflow)mergedObj);
        }
Example #3
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);
        }