Esempio n. 1
0
        public void Null_argument_tests()
        {
            IWorkflowItem item = null;

            Assert.Throws <ArgumentNullException>(() => item.Events <ActivityCompletedEvent>());
            Assert.Throws <ArgumentNullException>(() => item.Events(typeof(ActivityCompletedEvent)));
        }
 /// <summary>
 /// Find the parent lambda by given parameters. Returns null if not found.
 /// </summary>
 /// <param name="workflowItem"></param>
 /// <param name="name"></param>
 /// <param name="positionalName"></param>
 /// <returns></returns>
 public static ILambdaItem ParentLambda(this IWorkflowItem workflowItem, string name,
                                        string positionalName = "")
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.ParentLambdas.OfType <LambdaItem>()
            .FirstOrDefault(a => a.Has(Identity.Lambda(name, positionalName))));
 }
Esempio n. 3
0
        /// <summary>
        /// Helps in trigger the scheduling the joint item.
        /// </summary>
        /// <param name="workflowItem"></param>
        /// <returns></returns>
        protected TriggerActions Trigger(IWorkflowItem workflowItem)
        {
            var item = workflowItem as WorkflowItem;

            Ensure.NotNull(item, nameof(workflowItem));
            return(new TriggerActions(item));
        }
Esempio n. 4
0
        public static IActivityItem ParentActivity <TActivity>(this IWorkflowItem workflowItem, string positionalName = "") where TActivity : Activity
        {
            Ensure.NotNull(workflowItem, "workflowItem");
            var description = ActivityDescription.FindOn <TActivity>();

            return(workflowItem.ParentActivity(description.Name, description.Version, positionalName));
        }
Esempio n. 5
0
 public int InsertWorkItem(IWorkflowItem entity)
 {
     return(LockExecute <int>(() =>
     {
         if (!string.IsNullOrEmpty(entity.Alias) && entity.Alias.IndexOf('.') > 0)
         {
             entity.Alias = entity.Alias.Substring(entity.Alias.LastIndexOf('.') + 1);
         }
         if (entity.ItemId >= 10000)
         {
             WorkItemsRead.Add(entity);
             return Dao.Get().Insert <WorkflowItemRead>(entity);
         }
         else
         {
             WorkflowEventManager.RaiseWorkItemEvent(EventStep.Before, ItemActionType.Insert, this, entity);
             WorkItems.Add(entity);
             int result = Dao.Get().Insert <WorkflowItem>(entity);
             if (result > 0)
             {
                 WorkflowEventManager.RaiseWorkItemEvent(EventStep.After, ItemActionType.Insert, this, entity);
             }
             return result;
         }
     }));
 }
 /// <summary>
 /// Returns parent activity by given parameters. Returns null not if not exists.
 /// </summary>
 /// <param name="workflowItem"></param>
 /// <param name="name"></param>
 /// <param name="version"></param>
 /// <param name="positionalName"></param>
 /// <returns></returns>
 public static IActivityItem ParentActivity(this IWorkflowItem workflowItem, string name, string version, string positionalName = "")
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     Ensure.NotNull(name, nameof(name));
     Ensure.NotNull(version, nameof(version));
     return(workflowItem.ParentActivities.OfType <ActivityItem>()
            .FirstOrDefault(a => a.Has(Identity.New(name, version, positionalName))));
 }
        /// <summary>
        /// Returns the parent child-workflow for <see cref="TWorkflow"/> and positional name. Returns null if not
        /// </summary>
        /// <typeparam name="TWorkflow"></typeparam>
        /// <param name="workflowItem"></param>
        /// <param name="positionalName"></param>
        /// <returns></returns>
        public static IChildWorkflowItem ParentChildWorkflow <TWorkflow>(this IWorkflowItem workflowItem, string positionalName = "")
            where TWorkflow : Workflow
        {
            Ensure.NotNull(workflowItem, nameof(workflowItem));
            var desc = WorkflowDescription.FindOn <TWorkflow>();

            return(workflowItem.ParentChildWorkflow(desc.Name, desc.Version, positionalName));
        }
Esempio n. 8
0
 public static void PopulateItemDefaults(this IWorkflowItem <WorkflowBase, InventoryLocation, Item> Item)
 {
     Item.Description   = Item.Item.Description;
     Item.CostPrice     = Item.Item.CostPrice;
     Item.SellingPrice  = Item.Item.SellingPrice;
     Item.VAT           = Item.Item.VAT;
     Item.Quantity      = Item.Item.DefaultQuantity == 0 ? 1 : Item.Item.DefaultQuantity;
     Item.VatPercentage = Item.Item.VAT ? Constants.VatPercentage((Item as BaseObject).Session) : 0;
 }
 /// <summary>
 /// Returns the parent child-workflow by given parameter. Returns null if it can find the parent child workflow for given parameters.
 /// </summary>
 /// <param name="workflowItem"></param>
 /// <param name="name"></param>
 /// <param name="version"></param>
 /// <param name="positionalName"></param>
 /// <returns></returns>
 public static IChildWorkflowItem ParentChildWorkflow(this IWorkflowItem workflowItem, string name, string version,
                                                      string positionalName = "")
 {
     Ensure.NotNull(workflowItem, nameof(workflowItem));
     Ensure.NotNullAndEmpty(name, nameof(name));
     Ensure.NotNullAndEmpty(version, nameof(version));
     return(workflowItem.ParentChildWorkflows.OfType <ChildWorkflowItem>()
            .FirstOrDefault(a => a.Has(Identity.New(name, version, positionalName))));
 }
Esempio n. 10
0
        private void Close_MouseDown(object sender, MouseButtonEventArgs e)
        {
            dynamic       view      = ((Image)sender).DataContext;
            dynamic       viewModel = view.DataContext;
            IWorkflowItem item      = (IWorkflowItem)DataContext;

            if (item != null && viewModel != null && view != null)
            {
                viewModel.DeleteWorkflowItem(item);
            }
        }
Esempio n. 11
0
        internal WorkflowAction FirstJoint(IWorkflowItem beforeItem)
        {
            var workflowItem = beforeItem as WorkflowItem;

            Ensure.NotNull(workflowItem, nameof(beforeItem));

            var trigger = new TriggerWorkflowAction(_triggeringItem);

            trigger.SetJumpedItem(workflowItem);
            return(trigger);
        }
Esempio n. 12
0
        //FIXME
        private void Open()
        {
            var dialog = new OpenFileDialogViewModel
            {
                Title  = "Open Workflow",
                Filter = "W3Tools Workflow (*.rwx)|*.rwx",
                Owner  = this,
            };
            var result = DialogService.ShowDialog(dialog);

            if (result == true)
            {
                foreach (var file in dialog.FilePaths)
                {
                    //check if file exists?
                    if (!File.Exists(file))
                    {
                        continue;
                    }
                    //check if it is workflow file
                    // FIXME

                    var data = RwxData.Deserialize(file);
                    if (data is null)
                    {
                        continue;
                    }

                    WF_Settings settings = new WF_Settings(ConfigService, Logger); //FIXME
                    settings.FromXElement(data.Xsettings);                         //FIXMEEEE

                    var Workflow = new ObservableCollection <IWorkflowItem>();
                    foreach (var item in data.WorkflowItems)
                    {
                        //we have all commands stored in Commands, no need for assembly qualified names // FIXME
                        var cmd = Commands.FirstOrDefault(x => x.GetType().Name == item);
                        if (cmd is null)
                        {
                            continue;
                        }

                        IWorkflowItem emptyCopy = (IWorkflowItem)Activator.CreateInstance(cmd.GetType());
                        emptyCopy.CustomTag = settings;
                        Workflow.Add(emptyCopy);
                    }

                    var vm = AddDocument(data.Title);
                    vm.Settings     = settings;
                    vm.Workflow     = Workflow;
                    vm.DocumentPath = file;
                }
            }
        }
Esempio n. 13
0
 public int UpdateWorkItem(IWorkflowItem entity)
 {
     return(LockExecute <int>(() =>
     {
         if (entity.ItemId >= 10000)
         {
             WorkItemsRead.Remove(entity);
             WorkItemsRead.Add(entity);
             return Dao.Get().Update <WorkflowItemRead>(entity);
         }
         else
         {
             WorkItems.Remove(entity);
             WorkItems.Add(entity);
             return Dao.Get().Update <WorkflowItem>(entity);
         }
     }));
 }
 /// <summary>
 /// Return all events of a specific event type. e.g. ActivityFailedEvent, ActivityTimedoutEvent
 /// </summary>
 /// <typeparam name="TEvent"></typeparam>
 /// <param name="workflowItem"></param>
 /// <param name="includeRescheduleTimerEvents"></param>
 /// <returns></returns>
 public static IEnumerable <TEvent> Events <TEvent>(this IWorkflowItem workflowItem, bool includeRescheduleTimerEvents = false) where TEvent : WorkflowItemEvent
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.AllEvents(includeRescheduleTimerEvents).OfType <TEvent>());
 }
Esempio n. 15
0
        /// <summary>
        /// Назначить стартовый элемент
        /// </summary>
        /// <param name="item">Стартовый элемент</param>
        public void SetStartItem(IWorkflowItem item)
        {
            _objects.Remove(_startItem);

            SetItemDiagram(item);
            _startItem = item;

            if (!_objects.Contains(item))
            {
                _objects.Add(item);
            }

            if (!_items.Contains(item))
            {
                _items.Add(item);
            }
        }
 public SequentialWorkflowModel(IWorkflowItem activity1)
 {
     _activity = new IWorkflowItem[1]; //Sequential activiy 1
     ActivityModel1 = activity1;
 }
Esempio n. 17
0
 private bool AnyOneTimedout(IWorkflowItem item)
 {
     return(item.ParentLambda("ApplyToCouncil").IsSignalTimedout("CRejected") ||
            item.ParentLambda("ApplyToFireDept").IsSignalTimedout("FRejected") ||
            item.ParentLambda("ApplyToForestDept").IsSignalTimedout("FrRejected"));
 }
Esempio n. 18
0
 public static ITimerItem ParentTimer(this IWorkflowItem workflowItem, string name)
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.ParentTimers.OfType <TimerItem>()
            .FirstOrDefault(a => a.Has(Identity.Timer(name))));
 }
Esempio n. 19
0
 public static ITimerItem ParentTimer(this IWorkflowItem workflowItem)
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.ParentTimers.Single());
 }
Esempio n. 20
0
        public static void RaiseWorkItemEvent(EventStep step, ItemActionType type, IWorkflowInstance instance, IWorkflowItem item)
        {
            string key = KeyTemplate.FormatTo(step.ToString(), type.ToString());

            if (WorkItemEventList.ContainsKey(key))
            {
                try
                {
                    Logger.GetLogger("Workflow").Info("{0}:Raise WorkflowItemEvent:{1}".FormatTo(instance.Id, key));
                    WorkItemEventList[key](instance, item);
                }
                catch (Exception ex)
                {
                    Logger.GetLogger("Workflow").Info("{0}:Raise WorkflowEvent:{1} Error:{2},{3}".FormatTo(instance.Id, key, ex.Message, ex.StackTrace));
                }
            }
        }
 public ParallelWorkflowModel(IWorkflowItem activity1, IWorkflowItem activity2)
 {
     _activity = new IWorkflowItem[2]; //Sequential model only has an activity
     _activity[0] = activity1;
     _activity[1] = activity2;
 }
Esempio n. 22
0
 public static IEnumerable <WorkflowItemEvent> AllEventsOf(this IWorkflowItem workflowItem, Type eventType)
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.AllEvents.Where(e => e.GetType() == eventType));
 }
Esempio n. 23
0
 public static IEnumerable <TEvent> AllEventsOf <TEvent>(this IWorkflowItem workflowItem) where TEvent : WorkflowItemEvent
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.AllEvents.OfType <TEvent>());
 }
 /// <summary>
 /// Returns the parent child-workflow of item. Throws exception if none or more than one parent child-workflows are found.
 /// </summary>
 /// <param name="workflowItem"></param>
 /// <returns></returns>
 public static IChildWorkflowItem ParentChildWorkflow(this IWorkflowItem workflowItem)
 {
     Ensure.NotNull(workflowItem, nameof(workflowItem));
     return(workflowItem.ParentChildWorkflows.OfType <ChildWorkflowItem>().Single());
 }
 /// <summary>
 ///  Returns parent lambda. Throws exception if more than one parent lambda exists.
 /// </summary>
 /// <param name="workflowItem"></param>
 /// <returns></returns>
 public static ILambdaItem ParentLambda(this IWorkflowItem workflowItem)
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.ParentLambdas.Single());
 }
Esempio n. 26
0
        /// <summary>
        /// Добавить объект
        /// </summary>
        /// <param name="item"></param>
        public void AddWorkflowItem(IWorkflowItem item)
        {
            if (!_items.Contains(item))
            {
                SetItemDiagram(item);
                _items.Add(item);

                if (!_objects.Contains(item))
                {
                    _objects.Add(item);
                }
            }
        }
 /// <summary>
 /// Return all events of a specific event type. e.g. ActivityFailedEvent, ActivityTimedoutEvent
 /// </summary>
 /// <param name="workflowItem"></param>
 /// <param name="eventType"></param>
 /// <param name="includeRescheduleTimerEvents"></param>
 /// <returns></returns>
 public static IEnumerable <WorkflowItemEvent> Events(this IWorkflowItem workflowItem, Type eventType, bool includeRescheduleTimerEvents = false)
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.AllEvents(includeRescheduleTimerEvents).Where(e => e.GetType() == eventType));
 }
Esempio n. 28
0
 /// <summary>
 /// Удалить объект
 /// </summary>
 /// <param name="item"></param>
 public void RemoveWorkflowItem(IWorkflowItem item)
 {
     _items.Remove(item);
     _objects.Remove(item);
 }
Esempio n. 29
0
 public static IActivityItem ParentActivity(this IWorkflowItem workflowItem)
 {
     Ensure.NotNull(workflowItem, "workflowItem");
     return(workflowItem.ParentActivities.Single());
 }
Esempio n. 30
0
        private void SetItemDiagram(IWorkflowItem item)
        {
            if (item == null)
            {
                return;
            }

            item.Diagram = this;
        }
Esempio n. 31
0
 public virtual void Add(IWorkflowItem item)
 {
     this.Items.Enqueue(item);
 }
Esempio n. 32
0
 /// <summary>
 /// Получить линки связаные с объектом диаграммы
 /// </summary>
 /// <param name="item">Объект диаграммы</param>
 /// <returns>Список линков</returns>
 public List<IWorkflowLink> GetItemLinks(IWorkflowItem item)
 {
     List<IWorkflowLink> list = _links.Where(x => x.FirstItem == item).ToList();
     return list;
 }