Ejemplo n.º 1
0
        public void CreateWorkflowDefinition(WfWorkflowDefinition workflowDefinition)
        {
            int generatedId = Interlocked.Increment(ref memoryWorkflowDefinitionSequenceGenerator);

            workflowDefinition.WfwdId = generatedId;
            inMemoryWorkflowDefinitionStore[generatedId] = workflowDefinition;
        }
Ejemplo n.º 2
0
        public void MoveActivity(WfWorkflowDefinition wfWorkflowDefinition, int src, int dst, bool after)
        {
            WfActivityDefinition wfActivityDefinitionFrom = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, src);
            WfActivityDefinition wfActivityDefinitionTo   = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, dst);

            MoveActivity(wfWorkflowDefinition, wfActivityDefinitionFrom, wfActivityDefinitionTo, after);
        }
Ejemplo n.º 3
0
        public int CountDefaultTransitions(WfWorkflowDefinition wfWorkflowDefinition)
        {
            Debug.Assert(wfWorkflowDefinition != null);
            //--
            int?idActivityDefinition = wfWorkflowDefinition.WfadId;

            if (idActivityDefinition == null)
            {
                //The workflow don't have a starting activity
                return(0);
            }
            WfTransitionDefinition transitionNext;

            transitionsNext.TryGetValue(idActivityDefinition + "|" + WfCodeTransition.Default.ToString(), out transitionNext);

            int count = 0;

            while (transitionNext != null)
            {
                WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo];
                idActivityDefinition = wfNextActivityDefinition.WfadId;
                transitionsNext.TryGetValue(idActivityDefinition + "|" + WfCodeTransition.Default.ToString(), out transitionNext);
                count++;
            }

            return(count);
        }
Ejemplo n.º 4
0
        public int CountDefaultTransitions(WfWorkflowDefinition wfWorkflowDefinition)
        {
            var cmd = GetSqlServerCommand("CountDefaultTransactions.sql");

            cmd.Parameters.AddWithValue(WfWorkflowDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId);
            return(cmd.ReadScalar <int>());
        }
        public WfActivityDefinition FindActivityDefinitionByPosition(WfWorkflowDefinition wfWorkflowDefinition, int position)
        {
            int?idActivity = wfWorkflowDefinition.WfadId;

            if (idActivity == null)
            {
                //The workflow don't have a starting activity
                return(null);
            }
            WfTransitionDefinition transitionNext = transitionsNext[idActivity + "|" + WfCodeTransition.Default.ToString()];

            int i = 1;

            while (transitionNext != null && i < position)
            {
                WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo];
                idActivity     = wfNextActivityDefinition.WfadId;
                transitionNext = transitionsNext[wfNextActivityDefinition.WfadId + "|" + WfCodeTransition.Default.ToString()];
                i++;
            }

            if (transitionNext == null)
            {
                return(null);
            }

            return(ReadActivityDefinition(transitionNext.WfadIdTo));
        }
Ejemplo n.º 6
0
        public void CreateActivityDefinition(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivityDefinition)
        {
            wfActivityDefinition.WfwdId = (int)wfWorkflowDefinition.WfwdId;
            int id = (int)BrokerManager.GetBroker <WfActivityDefinition>().Save(wfActivityDefinition);

            wfActivityDefinition.WfadId = id;
        }
Ejemplo n.º 7
0
        public void CreateActivityDefinition(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivityDefinition)
        {
            int generatedId = Interlocked.Increment(ref memoryActivityDefinitionSequenceGenerator);

            wfActivityDefinition.WfadId = generatedId;
            inMemoryActivityDefinitionStore[generatedId] = wfActivityDefinition;
        }
Ejemplo n.º 8
0
        public IList <WfActivityDefinition> FindAllDefaultActivityDefinitions(WfWorkflowDefinition wfWorkflowDefinition, int startingPos = 0)
        {
            Debug.Assert(wfWorkflowDefinition != null);
            //---
            int?idStartActivity = wfWorkflowDefinition.WfadId;
            IList <WfActivityDefinition> retAllDefaultActivities = new List <WfActivityDefinition>();

            if (idStartActivity != null)
            {
                WfActivityDefinition first = inMemoryActivityDefinitionStore[idStartActivity];
                retAllDefaultActivities.Add(first);

                WfTransitionDefinition transitionNext;
                transitionsNext.TryGetValue(idStartActivity + "|" + WfCodeTransition.Default.ToString(), out transitionNext);

                while (transitionNext != null)
                {
                    WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo];
                    retAllDefaultActivities.Add(wfNextActivityDefinition);
                    transitionsNext.TryGetValue(wfNextActivityDefinition.WfadId + "|" + WfCodeTransition.Default.ToString(), out transitionNext);
                }
            }

            return(retAllDefaultActivities);
        }
Ejemplo n.º 9
0
 public void UpdateWorkflowDefinition(WfWorkflowDefinition wfWorkflowDefinition)
 {
     Debug.Assert(wfWorkflowDefinition != null);
     Debug.Assert(wfWorkflowDefinition.WfwdId != null);
     Debug.Assert(inMemoryWorkflowDefinitionStore.ContainsKey(wfWorkflowDefinition.WfwdId), "This activity cannot be updated : It does not exist in the store");
     //---
     inMemoryWorkflowDefinitionStore[wfWorkflowDefinition.WfwdId] = wfWorkflowDefinition;
 }
Ejemplo n.º 10
0
        public WfWorkflowDefinition Build()
        {
            WfWorkflowDefinition wfTransitionDefinition = new WfWorkflowDefinition();

            wfTransitionDefinition.WfadId       = myWfadId;
            wfTransitionDefinition.CreationDate = myCreationDate;
            wfTransitionDefinition.Name         = myName;
            return(wfTransitionDefinition);
        }
Ejemplo n.º 11
0
        public IList <WfDecision> FindAllDecisionsByWorkflowDefinitionId(WfWorkflowDefinition wfWorkflowDefinition)
        {
            Debug.Assert(wfWorkflowDefinition != null);
            //--
            var cmd = GetSqlServerCommand("FindAllDecisionsByWorkflowDefinitionId.sql");

            cmd.Parameters.AddWithValue(WfWorkflowDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId.Value);
            return(new List <WfDecision>(cmd.ReadList <WfDecision>()));
        }
Ejemplo n.º 12
0
        public IList <WfWorkflow> FindActiveWorkflows(WfWorkflowDefinition wfWorkflowDefinition, bool isForUpdate)
        {
            Debug.Assert(wfWorkflowDefinition != null);
            //--
            var cmd = GetSqlServerCommand("FindActiveWorkflowsForUpdate.sql");

            cmd.Parameters.AddWithValue(WfWorkflow.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId);
            cmd.Parameters.AddWithValue(LOCK, isForUpdate);
            return(new List <WfWorkflow>(cmd.ReadList <WfWorkflow>()));
        }
Ejemplo n.º 13
0
        public IList <WfActivityDefinition> FindAllDefaultActivityDefinitions(WfWorkflowDefinition wfWorkflowDefinition)
        {
            var cmd = GetSqlServerCommand("FindAllDefaultActivityDefinitions.sql");

            cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId);
            cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.NAME, WfCodeTransition.Default.ToString());
            IList <WfActivityDefinition> activities = new List <WfActivityDefinition>(cmd.ReadList <WfActivityDefinition>());

            return(activities);
        }
Ejemplo n.º 14
0
        public WfActivityDefinition FindActivityDefinitionByPosition(WfWorkflowDefinition wfWorkflowDefinition, int position)
        {
            var cmd = GetSqlServerCommand("FindActivityDefinitionByPosition.sql");

            cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId);
            cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.LEVEL, position);
            WfActivityDefinition activity = cmd.ReadScalar <WfActivityDefinition>();

            return(activity);
        }
Ejemplo n.º 15
0
        public WfActivityDefinition FindActivityDefinitionByPosition(WfWorkflowDefinition wfWorkflowDefinition, int position)
        {
            var cmd = GetSqlServerCommand("FindActivityDefinitionByPosition.sql");

            cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId);
            cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.LEVEL, position);

            WfActivityDefinition activity = CollectionBuilder <WfActivityDefinition> .ParseCommandForSingleObject(cmd, true);

            return(activity);
        }
Ejemplo n.º 16
0
        public IList <WfWorkflow> FindActiveWorkflows(WfWorkflowDefinition wfWorkflowDefinition, bool isForUpdate)
        {
            IList <WfWorkflow> collect = new List <WfWorkflow>();

            foreach (WfWorkflow wfWorkflow in inMemoryWorkflowInstanceStore.Values)
            {
                WfCodeStatusWorkflow status = (WfCodeStatusWorkflow)Enum.Parse(typeof(WfCodeStatusWorkflow), wfWorkflow.WfsCode, true);

                if (wfWorkflowDefinition.WfwdId.Equals(wfWorkflow.WfwId) && (status == WfCodeStatusWorkflow.Sta || status == WfCodeStatusWorkflow.Pau))
                {
                    collect.Add(wfWorkflow);
                }
            }

            return(collect);
        }
        public IList <WfActivityDefinition> FindAllDefaultActivityDefinitions(WfWorkflowDefinition wfWorkflowDefinition)
        {
            Debug.Assert(wfWorkflowDefinition != null);
            //---
            long?idStartActivity = wfWorkflowDefinition.WfadId;
            IList <WfActivityDefinition> retAllDefaultActivities = new List <WfActivityDefinition>();

            WfTransitionDefinition transitionNext = transitionsNext[idStartActivity + "|" + WfCodeTransition.Default.ToString()];

            while (transitionNext != null)
            {
                WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo];
                retAllDefaultActivities.Add(wfNextActivityDefinition);
                transitionNext = transitionsNext[wfNextActivityDefinition.WfadId + "|" + WfCodeTransition.Default.ToString()];
            }

            return(retAllDefaultActivities);
        }
Ejemplo n.º 18
0
        public void StartInstance(WfWorkflow wfWorkflow)
        {
            Debug.Assert(wfWorkflow == null);
            Debug.Assert(WfCodeStatusWorkflow.Sta.ToString().Equals(wfWorkflow.WfsCode), "A workflow must be started before pausing");
            //---
            wfWorkflow.WfsCode = WfCodeStatusWorkflow.Sta.ToString();

            WfWorkflowDefinition wfWorkflowDefinition = _workflowStorePlugin.ReadWorkflowDefinition((int)wfWorkflow.WfwdId);

            WfActivity wfActivityCurrent = new WfActivity();

            wfActivityCurrent.CreationDate = new DateTime();
            wfActivityCurrent.WfadId       = (int)wfWorkflowDefinition.WfadId;
            _workflowStorePlugin.CreateActivity(wfActivityCurrent);
            wfWorkflow.WfaId2 = wfActivityCurrent.WfaId;
            _workflowStorePlugin.UpdateWorkflowInstance(wfWorkflow);

            AutoValidateNextActivities(wfWorkflow, (int)wfWorkflowDefinition.WfadId);
        }
Ejemplo n.º 19
0
        public WfWorkflow CreateWorkflowInstance(string definitionName, string user, bool userLogic, int item)
        {
            Debug.Assert(definitionName != null);
            Debug.Assert(user != null);
            //---
            WfWorkflowDefinition wfWorkflowDefinition = _workflowStorePlugin.ReadWorkflowDefinition(definitionName);
            WfWorkflow           wfWorkflow           = new WfWorkflow();

            wfWorkflow.CreationDate = new DateTime();
            wfWorkflow.ItemId       = item;
            wfWorkflow.WfsCode      = WfCodeStatusWorkflow.Cre.ToString();
            wfWorkflow.WfwdId       = wfWorkflowDefinition.WfwdId;
            wfWorkflow.WfaId2       = wfWorkflowDefinition.WfadId;
            wfWorkflow.UserLogic    = userLogic;
            wfWorkflow.User         = user;

            _workflowStorePlugin.CreateWorkflowInstance(wfWorkflow);

            return(wfWorkflow);
        }
Ejemplo n.º 20
0
        public void AddActivity(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivityDefinitionToAdd, int position)
        {
            WfActivityDefinition wfActivityDefinition = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, position);

            if (wfActivityDefinition == null)
            {
                // Inserting a activity in trail
                int size = _workflowStorePlugin.CountDefaultTransitions(wfWorkflowDefinition);
                Debug.Assert(size == Math.Max(0, position - 2), "Position is not valid");

                wfActivityDefinitionToAdd.Level = position;

                _workflowStorePlugin.CreateActivityDefinition(wfWorkflowDefinition, wfActivityDefinitionToAdd);

                //Find the previous activity to add a link to the newly created
                if (position == 2)
                {
                    WfTransitionDefinition wfTransitionDefinition = new WfTransitionBuilder(wfWorkflowDefinition.WfadId, wfActivityDefinitionToAdd.WfadId).build();
                    _workflowStorePlugin.AddTransition(wfTransitionDefinition);
                }
                else if (position > 2)
                {
                    WfActivityDefinition   wfActivityDefinitionPrevious = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, position - 2);
                    WfTransitionDefinition wfTransitionDefinition       = new WfTransitionBuilder(wfActivityDefinitionPrevious.WfadId, wfActivityDefinitionToAdd.WfadId).build();
                    _workflowStorePlugin.AddTransition(wfTransitionDefinition);
                }
                else
                {
                    //Saving starting activity
                    wfWorkflowDefinition.WfadId = wfActivityDefinitionToAdd.WfadId;
                    _workflowStorePlugin.UpdateWorkflowDefinition(wfWorkflowDefinition);
                }
            }
            else
            {
                // Inserting an activity inside the default activities "linked list"
                _workflowStorePlugin.CreateActivityDefinition(wfWorkflowDefinition, wfActivityDefinitionToAdd);
                // Automatically move the next activity after the newly created
                MoveActivity(wfWorkflowDefinition, wfActivityDefinitionToAdd, wfActivityDefinition, false);
            }
        }
Ejemplo n.º 21
0
        public IList <WfActivity> FindAllActivitiesByWorkflowDefinitionId(WfWorkflowDefinition wfWorkflowDefinition)
        {
            Debug.Assert(wfWorkflowDefinition != null);
            //---
            IList <WfActivity> wfActivities = new List <WfActivity>();

            IList <WfActivityDefinition> activityDefinitions = FindAllDefaultActivityDefinitions(wfWorkflowDefinition);

            foreach (WfActivity wfActivity in inMemoryActivityStore.Values)
            {
                foreach (WfActivityDefinition wdActivityDefinition in activityDefinitions)
                {
                    if (wdActivityDefinition.WfadId.Equals(wfActivity.WfadId))
                    {
                        wfActivities.Add(wfActivity);
                    }
                }
            }

            return(wfActivities);
        }
Ejemplo n.º 22
0
        public void CreateWorkflowDefinition(WfWorkflowDefinition workflowDefinition)
        {
            int id = (int)BrokerManager.GetBroker <WfWorkflowDefinition>().Save(workflowDefinition);

            workflowDefinition.WfwdId = id;
        }
Ejemplo n.º 23
0
 public void UpdateWorkflowDefinition(WfWorkflowDefinition wfWorkflowDefinition)
 {
     BrokerManager.GetBroker <WfWorkflowDefinition>().Save(wfWorkflowDefinition);
 }
Ejemplo n.º 24
0
 public IList <WfDecision> FindAllDecisionsByWorkflowDefinitionId(WfWorkflowDefinition wfWorkflowDefinition)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 25
0
 public void CreateWorkflowDefinition(WfWorkflowDefinition wfWorkflowDefinition)
 {
     _workflowStorePlugin.CreateWorkflowDefinition(wfWorkflowDefinition);
 }
Ejemplo n.º 26
0
 public void MoveActivity(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivity, WfActivityDefinition wfActivityReferential, bool after)
 {
     ///TODO
     throw new NotImplementedException();
 }