protected void SaveCriteriaButtonClick(object sender, EventArgs e)
        {
            var values = _entityUi.UiProperties.ToDictionary(uiProperty => uiProperty.PropertyName, uiProperty => uiProperty.Value);

            TheWorkflowInstantiationCriteriaService.SetConfigurationProperties(_instantiationCriteria.Id, values);
            TheEventService.RegisterEvents();
        }
예제 #2
0
        public void RegisterEvents()
        {
            Init();

            foreach (var criteria in TheWorkflowInstantiationCriteriaService.List())
            {
                var hydratedCriteria = TheWorkflowInstantiationCriteriaService.GetCriteria(criteria.Id);
                if (hydratedCriteria.Events == null)
                {
                    continue;
                }

                foreach (var eve in hydratedCriteria.Events)
                {
                    var eventInfo = TheEventInfoService.GetByFullName(eve);

                    if (_registeredEvents.Contains(eventInfo.FullName))
                    {
                        return;
                    }

                    if (!_tracers.ContainsKey(eventInfo.TypeAssemblyQualifiedName))
                    {
                        var t = Type.GetType(eventInfo.TypeAssemblyQualifiedName);
                        _tracers.Add(eventInfo.TypeAssemblyQualifiedName, new TracerEx(t, OnEvent));
                    }
                    var tracer = _tracers[eventInfo.TypeAssemblyQualifiedName];
                    tracer.HookEvent(eventInfo.EventName);
                    _registeredEvents.Add(eventInfo.FullName);
                }
            }
        }
        public ActionResult Edit(int id)
        {
            ViewBag.Id = id;

            var instantiationCriteria = TheWorkflowInstantiationCriteriaService.GetCriteria(id);
            var entityUi = TheWorkflowEntityUiResolver.Resolve(instantiationCriteria);

            return(View(entityUi.Render(instantiationCriteria)));
        }
예제 #4
0
        public void OnEvent(object sender, string eventName, object[] args)
        {
            var name = ((Type)sender).FullName + "." + eventName;

            Log.Debug(string.Format("Got event {0}", name));

            if (!_registeredEvents.Contains(name))
            {
                return;
            }

            Log.Debug(string.Format("Checking instantiation criteria for {0}", name));
            var criterias = TheWorkflowInstantiationCriteriaService.GetCriteriaForEvents(name);

            foreach (var criteria in criterias)
            {
                if (!criteria.Active)
                {
                    continue;
                }
                if (!ValidateCriteria(criteria))
                {
                    continue;
                }

                Log.Debug(string.Format("Found valid criteria '{0}' for event '{1}'", criteria.Name, name));

                var inst = TheWorkflowInstanceService.Instantiate(criteria.WorkflowConfiguration);

                if (OtherInstancesRunning(inst, args[0]))
                {
                    TheWorkflowInstanceService.DeleteWorkflowInstance(inst.Id);
                    if (criteria.CancelEvent)
                    {
                        SetCancelPropertyInEventArgs(args);
                    }
                    continue;
                }

                AddInstantiatingObjectsToInstance(args[0], inst);
                TheWorkflowInstanceService.Update(inst);
                NotifyInstantiation(inst);

                if (criteria.CancelEvent)
                {
                    SetCancelPropertyInEventArgs(args);
                }

                TheWorkflowInstanceService.Start(inst.Id);
                TheWorkflowRuntime.RunWorkflows();
            }
        }
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            SaveCriteriaButton.Text = TheGlobalisationService.GetString("save_criteria");

            var criteriaId = Convert.ToInt32(Request["id"]);

            _instantiationCriteria = TheWorkflowInstantiationCriteriaService.GetCriteria(criteriaId);
            _entityUi = TheWorkflowEntityUiResolver.Resolve(_instantiationCriteria);

            foreach (var control in _entityUi.Render(_instantiationCriteria))
            {
                CiteriaControlsPanel.Controls.Add(control);
            }
        }
        public ActionResult Save(int id, FormCollection formCollection)
        {
            var instantiationCriteria = TheWorkflowInstantiationCriteriaService.GetCriteria(id);
            var ui = TheWorkflowEntityUiResolver.Resolve(instantiationCriteria);

            var values = new Dictionary <string, object>();

            foreach (var prop in ui.UiProperties)
            {
                values[prop.PropertyName] = ControlExtensions.ControlValue(prop.RenderControl,
                                                                           formCollection[prop.PropertyName]);
            }

            TheWorkflowInstantiationCriteriaService.SetConfigurationProperties(id, values);
            TheEventService.RegisterEvents();

            return(RedirectToAction("Index"));
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var u = umbraco.BusinessLogic.User.GetCurrent();

            var workflows = new List <IWorkflowConfiguration>();

            foreach (var criteria in TheWorkflowInstantiationCriteriaService.List())
            {
                var hydratedCriteria = TheWorkflowInstantiationCriteriaService.GetCriteria(criteria.Id);

                if (!hydratedCriteria.Active)
                {
                    continue;
                }
                if (!((UmbracoWorkflowInstantiationCriteria)hydratedCriteria).AllowManualInstantiation)
                {
                    continue;
                }
                if (!TheCriteriaValidationService.IsCriteriaValid((UmbracoWorkflowInstantiationCriteria)hydratedCriteria, u))
                {
                    continue;
                }

                workflows.Add(TheWorkflowConfigurationService.GetConfiguration(hydratedCriteria.WorkflowConfiguration));
            }


            if (workflows.Count == 0)
            {
                NoCriteriasLiteral.Text    = TheGlobalisationService.GetString("no_valid_workflow_instantiation_criteria");
                NoCriteriasLiteral.Visible = true;
            }
            else
            {
                AvailableCriteriaDropDownList.DataSource = workflows;

                AvailableCriteriaDropDownList.DataTextField  = "Name";
                AvailableCriteriaDropDownList.DataValueField = "Id";

                AvailableCriteriaDropDownList.DataBind();

                SendToWorkflowPanel.Visible = true;
            }
        }
예제 #8
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            SaveCriteriaButton.Text = TheGlobalisationService.GetString("save_criteria");

            var criteriaId = Convert.ToInt32(Request["id"]);

            _instantiationCriteria = TheWorkflowInstantiationCriteriaService.GetCriteria(criteriaId);

            Log.Debug(string.Format("Got criteria of type {0}", _instantiationCriteria.GetType()));

            _entityUi = TheWorkflowEntityUiResolver.Resolve(_instantiationCriteria);

            // if (IsPostBack) return;

            foreach (var control in _entityUi.Render(_instantiationCriteria))
            {
                CiteriaControlsPanel.Controls.Add(control);
            }
        }
 public ActionResult Delete(int id)
 {
     TheWorkflowInstantiationCriteriaService.Delete(id);
     return(RedirectToAction("Index"));
 }
 public ActionResult Create()
 {
     TheWorkflowInstantiationCriteriaService.CreateWorkflowInstantiationCriteria("New Instantiation Criteria");
     return(RedirectToAction("Index"));
 }
 public ActionResult Index()
 {
     return(View(TheWorkflowInstantiationCriteriaService.List()));
 }