internal override Action Clone(IDocumentEssential owner)
        {
            PDFDictionary dict = new PDFDictionary();

            dict.AddItem("Type", new PDFName("Action"));
            dict.AddItem("S", new PDFName("Trans"));

            PDFDictionary trans = _dictionary["Trans"] as PDFDictionary;

            if (trans != null)
            {
                dict.AddItem("Trans", TransitionBase.Copy(trans));
            }

            TransitionAction action = new TransitionAction(dict, owner);

            IPDFObject next = _dictionary["Next"];

            if (next != null)
            {
                for (int i = 0; i < Next.Count; ++i)
                {
                    action.Next.Add(Next[i]);
                }
            }

            return(action);
        }
Beispiel #2
0
        private List <string> GetTransitionsFromActivity(Activity activity, TransitionAction action)
        {
            List <string> activities = new List <string>();

            switch (action)
            {
            case TransitionAction.Join:
            case TransitionAction.None:

                var transitionId = GetSingleTransitionFromActivity(activity.Id);

                if (!string.IsNullOrEmpty(transitionId))
                {
                    activities.Add(GetNextActivityFromTransition(transitionId));
                }

                break;

            case TransitionAction.SplitParallel:
            case TransitionAction.SplitExclusive:

                foreach (var transition in activity.TransitionRestrictions.TransitionRestriction[0].Split.TransitionRefs.TransitionRef)
                {
                    var nextActivity = GetNextActivityFromTransition(transition.Id);
                    activities.Add(nextActivity);
                }
                break;
            }

            return(activities);
        }
Beispiel #3
0
        //------------------------------------------------------------------------/
        // Events
        //------------------------------------------------------------------------/
        private void ProcessTransitionEvent(BaseTransitionEvent e, Action startAction, Action endAction)
        {
            this.Log($"Received transition {e.GetType().GetNiceName()}. Window open ? {open}");
            TransitionAction action = new TransitionAction(e, startAction, endAction);

            transitions.Enqueue(action);

            // If not opened yet
            if (!open)
            {
                if (e.clearSelection)
                {
                    ClearSelectedObject();
                }

                OpenWindow(new StratusCanvasWindowOpenArguments()
                {
                    transitionSpeed = e.speed
                });
            }
            // If already open
            else
            {
                if (currentTransition.canContinue)
                {
                    this.Log("Moving onto next transition");
                    Continue();
                }
            }
        }
Beispiel #4
0
        private void ConstructSwipeObjects()
        {
            ActiveRectTransform = CurrentView.GetComponent <RectTransform>();
            swipedTransforms.ForEach(trs => {
                if (trs != ActiveRectTransform)
                {
                    cache.PushObject(trs.gameObject);
                }
            });

            swipedTransforms.Clear();
            swipedTransforms.Add(ActiveRectTransform);

            if (HasLeft(CurrentData))
            {
                GameObject    obj     = cache.PopObject();
                RectTransform leftTrs = obj.GetComponent <RectTransform>();
                SetupView(LeftData(CurrentData), leftTrs.GetComponent <TView>());
                leftTrs.anchoredPosition = new Vector2(ActiveRectTransform.anchoredPosition.x - ScreenSize,
                                                       ActiveRectTransform.anchoredPosition.y);
                swipedTransforms.Insert(0, leftTrs);
            }

            if (HasRight(CurrentData))
            {
                GameObject    obj      = cache.PopObject();
                RectTransform rightTrs = obj.GetComponent <RectTransform>();
                SetupView(RightData(CurrentData), rightTrs.GetComponent <TView>());
                rightTrs.anchoredPosition = new Vector2(ActiveRectTransform.anchoredPosition.x + ScreenSize,
                                                        ActiveRectTransform.anchoredPosition.y);
                swipedTransforms.Add(rightTrs);
            }

            TransitionAction?.Invoke();
        }
Beispiel #5
0
 public FadeTransition(Atom a, int layer, float animationSpeed, bool skipFadeOut, TransitionAction midAction, TransitionAction endAction = null)
     : base(a, layer)
 {
     this.animationSpeed = animationSpeed;
     this.skipFadeOut = skipFadeOut;
     this.midAction = midAction;
     this.endAction = endAction;
 }
Beispiel #6
0
 public FadeTransition(Atom a, int layer, float animationSpeed, bool skipFadeOut, State nextState)
     : base(a, layer)
 {
     this.animationSpeed = animationSpeed;
     this.skipFadeOut = skipFadeOut;
     this.midAction = delegate() { a.stateManager.AddState(nextState); };
     this.endAction = delegate() { a.stateManager.AddFocus(nextState); };
 }
 public void AddTransition(TransitionAction action, State destination)
 {
     if (transitions == null)
     {
         transitions = new List <Transition> ();
     }
     transitions.Add(new Transition(action, this, destination));
 }
Beispiel #8
0
 public FadeTransition(Atom a, int layer, float animationSpeed, bool skipFadeOut, State nextState)
     : base(a, layer)
 {
     this.animationSpeed = animationSpeed;
     this.skipFadeOut    = skipFadeOut;
     this.midAction      = delegate() { a.stateManager.AddState(nextState); };
     this.endAction      = delegate() { a.stateManager.AddFocus(nextState); };
 }
Beispiel #9
0
 public FadeTransition(Atom a, int layer, float animationSpeed, bool skipFadeOut, TransitionAction midAction, TransitionAction endAction = null)
     : base(a, layer)
 {
     this.animationSpeed = animationSpeed;
     this.skipFadeOut    = skipFadeOut;
     this.midAction      = midAction;
     this.endAction      = endAction;
 }
Beispiel #10
0
 /// <summary>
 /// Change the current state to the state at stateID and calls the transition functions
 /// </summary>
 /// <param name="stateID">The key of the desired state</param>
 /// /// <param name="transitionAction">The function to call as the state changes</param>
 public void ChangeState(String stateID, TransitionAction transitionAction)
 {
     if (states.ContainsKey(stateID) & currentStateID != stateID)
     {
         currentState   = states[stateID];
         currentStateID = stateID;
         transitionAction(this);
     }
 }
Beispiel #11
0
        public TransitionActionDTO ToTransitionAction(DR_Requester requester, TransitionAction dbTransitionAction, bool withDetails)
        {
            BizAction      bizAction      = new BizAction();
            BizFormula     bizFormula     = new BizFormula();
            BizEntityGroup bizEntityGroup = new BizEntityGroup();
            BizTransition  bizTransition  = new BizTransition();
            var            result         = new TransitionActionDTO();

            result.ID = dbTransitionAction.ID;
            if (dbTransitionAction.ActionTypeID != null)
            {
                result.ActionType = (ActionType)dbTransitionAction.ActionTypeID;
            }
            else
            {
                result.ActionType = ActionType.Approve;
            }
            result.MultipleUserEnabled = dbTransitionAction.MultipleUserEnabled;

            result.Name = dbTransitionAction.Name;
            if (withDetails)
            {
                //   result.Action = bizAction.ToActionDTO(dbTransitionAction.Action);
                result.Transition = bizTransition.ToSimpleTransitionDTO(dbTransitionAction.Transition);

                BizTarget   bizTarget   = new BizTarget();
                BizRoleType bizRoleType = new BizRoleType();
                foreach (var target in dbTransitionAction.TransitionActionTarget)
                {
                    TransitionActionTargetDTO at = new TransitionActionTargetDTO();
                    at.ID = target.ID;
                    //     at.CanSendOtherOrganizations = target.CanSendOtherOrganizations==true;
                    at.TargetType = (TargetType)target.TargetType;
                    if (target.RoleTypeID != null)
                    {
                        at.RoleTypeID = target.RoleTypeID.Value;
                        at.RoleType   = bizRoleType.ToRoleTypeDTO(target.RoleType);
                    }
                    result.Targets.Add(at);
                }

                foreach (var sbsf in dbTransitionAction.TransitionAction_Formula)
                {
                    var sf = new TransitionActionFormulaDTO();
                    sf.FormulaID = sbsf.FormulaID;
                    sf.Message   = sbsf.Message;
                    sf.TrueFalse = sbsf.TrueFalse;
                    result.Formulas.Add(sf);
                }
                foreach (var entityGroup in dbTransitionAction.TransitionAction_EntityGroup)
                {
                    result.EntityGroups.Add(bizEntityGroup.ToEntityGroupDTO(requester, entityGroup.EntityGroup, withDetails));
                }
            }
            return(result);
        }
Beispiel #12
0
        public bool SetTransitionAction(Transition <T> otherTransition, TransitionAction <T> transitionAction)
        {
            Transition <T> transition = GetTransition(otherTransition);

            if (transition == null)
            {
                return(false);
            }
            transition.TAction = transitionAction;
            return(true);
        }
Beispiel #13
0
        public bool SetTransitionAction(State <T> stateFrom, State <T> stateTo, TransitionAction <T> transitionAction)
        {
            Transition <T> transition = GetTransition(stateFrom, stateTo);

            if (transition == null)
            {
                return(false);
            }
            transition.TAction = transitionAction;
            return(true);
        }
Beispiel #14
0
        public bool SetTransitionAction(T identifierFrom, T identifierTo, TransitionAction <T> transitionAction)
        {
            Transition <T> transition = GetTransition(identifierFrom, identifierTo);

            if (transition == null)
            {
                return(false);
            }
            transition.TAction = transitionAction;
            return(true);
        }
Beispiel #15
0
        public (TransitionAction transitionAction, List <string> nextActivities) GetActivityStatus(string activityId)
        {
            var activity = FindActivityById(activityId);

            if (activity == null)
            {
                throw new ReaderException($"Activity with specified Id : {activityId}, not found");
            }

            TransitionAction transitionAction = this.CheckActivityTransitionAction(activity);

            var nextActivities = this.GetTransitionsFromActivity(activity, transitionAction);

            return(transitionAction : transitionAction, nextActivities : nextActivities);
        }
 public UniqueTransition SetInteractionController(ITransitionInteractionController interactionController, Type fromViewController, TransitionAction action)
 {
     return(SetInteractionController(
                interactionController,
                fromViewController == null ? null : new ObjCRuntime.Class(fromViewController),
                null,
                action));
 }
 public UniqueTransition SetInteractionController <TFrom, TTo> (ITransitionInteractionController interactionController, TransitionAction action)
     where TFrom : UIViewController
     where TTo : UIViewController
 {
     return(SetInteractionController(
                interactionController,
                new ObjCRuntime.Class(typeof(TFrom)),
                new ObjCRuntime.Class(typeof(TTo)),
                action));
 }
 public UniqueTransition(TransitionAction action, Type fromViewController, Type toViewController)
     : this(action, new ObjCRuntime.Class(fromViewController), new ObjCRuntime.Class(toViewController))
 {
 }
Beispiel #19
0
 public StatechartTransition(TransitionAttribute transition, MethodInfo method, IState context)
 {
     _Transition = transition;
     Action      = (TransitionAction)Delegate.CreateDelegate(typeof(TransitionAction), context, method);
 }
Beispiel #20
0
        public bool AddTransition(State <T> otherStateFrom, State <T> otherStateTo, TransitionTracer <T> transitionTracer, TransitionAction <T> transitionAction)
        {
            State <T> stateFrom = GetState(otherStateFrom);
            State <T> stateTo   = GetState(otherStateTo);

            if (stateFrom == null | stateTo == null)
            {
                return(false);
            }
            return(transitions.Add(new Transition <T>
            {
                StateFrom = stateFrom,
                StateTo = stateTo,
                Tracer = transitionTracer,
                TAction = transitionAction
            }));
        }
 /// <summary>
 /// Register a new transition inside the state machine.
 /// </summary>
 /// <param name="previousState">The state being transitioned out of.</param>
 /// <param name="eventPacket">The type of packet received over the network.</param>
 /// <param name="nextState">The state to transition into.</param>
 /// <param name="action">An action to perform before transitioning.</param>
 public void RegisterTransition(NetworkState previousState, TransitionEvent transEvent, NetworkState nextState, TransitionAction action)
 {
     TransitionTable.Add(new Tuple<NetworkState, TransitionEvent>(previousState, transEvent), new Tuple<NetworkState, TransitionAction>(nextState, action));
     return;
 }
Beispiel #22
0
 public TransitionAction Exec(Action<char> action)
 {
     TransitionAction = new TransitionAction(this, action);
     return TransitionAction;
 }
Beispiel #23
0
        public bool UpdateTransitions(int ProcessID, List <TransitionDTO> list, string flowSTR)
        {
            try
            {
                //مهم و پیچیده نسبتا؟ اگر از جریان کار استفاده شده باشد امکان تغییر جریان کار بررسی شود
                using (var projectContext = new MyProjectEntities())
                {
                    var dbProcess = projectContext.Process.FirstOrDefault(x => x.ID == ProcessID);
                    dbProcess.TransitionFlowSTR = flowSTR;
                    var existingTransitions = list.Where(x => x.ID != 0).Select(x => x.ID).ToList();
                    var listRemove          = dbProcess.Transition.Where(x => !existingTransitions.Contains(x.ID));
                    foreach (var item in listRemove.ToList())
                    {
                        while (item.TransitionActivity.Any())
                        {
                            projectContext.TransitionActivity.Remove(item.TransitionActivity.First());
                        }

                        while (item.TransitionAction.Any())
                        {
                            while (item.TransitionAction.First().TransitionAction_EntityGroup.Any())
                            {
                                projectContext.TransitionAction_EntityGroup.Remove(item.TransitionAction.First().TransitionAction_EntityGroup.First());
                            }
                            while (item.TransitionAction.First().TransitionAction_Formula.Any())
                            {
                                projectContext.TransitionAction_Formula.Remove(item.TransitionAction.First().TransitionAction_Formula.First());
                            }
                            while (item.TransitionAction.First().TransitionActionTarget.Any())
                            {
                                projectContext.TransitionActionTarget.Remove(item.TransitionAction.First().TransitionActionTarget.First());
                            }
                            projectContext.TransitionAction.Remove(item.TransitionAction.First());
                        }
                        //item.TransitionAction.Clear();
                        //item.TransitionActivity.Clear();

                        projectContext.Transition.Remove(item);
                    }
                    foreach (var message in list)
                    {
                        Transition dbTransition = null;
                        if (message.ID == 0)
                        {
                            dbTransition = new Transition();
                            projectContext.Transition.Add(dbTransition);
                        }
                        else
                        {
                            dbTransition = projectContext.Transition.FirstOrDefault(x => x.ID == message.ID);
                        }

                        dbTransition.CurrentStateID = message.CurrentStateID;

                        dbTransition.ProcessID   = message.ProcessID;
                        dbTransition.NextStateID = message.NextStateID;
                        dbTransition.Name        = message.Name;

                        List <TransitionActivity> removeActivity = new List <TransitionActivity>();
                        foreach (var dbActivity in dbTransition.TransitionActivity)
                        {
                            if (!message.TransitionActivities.Any(x => x.ID == dbActivity.ActivityID))
                            {
                                removeActivity.Add(dbActivity);
                            }
                        }
                        foreach (var citem in removeActivity)
                        {
                            projectContext.TransitionActivity.Remove(citem);
                        }

                        foreach (var msgActivity in message.TransitionActivities)
                        {
                            TransitionActivity dbTransitionActivity = null;
                            if (!dbTransition.TransitionActivity.Any(x => msgActivity.ID != 0 && x.ActivityID == msgActivity.ID))
                            {
                                dbTransitionActivity = new TransitionActivity();
                                dbTransition.TransitionActivity.Add(dbTransitionActivity);
                            }
                            else
                            {
                                dbTransitionActivity = dbTransition.TransitionActivity.FirstOrDefault(x => x.ActivityID == msgActivity.ID);
                            }
                            dbTransitionActivity.ActivityID = msgActivity.ID;
                        }


                        List <TransitionAction> removeAction = new List <TransitionAction>();
                        foreach (var dbAction in dbTransition.TransitionAction)
                        {
                            if (!message.TransitionActions.Any(x => x.ID == dbAction.ID))
                            {
                                removeAction.Add(dbAction);
                            }
                        }
                        foreach (var citem in removeAction)
                        {
                            while (citem.TransitionAction_EntityGroup.Any())
                            {
                                projectContext.TransitionAction_EntityGroup.Remove(citem.TransitionAction_EntityGroup.First());
                            }
                            while (citem.TransitionAction_Formula.Any())
                            {
                                projectContext.TransitionAction_Formula.Remove(citem.TransitionAction_Formula.First());
                            }
                            while (citem.TransitionActionTarget.Any())
                            {
                                projectContext.TransitionActionTarget.Remove(citem.TransitionActionTarget.First());
                            }
                            projectContext.TransitionAction.Remove(citem);
                        }

                        foreach (var msgTransitionAction in message.TransitionActions)
                        {
                            TransitionAction dbTransitionAction = null;
                            if (!dbTransition.TransitionAction.Any(x => msgTransitionAction.ID != 0 && x.ID == msgTransitionAction.ID))
                            {
                                dbTransitionAction = new TransitionAction();
                                dbTransition.TransitionAction.Add(dbTransitionAction);
                            }
                            else
                            {
                                dbTransitionAction = dbTransition.TransitionAction.FirstOrDefault(x => x.ID == msgTransitionAction.ID);
                            }
                            dbTransitionAction.ActionTypeID        = (short)msgTransitionAction.ActionType;
                            dbTransitionAction.MultipleUserEnabled = msgTransitionAction.MultipleUserEnabled;


                            dbTransitionAction.Name = msgTransitionAction.Name;

                            List <TransitionActionTarget> removeTransitionActionTarget = new List <TransitionActionTarget>();
                            foreach (var dbTransitionAction_Target in dbTransitionAction.TransitionActionTarget)
                            {
                                if (!msgTransitionAction.Targets.Any(x => x.ID == dbTransitionAction_Target.ID))
                                {
                                    removeTransitionActionTarget.Add(dbTransitionAction_Target);
                                }
                            }
                            foreach (var citem in removeTransitionActionTarget)
                            {
                                projectContext.TransitionActionTarget.Remove(citem);
                            }

                            foreach (var item in msgTransitionAction.Targets)
                            {
                                TransitionActionTarget dbTransitionActionTarget = dbTransitionAction.TransitionActionTarget.FirstOrDefault(x => item.ID != 0 && x.ID == item.ID);
                                if (dbTransitionActionTarget == null)
                                {
                                    dbTransitionActionTarget = new TransitionActionTarget();
                                    dbTransitionAction.TransitionActionTarget.Add(dbTransitionActionTarget);
                                }
                                dbTransitionActionTarget.TargetType = (Int16)item.TargetType;
                                //    dbTransitionActionTarget.CanSendOtherOrganizations = item.CanSendOtherOrganizations;
                                if (dbTransitionActionTarget.RoleTypeID != 0)
                                {
                                    dbTransitionActionTarget.RoleTypeID = item.RoleTypeID;
                                }
                                else
                                {
                                    dbTransitionActionTarget.RoleTypeID = null;
                                }
                            }

                            List <TransitionAction_Formula> removeTransitionAction_Formula = new List <TransitionAction_Formula>();
                            foreach (var dbTransitionAction_Formula in dbTransitionAction.TransitionAction_Formula)
                            {
                                if (!msgTransitionAction.Formulas.Any(x => x.FormulaID == dbTransitionAction_Formula.FormulaID))
                                {
                                    removeTransitionAction_Formula.Add(dbTransitionAction_Formula);
                                }
                            }
                            foreach (var citem in removeTransitionAction_Formula)
                            {
                                projectContext.TransitionAction_Formula.Remove(citem);
                            }

                            foreach (var item in msgTransitionAction.Formulas)
                            {
                                TransitionAction_Formula dbTransitionAction_Formula = dbTransitionAction.TransitionAction_Formula.FirstOrDefault(x => item.FormulaID != 0 && x.FormulaID == item.FormulaID);
                                if (dbTransitionAction_Formula == null)
                                {
                                    dbTransitionAction_Formula = new TransitionAction_Formula();
                                    dbTransitionAction.TransitionAction_Formula.Add(dbTransitionAction_Formula);
                                }
                                dbTransitionAction_Formula.TrueFalse = item.TrueFalse;
                                dbTransitionAction_Formula.FormulaID = item.FormulaID;
                                dbTransitionAction_Formula.Message   = item.Message;
                            }
                            List <TransitionAction_EntityGroup> removeTransitionAction_EntityGroup = new List <TransitionAction_EntityGroup>();
                            foreach (var dbTransitionAction_EntityGroup in dbTransitionAction.TransitionAction_EntityGroup)
                            {
                                if (!msgTransitionAction.EntityGroups.Any(x => x.ID == dbTransitionAction_EntityGroup.EntityGroupID))
                                {
                                    removeTransitionAction_EntityGroup.Add(dbTransitionAction_EntityGroup);
                                }
                            }
                            foreach (var citem in removeTransitionAction_EntityGroup)
                            {
                                projectContext.TransitionAction_EntityGroup.Remove(citem);
                            }

                            foreach (var item in msgTransitionAction.EntityGroups)
                            {
                                TransitionAction_EntityGroup dbTransitionAction_EntityGroup = dbTransitionAction.TransitionAction_EntityGroup.FirstOrDefault(x => item.ID != 0 && x.EntityGroupID == item.ID);
                                if (dbTransitionAction_EntityGroup == null)
                                {
                                    dbTransitionAction_EntityGroup = new TransitionAction_EntityGroup();
                                    dbTransitionAction.TransitionAction_EntityGroup.Add(dbTransitionAction_EntityGroup);
                                }
                                dbTransitionAction_EntityGroup.EntityGroupID = item.ID;
                            }
                        }
                    }

                    projectContext.SaveChanges();
                    return(true);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Beispiel #24
0
 public Transition(TransitionAction transitionAction, State nextState)
 {
     TransitionAction = transitionAction;
     NextState = nextState;
 }
Beispiel #25
0
 public TransitionEvent(TStateId from, TStateId to, TransitionAction action)
 {
     this.from   = from;
     this.to     = to;
     this.action = action;
 }
 public Transition(TransitionAction doTransition, State start, State destination)
 {
     this.doTransition = doTransition;
     this.start        = start;
     this.destination  = destination;
 }
 public UniqueTransition SetAnimationController <T> (IAnimationController animationController, TransitionAction action)
     where T : UIViewController
 {
     return(SetAnimationController(
                animationController,
                new ObjCRuntime.Class(typeof(T)),
                action));
 }
 public UniqueTransition SetAnimationController(IAnimationController animationController, Type fromViewController, Type toViewController, TransitionAction action)
 {
     return(SetAnimationController(
                animationController,
                fromViewController == null ? null : new ObjCRuntime.Class(fromViewController),
                toViewController == null ? null : new ObjCRuntime.Class(toViewController),
                action));
 }
Beispiel #29
0
 /// <summary>
 /// Invokes TransitionAction event.
 /// </summary>
 /// <param name="symbol"></param>
 public void OnTransitionAction(TInSymbol symbol)
 {
     TransitionAction?.Invoke(this, new ActionEventArgs(symbol));
 }
 /// <summary>
 /// Register a new transition inside the state machine.
 /// </summary>
 /// <param name="previousState">The state being transitioned out of.</param>
 /// <param name="eventPacket">The type of packet received over the network.</param>
 /// <param name="nextState">The state to transition into.</param>
 /// <param name="action">An action to perform before transitioning.</param>
 public void RegisterTransition(GameServerState previousState, GameServerTransition transEvent, GameServerState nextState, TransitionAction action)
 {
     TransitionTable.Add(new Tuple<GameServerState, GameServerTransition>(previousState, transEvent), new Tuple<GameServerState, TransitionAction>(nextState, action));
     return;
 }