private void RenderNextStepSelector()
        {
            WfControlNextStepCollection nextSteps = GetNextSteps(this.ActivityDescriptor);

            RenderNextSteps(nextSteps);
            RenderNextStepsInfo(nextSteps);
        }
 private void RenderNextStepsInfo(WfControlNextStepCollection nextSteps)
 {
     if (Enabled)
     {
         WfMoveToControl.DoActionAfterRegisterContextConverter(() =>
                                                               Page.ClientScript.RegisterHiddenField(
                                                                   this.ClientID + "_data",
                                                                   JSONSerializerExecute.Serialize(nextSteps))
                                                               );
     }
 }
        private int FindDefaultSelectStep(WfControlNextStepCollection nextSteps)
        {
            int result = 0;

            for (int i = 0; i < nextSteps.Count; i++)
            {
                WfControlNextStep nextStep = nextSteps[i];

                if (nextStep.TransitionDescriptor.DefaultSelect)
                {
                    result = i;
                    break;
                }
            }

            return(result);
        }
        private void RenderNextSteps(WfControlNextStepCollection nextSteps)
        {
            HtmlGenericControl div = new HtmlGenericControl("div");

            div.Style[HtmlTextWriterStyle.MarginBottom] = "5px";

            Controls.Add(div);

            if (nextSteps.Count > 1)
            {
                int defaultStepIndex = FindDefaultSelectStep(nextSteps);

                for (int i = 0; i < nextSteps.Count; i++)
                {
                    RenderOneRadio(nextSteps[i], i, defaultStepIndex, div);
                }
            }
        }
Ejemplo n.º 5
0
        private void RecreateProcesses(WfControlNextStepCollection nextSteps, bool saveAndReload, bool isCurrent)
        {
            _Table.Rows.Clear();

            if (saveAndReload)
            {
                WfSaveDataExecutor executor;

                if (isCurrent)
                {
                    executor = new WfSaveDataExecutor(WfClientContext.Current.OriginalCurrentActivity, WfClientContext.Current.OriginalCurrentActivity);
                }
                else
                {
                    executor = new WfSaveDataExecutor(OriginalActivity, OriginalActivity);
                }

                executor.AutoCommit    = false;
                executor.SaveUserTasks = false;

                executor.Execute();

                ReloadProcessContext();
            }

            CreateProcessSteps(GetAllMainStreamActivities());

            if (WfMoveToControl.Current != null)
            {
                if (nextSteps == null)
                {
                    nextSteps = WfMoveToControl.Current.NextSteps;
                }

                WfMoveToControl.DoActionAfterRegisterContextConverter(() =>
                                                                      AddControlToTemplate(_RootPanel, new LiteralControl(
                                                                                               string.Format("<input type='hidden' id='adjustNextStepsHidden' name='adjustNextStepsHidden' value='{0}'/>",
                                                                                                             HttpUtility.HtmlAttributeEncode(JSONSerializerExecute.Serialize(nextSteps)))
                                                                                               ))
                                                                      );
            }
        }
        internal static WfControlNextStepCollection GetNextSteps(IWfActivityDescriptor actDesp)
        {
            if (actDesp == null && WfClientContext.Current.OriginalActivity != null)
            {
                actDesp = WfClientContext.Current.CurrentActivity.Descriptor;
            }

            WfControlNextStepCollection result = null;

            if (actDesp != null)
            {
                result = new WfControlNextStepCollection(actDesp.ToTransitions.GetAllCanTransitTransitions(false));
            }
            else
            {
                result = new WfControlNextStepCollection();
            }

            return(result);
        }
Ejemplo n.º 7
0
        private void ChangeTransitionButton_Click(object sender, EventArgs e)
        {
            try
            {
                WfControlNextStep nextStep = null;

                if (_EnabledNextStepSelectorControl != null)
                {
                    nextStep = _EnabledNextStepSelectorControl.SelectedNextStep;

                    if (nextStep != null)
                    {
                        IWfActivityDescriptor originalDesp = WfClientContext.Current.OriginalActivity.Descriptor;

                        /* YDZ 2012/11/23 为了记录克隆前线的状态
                         * foreach (IWfTransitionDescriptor t in originalDesp.ToTransitions)
                         * {
                         *      t.Properties.SetValue("DefineDefaultSelect", t.DefaultSelect); //记录改变值前的记录
                         *
                         *      t.DefaultSelect = false;
                         *
                         *      t.DefaultSelect = t.Key == nextStep.TransitionDescriptor.Key;
                         *
                         *      if (t.DefaultSelect)
                         *      {
                         *              if (t.AffectProcessReturnValue)
                         *                      WfClientContext.Current.OriginalActivity.Descriptor.Process.DefaultReturnValue = t.AffectedProcessReturnValue;
                         *      }
                         * } */

                        //originalDesp.ToTransitions.ForEach(t => t.DefaultSelect = false);

                        originalDesp.ToTransitions.ForEach(t =>
                        {
                            t.DefaultSelect = false;
                            t.DefaultSelect = t.Key == nextStep.TransitionDescriptor.Key;

                            if (t.DefaultSelect)
                            {
                                if (t.AffectProcessReturnValue)
                                {
                                    WfClientContext.Current.OriginalActivity.Descriptor.Process.DefaultReturnValue = t.AffectedProcessReturnValue;
                                }
                            }
                        });
                    }
                }

                WfControlNextStepCollection nextSteps = WfMoveToControl.Current.NextSteps;

                if (nextStep != null)
                {
                    nextSteps = new WfControlNextStepCollection();
                    nextSteps.Add(nextStep);
                }

                WfMoveToControl.Current.OnProcessChanged(WfClientContext.Current.CurrentActivity.OpinionRootActivity.Process);

                WfClientContext.Current.CurrentActivity.OpinionRootActivity.Process.GenerateCandidatesFromResources();

                RecreateProcesses(nextSteps, true, false);

                WfMoveToControl.Current.OnAfterProcessChanged(WfClientContext.Current.CurrentActivity.OpinionRootActivity.Process);
            }
            catch (System.Exception ex)
            {
                RegisterPostBackException(ex);
            }
        }
		internal static WfControlNextStepCollection GetNextSteps(IWfActivityDescriptor actDesp)
		{
			if (actDesp == null && WfClientContext.Current.OriginalActivity != null)
				actDesp = WfClientContext.Current.CurrentActivity.Descriptor;

			WfControlNextStepCollection result = null;

			if (actDesp != null)
				result = new WfControlNextStepCollection(actDesp.ToTransitions.GetAllCanTransitTransitions(false));
			else
				result = new WfControlNextStepCollection();

			return result;
		}
		private int FindDefaultSelectStep(WfControlNextStepCollection nextSteps)
		{
			int result = 0;

			for (int i = 0; i < nextSteps.Count; i++)
			{
				WfControlNextStep nextStep = nextSteps[i];

				if (nextStep.TransitionDescriptor.DefaultSelect)
				{
					result = i;
					break;
				}
			}

			return result;
		}
		private void RenderNextSteps(WfControlNextStepCollection nextSteps)
		{
			HtmlGenericControl div = new HtmlGenericControl("div");
			div.Style[HtmlTextWriterStyle.MarginBottom] = "5px";

			Controls.Add(div);

			if (nextSteps.Count > 1)
			{
				int defaultStepIndex = FindDefaultSelectStep(nextSteps);

				for (int i = 0; i < nextSteps.Count; i++)
					RenderOneRadio(nextSteps[i], i, defaultStepIndex, div);
			}
		}
		private void RenderNextStepsInfo(WfControlNextStepCollection nextSteps)
		{
			if (Enabled)
			{
				WfMoveToControl.DoActionAfterRegisterContextConverter(() =>
					Page.ClientScript.RegisterHiddenField(
						this.ClientID + "_data",
						JSONSerializerExecute.Serialize(nextSteps))
				);
			}
		}
		private void RecreateProcesses(WfControlNextStepCollection nextSteps, bool saveAndReload, bool isCurrent)
		{
			_Table.Rows.Clear();

			if (saveAndReload)
			{
				WfSaveDataExecutor executor;

				if (isCurrent)
				{
					executor = new WfSaveDataExecutor(WfClientContext.Current.OriginalCurrentActivity, WfClientContext.Current.OriginalCurrentActivity);
				}
				else
				{
					executor = new WfSaveDataExecutor(OriginalActivity, OriginalActivity);
				}

				executor.AutoCommit = false;
				executor.SaveUserTasks = false;

				executor.Execute();

				ReloadProcessContext();
			}

			CreateProcessSteps(GetAllMainStreamActivities());

			if (WfMoveToControl.Current != null)
			{
				if (nextSteps == null)
					nextSteps = WfMoveToControl.Current.NextSteps;

				WfMoveToControl.DoActionAfterRegisterContextConverter(() =>
					AddControlToTemplate(_RootPanel, new LiteralControl(
						string.Format("<input type='hidden' id='adjustNextStepsHidden' name='adjustNextStepsHidden' value='{0}'/>",
							HttpUtility.HtmlAttributeEncode(JSONSerializerExecute.Serialize(nextSteps)))
						))
					);
			}
		}
		private void ChangeTransitionButton_Click(object sender, EventArgs e)
		{
			try
			{
				WfControlNextStep nextStep = null;

				if (_EnabledNextStepSelectorControl != null)
				{
					nextStep = _EnabledNextStepSelectorControl.SelectedNextStep;

					if (nextStep != null)
					{
						IWfActivityDescriptor originalDesp = WfClientContext.Current.OriginalActivity.Descriptor;

						/* YDZ 2012/11/23 为了记录克隆前线的状态
						foreach (IWfTransitionDescriptor t in originalDesp.ToTransitions)
						{
							t.Properties.SetValue("DefineDefaultSelect", t.DefaultSelect); //记录改变值前的记录

							t.DefaultSelect = false;

							t.DefaultSelect = t.Key == nextStep.TransitionDescriptor.Key;

							if (t.DefaultSelect)
							{
								if (t.AffectProcessReturnValue)
									WfClientContext.Current.OriginalActivity.Descriptor.Process.DefaultReturnValue = t.AffectedProcessReturnValue;
							}
						} */

						//originalDesp.ToTransitions.ForEach(t => t.DefaultSelect = false);

						originalDesp.ToTransitions.ForEach(t =>
						{
							t.DefaultSelect = false;
							t.DefaultSelect = t.Key == nextStep.TransitionDescriptor.Key;

							if (t.DefaultSelect)
							{
								if (t.AffectProcessReturnValue)
									WfClientContext.Current.OriginalActivity.Descriptor.Process.DefaultReturnValue = t.AffectedProcessReturnValue;
							}
						});
					}
				}

				WfControlNextStepCollection nextSteps = WfMoveToControl.Current.NextSteps;

				if (nextStep != null)
				{
					nextSteps = new WfControlNextStepCollection();
					nextSteps.Add(nextStep);
				}

				WfMoveToControl.Current.OnProcessChanged(WfClientContext.Current.CurrentActivity.OpinionRootActivity.Process);

				WfClientContext.Current.CurrentActivity.OpinionRootActivity.Process.GenerateCandidatesFromResources();

				RecreateProcesses(nextSteps, true, false);

				WfMoveToControl.Current.OnAfterProcessChanged(WfClientContext.Current.CurrentActivity.OpinionRootActivity.Process);
			}
			catch (System.Exception ex)
			{
				RegisterPostBackException(ex);
			}
		}