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)); } }
private void LoadWorkflow() { var dialogs = new List <Dialog>(); var serviceMethods = new List <ServiceMethod>(); var subworkflows = new List <DataAccess.Domain.Workflow>(); foreach (WorkflowDialog workflowDialog in Workflow.Dialogs) { Dialog dialog = MetaManagerServices.GetDialogService().GetDialogWithViewTree(workflowDialog.Dialog.Id); dialogs.Add(dialog); } foreach (WorkflowServiceMethod workflowServiceMethod in Workflow.ServiceMethods) { ServiceMethod serviceMethod = MetaManagerServices.GetApplicationService().GetServiceMethodMapsById(workflowServiceMethod.ServiceMethod.Id); serviceMethods.Add(serviceMethod); } foreach (WorkflowSubworkflow workflowSubworkflow in Workflow.Subworkflows) { DataAccess.Domain.Workflow subworkflow = MetaManagerServices.GetDialogService().GetWorkflowById(workflowSubworkflow.SubWorkflow.Id); subworkflows.Add(subworkflow); } IList <Type> activityTypes = new List <Type>(); activityTypes = WorkflowTypeFactory.CreateActivities(Workflow, this.BackendApplication, dialogs, serviceMethods, subworkflows); if ((activityTypes.Count > 0) && (!string.IsNullOrEmpty(Workflow.WorkflowXoml))) { Workflow.WorkflowXoml = ReplaceAssemblyReferences(Workflow.WorkflowXoml, activityTypes[0].Assembly.GetName().Name); } workflowControl.LoadWorkflow(Workflow.WorkflowXoml, Workflow.RuleSetXml); workflowControl.RootActivity.Description = Workflow.Description; TypeProvider typeProvider = workflowControl.GetService(typeof(ITypeProvider)) as TypeProvider; if (activityTypes.Count > 0) { foreach (Type activityType in activityTypes) { workflowControl.ToolBox.AddToolBoxItem(new SelfHostToolboxItem(activityType)); } typeProvider.AddAssembly(activityTypes[0].Assembly); } sessionType = RuleContextFactory.LoadUserSessionType(Workflow.Module.Application); typeProvider.AddAssembly(sessionType.Assembly); requestType = WorkflowTypeFactory.CreateRequestType(Workflow); typeProvider.AddAssembly(requestType.Assembly); GenerateMembers(); tbxName.Text = Workflow.Name; }