Esempio n. 1
0
        // Wenn durch die Aktivität ein Wert zurückgegeben wird, erfolgt eine Ableitung von CodeActivity<TResult>
        // und der Wert von der Ausführmethode zurückgegeben.
        protected override void Execute(NativeActivityContext context)
        {
            List<string> sourcefiles = context.GetValue<List<string>>(SourceFiles);

            if (sourcefiles != null && sourcefiles.Any())
            {
                foreach (var file in sourcefiles)
                {
                    File.Delete(file);
                }
            }
        }
Esempio n. 2
0
        private void LoopActionComplete(NativeActivityContext context, ActivityInstance completedInstance)
        {
            var allelements = context.GetValue(_allelements);
            var selector    = Selector.Get(context);

            selector = OpenRPA.Interfaces.Selector.Selector.ReplaceVariables(selector, context.DataContext);
            var    sel     = new NMSelector(selector);
            var    from    = From?.Get(context);
            string browser = sel.browser;

            if (from != null)
            {
                browser = from.browser;
            }
            System.Threading.Thread.Sleep(500);
            DoWaitForReady(browser);
            Execute(context);
        }
Esempio n. 3
0
        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override void Execute(NativeActivityContext context)
        {
            // Obtain the runtime value of the Text input argument
            // string text = context.GetValue(this.Text);

            //int money = int.Parse(Console.ReadLine());

            // 1. stop the workflow
            // 2. continue the workflow when we get the data

            // create a bookmark
            Console.WriteLine("[Create bookmark]");
            string bookmarkName = context.GetValue(InBookmarkName);

            context.CreateBookmark(bookmarkName, new BookmarkCallback(CallbackFunc));

            //context.SetValue(OutMoney, money);
        }
Esempio n. 4
0
 private void OnBodyComplete(NativeActivityContext context, ActivityInstance completedInstance)
 {
     IEnumerator<NMElement> _enum = _elements.Get(context);
     if (_enum == null) return;
     bool more = _enum.MoveNext();
     if (more)
     {
         context.ScheduleAction<NMElement>(Body, _enum.Current, OnBodyComplete);
     }
     else
     {
         if (LoopAction != null)
         {
             var allelements = context.GetValue(_allelements);
             context.ScheduleActivity(LoopAction, LoopActionComplete);
         }
     }
 }
Esempio n. 5
0
        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override void Execute(NativeActivityContext context)
        {
            // Obtain the runtime value of the Text input argument
            //string text = context.GetValue(this.Text);


            //stop the workflow

            //when have data , let the workflow continue
            string bookMarkName = context.GetValue(inBookMarkName);

            //create bookmark
            Console.WriteLine("cretae bookmark");
            context.CreateBookmark(bookMarkName, new BookmarkCallback(CallBackFun));

            //int days = int.Parse(Console.ReadLine());

            //context.SetValue(outDays, days);
        }
    protected override void Execute(NativeActivityContext context)
    {
        populateDynamicActivity();

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

        // It was throwing a null reference because Model
        // was private, so the input that the activity was receiving
        // was never binded to it.

        var model = context.GetValue <HomeIndexViewModel>(this.Model);

        input.Add("Model", model);

        // It's the dynamic activity that contains input arguments.
        // Not the sequence.

        WorkflowInvoker.Invoke(_dynamicActivity, input);
    }
Esempio n. 7
0
        protected override void Execute(NativeActivityContext context)
        {
            var filename = context.GetValue<string>(FileName);

            if (!File.Exists(filename))
            {
                throw new FileNotFoundException(filename);
            }

            context.SetValue(Extension, Path.GetExtension(filename));
            context.SetValue(Directory, Path.GetDirectoryName(filename));
            context.SetValue(FileNameWithoutExtension, Path.GetFileNameWithoutExtension(filename));

            var fileinfo = new System.IO.FileInfo(filename);

            context.SetValue(Created, fileinfo.CreationTime);
            context.SetValue(Length, fileinfo.Length);
            context.SetValue(IsReadOnly, fileinfo.IsReadOnly);
            context.SetValue(Modified, fileinfo.LastWriteTime);
        }
        protected override void Execute(NativeActivityContext context)
        {
            string bookmarkName = context.GetValue(this.BookmarkName);
            var    wfcontext    = context.GetValue(this.WFContext);
            string templateName = context.GetValue(this.Templatename);

            string instruction = context.GetValue(this.Instruction);

            var instance = context.GetValue(this.Instance);
            var buttons  = context.GetValue(this.Buttons);

            ////refresh from DB
            //wfcontext.Refresh();


            //Set Current Step
            var index = wfcontext.Steps.FindIndex(m => m.BookMark == bookmarkName);

            if (index >= 0)
            {
                wfcontext.CurrentStepIndex      = index;
                wfcontext.Steps[index].BookMark = bookmarkName;
            }
            else
            {
                var model = Activator.CreateInstance(typeof(T));
                if (instance != null)
                {
                    model = (IStepViewModel)instance;
                }
                var stepModel = (IStepViewModel)model;
                stepModel.Template    = templateName;
                stepModel.Instruction = string.IsNullOrEmpty(stepModel.Instruction) ? instruction : stepModel.Instruction;
                stepModel.Buttons     = buttons;

                stepModel.BookMark = bookmarkName;

                wfcontext.Steps.Add(stepModel);
                wfcontext.CurrentStepIndex = wfcontext.Steps.Count - 1;
            }

            //Save to DB
            wfcontext.Id = context.WorkflowInstanceId;
            Mvc.Workflow.Wizard.Common.Providers.WizardModelStoreProviderManager.Provider.SaveByKey(wfcontext.Id.ToString(), wfcontext);

            //Return
            context.CreateBookmark(bookmarkName, new BookmarkCallback(this.Continue));
            context.SetValue(WFContext, wfcontext);
        }
Esempio n. 9
0
        protected override void Execute(NativeActivityContext context)
        {
            DynamicValue dynCondition = context.GetValue <DynamicValue>(this.Condition);
            bool         condition    = DynamicValueConvert.ConvertTo <bool>(dynCondition);

            if (condition)
            {
                if (null != this.Then)
                {
                    context.ScheduleActivity(this.Then);
                }
            }
            else
            {
                if (null != this.Else)
                {
                    context.ScheduleActivity(this.Else);
                }
            }
        }
Esempio n. 10
0
        protected override void AfterExecute(NativeActivityContext context, object result)
        {
            var allelements = context.GetValue(_allelements);

            if (allelements == null)
            {
                allelements = new NMElement[] { }
            }
            ;
            var maxresults = MaxResults.Get(context);
            var minresults = MinResults.Get(context);

            NMElement[] elements = result as NMElement[];
            if (elements.Count() > maxresults)
            {
                elements = elements.Take(maxresults).ToArray();
            }

            if ((elements.Length + allelements.Length) < minresults)
            {
                Log.Selector(string.Format("Windows.GetElement::Failed locating " + minresults + " item(s)"));
                throw new ElementNotFoundException("Failed locating " + minresults + " item(s)");
            }
            IEnumerator <NMElement> _enum = elements.ToList().GetEnumerator();
            bool more = _enum.MoveNext();

            if (more)
            {
                allelements = allelements.Concat(elements).ToArray();
                var eq = new Activities.NMEqualityComparer();
                allelements = allelements.Distinct(eq).ToArray();
            }
            context.SetValue(_allelements, allelements);
            context.SetValue(Elements, allelements);
            Log.Selector("END:: I have " + elements.Count() + " elements, and " + allelements.Count() + " in all elements");
            if (more)
            {
                context.SetValue(_elements, _enum);
                context.ScheduleAction(Body, _enum.Current, OnBodyComplete);
            }
        }
Esempio n. 11
0
        // 如果活动返回值,则从 CodeActivity<TResult>
        // 派生并从 Execute 方法返回该值。
        protected override void Execute(NativeActivityContext context)
        {
            // 获取 Text 输入参数的运行时值
            //string text = context.GetValue(this.Text);

            //int moeny = int.Parse(Console.ReadLine());

            //1、让工作流停下来。

            //2、有了数据之后,还得让工作流继续往下流动。

            //由总工作流传来的数据。
            string bookMarkName = context.GetValue(InBookMarkName);

            Console.WriteLine("创建书签");
            //创建书签。
            context.CreateBookmark(bookMarkName, new BookmarkCallback(CallBackFun));


            //context.SetValue(OutMoney, moeny);
        }
Esempio n. 12
0
        protected override void Execute(NativeActivityContext context)
        {
            Debug.WriteLine("Menu WorkFLow");
            menuScreen = ServiceLocator.Instance.RepresentationLayerMain.ShowMenuScreen();
            menuScreen.UserEnteredInput += OnInputReady;

            if (HomeScreenViewModel.GetInstance().CurrentMenuView == null)
            {
                HomeScreenViewModel.GetInstance().ShowMainView();
            }

            nextWorkFlow = HomeScreenViewModel.GetInstance().CurrentMenuView.WorkFlowName();
            if (nextWorkFlow == "OtherWorkFlow")
            {
                nextWorkFlow = "RecordWorkFlow";
            }

            bookmarkName = context.GetValue(this.BookmarkName);
            context.CreateBookmark(bookmarkName,
                                   new BookmarkCallback(OnResumeBookmark));
        }
Esempio n. 13
0
        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override void Execute(NativeActivityContext context)
        {
            // Obtain the runtime value of the Text input argument

            try
            {
                #region --------------------TRY CONTENT----------------------
                var ocr = context.GetValue(OcrLine);
                OcrPolicy.AssertAsVendorTINtitle(ref ocr);
                context.SetValue(Result, ocr);

                #endregion
            }
            catch (Exception err)
            {
                Global.LogError("Weight VendorTIN---> " + err.Message);
            }
            finally
            {
                // Global.MainWindow.SafeInvoke(c => c.HideBusy());
            }
        }
        /// <summary>
        /// When overridden runs the activity's simulation logic
        /// </summary>
        /// <param name="context">The context to be used.</param>
        protected virtual void OnExecuteSimulation(NativeActivityContext context)
        {
            var rootInfo = context.GetExtension <WorkflowInstanceInfo>();

            var key = new SimulationKey
            {
                WorkflowID = rootInfo.ProxyName,
                ActivityID = UniqueID,
                ScenarioID = ScenarioID
            };
            var result = SimulationRepository.Instance.Get(key);

            if (result != null && result.Value != null)
            {
                var dataListExecutionID    = context.GetValue(DataListExecutionID);
                IDataListCompiler compiler = DataListFactory.CreateDataListCompiler();

                var dataObject = context.GetExtension <IDSFDataObject>();

                if (compiler != null && dataObject != null)
                {
                    var allErrors = new ErrorResultTO();
                    var dataList  = compiler.FetchBinaryDataList(dataObject.DataListID, out errorsTo);
                    allErrors.MergeErrors(errorsTo);

                    compiler.Merge(dataList, result.Value, enDataListMergeTypes.Union, enTranslationDepth.Data, false, out errorsTo);
                    allErrors.MergeErrors(errorsTo);

                    compiler.Shape(dataListExecutionID, enDev2ArgumentType.Output, OutputMapping, out errorsTo);
                    allErrors.MergeErrors(errorsTo);

                    if (allErrors.HasErrors())
                    {
                        DisplayAndWriteError(rootInfo.ProxyName, allErrors);
                        dataObject.Environment.AddError(allErrors.MakeDataListReady());
                    }
                }
            }
        }
Esempio n. 15
0
        void OnReadComplete(NativeActivityContext context, Bookmark bookmark, object state)
        {
            //
            string bname = context.GetValue(this.BookmarkName);


            switch (bname)
            {
            case "String":
                var input = state as string;
                context.SetValue(this.Result, input);
                Console.WriteLine("OnReadComplete: " + input);
                break;


            default:
                var input0 = state as CmdParam;
                context.SetValue(this.Result, input0);
                //context.SetValue(this.CommandName, input0.CommandName);
                Console.WriteLine(input0.ToString());
                break;
            }
        }
Esempio n. 16
0
        /// <summary>
        /// Execute
        /// </summary>
        /// <param name="context">WF context</param>
        /// <returns></returns>
        protected override void Execute(NativeActivityContext context)
        {
            // Obtain the runtime value of the Text input argument
            var content = context.GetValue(this.EpisodeContent);

            // TODO : Code this activity
            var notifyParaSplited = context.GetExtension <INotifyParagraphSplited>();

            var pIndex = 0;

            foreach (var para in content.Paragraphs)
            {
                var sentences = NlpUtilities.DetectSentences(para);
                try
                {
                    notifyParaSplited.NotifyParagraphSplited(new SplitedParagraph(para, sentences));
                }
                catch (Exception ex)
                {
                    throw new Exception("Error in SplitEpisodeActivity : notifyParaSplited.NotifyParagraphSplited", ex);
                }
                pIndex += 1;
            }
        }
Esempio n. 17
0
        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override void Execute(NativeActivityContext context)
        {
            // Obtain the runtime value of the Text input argument
            //MailHelper.SendMail(context.GetValue(this.Name), context.GetValue(this.Email), context.GetValue(this.Content));

            string strContent = "";
            Email  email      = new Email();

            strContent = "<p>親愛的 " + context.GetValue(this.ReceiverName) + " </p>";

            if (context.GetValue(this.FlowStatus) == "邀請中")
            {
                email.Subject = string.Format("誠摯的邀請您試用我們最新的供應商平台");
                strContent   += "<p>誠摯的邀請您試用我們最新的供應商平台</p>";
                strContent   += "請按此處 <a href='http://*****:*****@advantech.com";
            email.MailToAddress = context.GetValue(this.ReceiverEmail);
            email.MailBody     += strContent;
            email.SendEmail();

            //2. Create bookmark

            if (BookmarkName.Get(context) != null && BookmarkName.Get(context) != "")
            {
                context.CreateBookmark(BookmarkName.Get(context), new BookmarkCallback(this.OnBookmarkCallback));
            }
        }
Esempio n. 18
0
        protected override void Execute(NativeActivityContext context)
        {
            DesignService designService = new DesignService();

            //启动事务
            using (TransactionScope trans = new TransactionScope())
            {
                //获取传入的参数集合
                Dictionary <string, object> inParams = this.ExchangeParams.Get(context) as Dictionary <string, object>;
                //添加工作流活动实例
                DynEntity workflowfActivityInstance = new DynEntity("WorkflowActivityInstance");
                workflowfActivityInstance["WorkflowActivityInstanceID"]   = designService.GetNextID("WorkflowActivityInstance");
                workflowfActivityInstance["WorkflowInstanceID"]           = context.GetValue(WorkflowInstanceID);
                workflowfActivityInstance["WorkflowActivityID"]           = WorkflowActivityID;
                workflowfActivityInstance["WorkflowActivityInstanceName"] = DisplayName;
                if (inParams.ContainsKey("ObjType"))
                {
                    workflowfActivityInstance["ObjType"] = inParams["ObjType"].ToString();
                }
                if (inParams.ContainsKey("ObjID"))
                {
                    workflowfActivityInstance["ObjID"] = inParams["ObjID"].ToString();
                }
                workflowfActivityInstance["State"]     = "正在执行";
                workflowfActivityInstance["StartTime"] = DateTime.Now;
                designService.AddDynEntity(workflowfActivityInstance);

                //获取工作流实例
                DynEntity workflowInstance = designService.GetDynEntityByID("WorkflowInstance", context.GetValue(WorkflowInstanceID));
                int       workflowID;
                if (workflowInstance != null)
                {
                    workflowID = Convert.ToInt32(workflowInstance["WorkflowID"]);
                }
                else
                {
                    throw new ApplicationException(string.Format("{0}实例下的活动{1},根据工作流实例ID获取工作流实例不正常", context.GetValue(WorkflowInstanceID), DisplayName));
                }

                //添加待做任务清单
                DynEntity task = new DynEntity("WorkflowToDoList");
                task["WorkflowToDoListID"] = designService.GetNextID("WorkflowToDoList");
                //task["Actor"] = context.GetValue(Actor);



                task["WorkflowToDoListName"]       = DisplayName;
                task["WorkflowID"]                 = workflowID;
                task["WorkflowInstanceID"]         = context.GetValue(WorkflowInstanceID);
                task["WorkflowActivityInstanceID"] = workflowfActivityInstance["WorkflowActivityInstanceID"];
                task["BookmarkName"]               = workflowfActivityInstance["WorkflowActivityInstanceID"].ToString();
                task["State"] = "待处理";

                if (inParams.ContainsKey("ObjType"))
                {
                    task["ObjType"] = inParams["ObjType"].ToString();
                }
                if (inParams.ContainsKey("ObjID"))
                {
                    task["ObjID"] = inParams["ObjID"].ToString();
                }
                designService.AddDynEntity(task);
                context.CreateBookmark(workflowfActivityInstance["WorkflowActivityInstanceID"].ToString(), new BookmarkCallback(BookmarkCallbackMethod));

                trans.Complete();
            }
        }
Esempio n. 19
0
        protected override void Execute(NativeActivityContext context)
        {
            string bookMarkName = context.GetValue(BookMarkName);

            context.CreateBookmark(bookMarkName, continueExecute);
        }
Esempio n. 20
0
        protected override void StartLoop(NativeActivityContext context)
        {
            var selector = Selector.Get(context);

            selector = OpenRPA.Interfaces.Selector.Selector.ReplaceVariables(selector, context.DataContext);
            var sel        = new NMSelector(selector);
            var timeout    = Timeout.Get(context);
            var from       = From.Get(context);
            var maxresults = MaxResults.Get(context);
            var minresults = MinResults.Get(context);

            if (maxresults < 1)
            {
                maxresults = 1;
            }
            if (timeout.Minutes > 5 || timeout.Hours > 1)
            {
                Activity _Activity = null;
                try
                {
                    var strProperty = context.GetType().GetProperty("Activity", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
                    var strGetter   = strProperty.GetGetMethod(nonPublic: true);
                    _Activity = (Activity)strGetter.Invoke(context, null);
                }
                catch (Exception)
                {
                }
                if (_Activity != null)
                {
                    Log.Warning("Timeout for Activity " + _Activity.Id + " is above 5 minutes, was this the intention ? calculated value " + timeout.ToString());
                }
                else
                {
                    Log.Warning("Timeout for on of your NM.GetElements is above 5 minutes, was this the intention ? calculated value " + timeout.ToString());
                }
            }
            NMElement[] elements = { };
            var         sw       = new Stopwatch();

            sw.Start();
            string browser = sel.browser;

            if (WaitForReady.Get(context))
            {
                if (from != null)
                {
                    browser = from.browser;
                }
                DoWaitForReady(browser);
            }
            var allelements = context.GetValue(_allelements);

            if (allelements == null)
            {
                allelements = new NMElement[] { }
            }
            ;

            var s = new NMSelectorItem(sel[0]);

            if (!string.IsNullOrEmpty(s.url))
            {
                var tab = NMHook.FindTabByURL(browser, s.url);
                if (tab != null)
                {
                    if (!tab.highlighted || !tab.selected)
                    {
                        var _tab = NMHook.selecttab(browser, tab.id);
                    }
                }
            }

            do
            {
                elements = NMSelector.GetElementsWithuiSelector(sel, from, maxresults);
                Log.Selector("BEGIN:: I have " + elements.Count() + " elements, and " + allelements.Count() + " in all elements");

                // allelements = allelements.Concat(elements).ToArray();
                if (allelements.Length > 0)
                {
                    var newelements = new List <NMElement>();
                    for (var i = elements.Length - 1; i >= 0; i--)
                    {
                        var element = elements[i];
                        if (!allelements.Contains(element))
                        {
                            newelements.Insert(0, element);
                        }
                    }
                    elements = newelements.ToArray();
                    //if(elements.Count() > 20)
                    //{
                    //    for(var i=0; i < allelements.Length && i < elements.Length; i++)
                    //    {
                    //        if (!eq.Equals(allelements[i], elements[i]) || allelements[i].GetHashCode() != elements[i].GetHashCode())
                    //        {
                    //            Log.Output(allelements[i].GetHashCode() + " / " + elements[i].GetHashCode());
                    //        }

                    //    }

                    //}
                }
            } while (elements.Count() == 0 && sw.Elapsed < timeout);
            if (elements.Count() > maxresults)
            {
                elements = elements.Take(maxresults).ToArray();
            }

            if ((elements.Length + allelements.Length) < minresults)
            {
                Log.Selector(string.Format("Windows.GetElement::Failed locating " + minresults + " item(s) {0:mm\\:ss\\.fff}", sw.Elapsed));
                throw new ElementNotFoundException("Failed locating " + minresults + " item(s)");
            }



            IEnumerator <NMElement> _enum = elements.ToList().GetEnumerator();
            bool more = _enum.MoveNext();

            //if (lastelements.Length == elements.Length && lastelements.Length > 0)
            //{
            //    var eq = new Activities.NMEqualityComparer();
            //    more = !System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals(lastelements, elements);
            //}
            if (more)
            {
                allelements = allelements.Concat(elements).ToArray();
                var eq = new Activities.NMEqualityComparer();
                allelements = allelements.Distinct(eq).ToArray();

                //var allelementslength = allelements.Length;
                //Array.Resize(ref allelements, allelements.Length + elements.Length);
                //Array.Copy(elements, 0, allelements, allelementslength, elements.Length);
            }

            context.SetValue(_allelements, allelements);
            context.SetValue(Elements, allelements);
            Log.Selector("END:: I have " + elements.Count() + " elements, and " + allelements.Count() + " in all elements");

            if (more)
            {
                context.SetValue(_elements, _enum);
                IncIndex(context);
                SetTotal(context, allelements.Length);
                context.ScheduleAction(Body, _enum.Current, OnBodyComplete);
            }
        }
Esempio n. 21
0
        protected override void Execute(NativeActivityContext context)
        {
            var selector = Selector.Get(context);

            selector = OpenRPA.Interfaces.Selector.Selector.ReplaceVariables(selector, context.DataContext);
            var sel        = new NMSelector(selector);
            var timeout    = Timeout.Get(context);
            var from       = From.Get(context);
            var maxresults = MaxResults.Get(context);
            var minresults = MinResults.Get(context);

            if (maxresults < 1)
            {
                maxresults = 1;
            }
            NMElement[] elements = { };
            var         sw       = new Stopwatch();

            sw.Start();
            if (WaitForReady.Get(context))
            {
                string browser = sel.browser;
                if (from != null)
                {
                    browser = from.browser;
                }
                if (!string.IsNullOrEmpty(browser))
                {
                    NMHook.enumtabs();
                    if (browser == "chrome" && NMHook.CurrentChromeTab != null)
                    {
                        NMHook.WaitForTab(NMHook.CurrentChromeTab.id, browser, TimeSpan.FromSeconds(10));
                    }
                    if (browser == "ff" && NMHook.CurrentFFTab != null)
                    {
                        NMHook.WaitForTab(NMHook.CurrentFFTab.id, browser, TimeSpan.FromSeconds(10));
                    }
                }
            }
            do
            {
                elements = NMSelector.GetElementsWithuiSelector(sel, from, maxresults);
            } while (elements.Count() == 0 && sw.Elapsed < timeout);
            if (elements.Count() > maxresults)
            {
                elements = elements.Take(maxresults).ToArray();
            }
            context.SetValue(Elements, elements);

            var lastelements = context.GetValue(_lastelements);

            if (lastelements == null)
            {
                lastelements = new NMElement[] { }
            }
            ;
            context.SetValue(_lastelements, elements);
            if ((elements.Length + lastelements.Length) < minresults)
            {
                Log.Selector(string.Format("Windows.GetElement::Failed locating " + minresults + " item(s) {0:mm\\:ss\\.fff}", sw.Elapsed));
                throw new ElementNotFoundException("Failed locating " + minresults + " item(s)");
            }

            IEnumerator <NMElement> _enum = elements.ToList().GetEnumerator();
            bool more = _enum.MoveNext();

            if (lastelements.Length == elements.Length && lastelements.Length > 0)
            {
                var eq = new Activities.NMEqualityComparer();

                more = !System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals(lastelements, elements);
            }
            if (more)
            {
                context.SetValue(_elements, _enum);
                context.ScheduleAction(Body, _enum.Current, OnBodyComplete);
            }
        }
Esempio n. 22
0
        protected override void Execute(NativeActivityContext context)
        {
            FileInfo source = new FileInfo(context.GetValue<string>(this.Source));
            FileInfo target = new FileInfo(context.GetValue<string>(this.Target));

            if (target.Attributes.HasFlag(FileAttributes.Directory))
                target = new FileInfo(Path.Combine(target.FullName, source.Name));

            this.noPersistHandle.Get(context).Enter(context);

            // Set a bookmark for progress callback resuming
            string bookmarkName = String.Format("FileCopy_{0:X}", source.FullName.GetHashCode());
            var bookmark = context.CreateBookmark(bookmarkName, this.bookmarkProgressCallback, BookmarkOptions.MultipleResume);
            bookmarkProgress.Set(context, bookmark);

            var extension = context.GetExtension<Hosting.FileCopyExtension>();
            extension.Resume(bookmark, source, target, this.Option, this.StepIncrement);
        }
        /// <summary>
        /// Respond to the completion callback of the status polling activity.
        /// </summary>
        /// <param name="context">The activity context.</param>
        /// <param name="instance">The current instance of the activity.</param>
        /// <param name="result">The result of the status inquiry.</param>
        private void OnGetStatusCompleted(NativeActivityContext context, ActivityInstance instance, string result)
        {
            // Check to see if the operation faulted
            if (this.AzureActivityExceptionCaught.Get(context))
            {
                context.ScheduleActivity(this.Failure);
                return;
            }

            // Determine what to do based on the status of the Azure operation.
            switch (result)
            {
                case OperationState.Succeeded:
                    context.ScheduleActivity(this.Success);
                    break;

                case OperationState.Failed:
                    context.ScheduleActivity(this.Failure);
                    break;

                case OperationState.InProgress:
                    // Test to see if we are within the timeout
                    if (context.GetValue(this.PollingEndTime).CompareTo(DateTime.UtcNow) <= 0)
                    {
                        context.ScheduleActivity(this.Failure);
                    }

                    // Otherwise delay for the requested interval
                    context.ScheduleAction(
                        this.DelayBody, 
                        this.PollingInterval,
                        this.OnDelayCompleted);
                    break;
            }            
        }
Esempio n. 24
0
        protected override void OnExecute(NativeActivityContext context)
        {
            // ???? Why is this here....
            context.Properties.ToObservableCollection();

            IEsbChannel    esbChannel = DataObject.EsbChannel;
            IDSFDataObject dataObject = context.GetExtension <IDSFDataObject>();

            dataObject.EnvironmentID = context.GetValue(EnvironmentID);
            Guid datalistId = DataListExecutionID.Get(context);

            ParentWorkflowInstanceId     = context.WorkflowInstanceId.ToString();
            dataObject.RemoteServiceType = context.GetValue(Type);
            var           resourceId = context.GetValue(ResourceID);
            ErrorResultTO allErrors  = new ErrorResultTO();


            ParentServiceName = dataObject.ServiceName;


            string parentServiceName = string.Empty;
            string serviceName       = string.Empty;

            // BUG 9634 - 2013.07.17 - TWR - changed isRemoteExecution to check EnvironmentID instead
            // This is now the wrong behavior - We need to keep the original EnvironmentID when not a remote workflow
            // This is because we put and empty GUID in when designing against a remote server that uses it's resources
            // The first time through this value is set correctly when executing those designed resource from our localhost
            // If we change it as per what was here, we always get a localhost tag instead of the remote host we are design against
            var isRemote = dataObject.IsRemoteWorkflow();

            if ((isRemote || dataObject.IsRemoteInvokeOverridden) && dataObject.EnvironmentID == Guid.Empty)
            {
                dataObject.IsRemoteInvokeOverridden = true;
            }

            var oldResourceId = dataObject.ResourceID;

            InitializeDebug(dataObject);

            try
            {
                //compiler.ClearErrors(dataObject.DataListID);

                if (ServiceServer != Guid.Empty)
                {
                    // we need to adjust the originating server id so debug reflect remote server instead of localhost ;)
                    dataObject.RemoteInvokerID = ServiceServer.ToString();
                }


                dataObject.RunWorkflowAsync = RunWorkflowAsync;
                if (dataObject.IsDebugMode() || (dataObject.RunWorkflowAsync && !dataObject.IsFromWebServer))
                {
                    DispatchDebugState(dataObject, StateType.Before);
                }


                if (resourceId != Guid.Empty)
                {
                    dataObject.ResourceID = resourceId;
                }

                // scrub it clean ;)

                // set the parent service
                parentServiceName            = dataObject.ParentServiceName;
                serviceName                  = dataObject.ServiceName;
                dataObject.ParentServiceName = serviceName;

                _previousInstanceId = dataObject.ParentInstanceID;
                dataObject.ParentID = oldResourceId;

                dataObject.ParentInstanceID         = UniqueID;
                dataObject.ParentWorkflowInstanceId = ParentWorkflowInstanceId;

                if (!DeferExecution)
                {
                    // In all cases the ShapeOutput will have merged the execution data up into the current
                    ErrorResultTO tmpErrors = new ErrorResultTO();

                    if (esbChannel == null)
                    {
                        throw new Exception("FATAL ERROR : Null ESB channel!!");
                    }
                    else
                    {
                        // NEW EXECUTION MODEL ;)
                        // PBI 7913
                        if (datalistId != GlobalConstants.NullDataListID)
                        {
                            BeforeExecutionStart(dataObject, allErrors);
                            allErrors.MergeErrors(tmpErrors);

                            dataObject.ServiceName = ServiceName; // set up for sub-exection ;)
                            dataObject.ResourceID  = ResourceID.Expression == null ? Guid.Empty : Guid.Parse(ResourceID.Expression.ToString());

                            // Execute Request
                            ExecutionImpl(esbChannel, dataObject, InputMapping, OutputMapping, out tmpErrors);

                            allErrors.MergeErrors(tmpErrors);

                            AfterExecutionCompleted(tmpErrors);
                            allErrors.MergeErrors(tmpErrors);
                            dataObject.DataListID  = datalistId; // re-set DL ID
                            dataObject.ServiceName = ServiceName;
                        }
                    }

                    bool whereErrors = dataObject.Environment.HasErrors();

                    SetValues(context, whereErrors);
                }
            }
            finally
            {
                // Handle Errors
                if (allErrors.HasErrors())
                {
                    DisplayAndWriteError("DsfActivity", allErrors);
                    dataObject.Environment.AddError(allErrors.MakeDataListReady());
                    // add to datalist in variable specified
                    if (!String.IsNullOrEmpty(OnErrorVariable))
                    {
                        var upsertVariable = DataListUtil.AddBracketsToValueIfNotExist(OnErrorVariable);
                        dataObject.Environment.Assign(upsertVariable, allErrors.MakeDataListReady());
                    }
                }

                if (dataObject.IsDebugMode() || (dataObject.RunWorkflowAsync && !dataObject.IsFromWebServer))
                {
                    DispatchDebugState(dataObject, StateType.After);
                }

                dataObject.ParentInstanceID        = _previousInstanceId;
                dataObject.ParentServiceName       = parentServiceName;
                dataObject.ServiceName             = serviceName;
                dataObject.RemoteInvokeResultShape = new StringBuilder(); // reset targnet shape ;)
                dataObject.RunWorkflowAsync        = false;
                dataObject.RemoteInvokerID         = Guid.Empty.ToString();
                dataObject.EnvironmentID           = Guid.Empty;
                dataObject.ResourceID = oldResourceId;
            }
        }
Esempio n. 25
0
        protected override async Task <object> ExecuteAsync(NativeActivityContext context)
        {
            IsCancel = false;
            var selector = Selector.Get(context);

            selector = OpenRPA.Interfaces.Selector.Selector.ReplaceVariables(selector, context.DataContext);
            var sel        = new NMSelector(selector);
            var timeout    = Timeout.Get(context);
            var from       = From?.Get(context);
            var maxresults = MaxResults.Get(context);
            var minresults = MinResults.Get(context);

            if (maxresults < 1)
            {
                maxresults = 1;
            }
            NMElement[] elements = { };
            string      browser  = sel.browser;

            if (WaitForReady != null && WaitForReady.Get(context))
            {
                if (from != null)
                {
                    browser = from.browser;
                }
                DoWaitForReady(browser);
            }
            var allelements = context.GetValue(_allelements);

            if (allelements == null)
            {
                allelements = new NMElement[] { }
            }
            ;

            var s = new NMSelectorItem(sel[0]);

            if (!string.IsNullOrEmpty(s.url))
            {
                var tab = NMHook.FindTabByURL(browser, s.url);
                if (tab != null)
                {
                    if (!tab.highlighted || !tab.selected)
                    {
                        var _tab = NMHook.selecttab(browser, tab.id);
                    }
                }
            }
            await Task.Run(() =>
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                do
                {
                    elements = NMSelector.GetElementsWithuiSelector(sel, from, maxresults);
                    Log.Selector("BEGIN:: I have " + elements.Count() + " elements, and " + allelements.Count() + " in all elements");
                    if (allelements.Length > 0)
                    {
                        var newelements = new List <NMElement>();
                        for (var i = elements.Length - 1; i >= 0; i--)
                        {
                            var element = elements[i];
                            if (!allelements.Contains(element))
                            {
                                newelements.Insert(0, element);
                            }
                        }
                        elements = newelements.ToArray();
                    }
                } while (elements.Count() == 0 && sw.Elapsed < timeout && !IsCancel);
                if (IsCancel)
                {
                    Console.WriteLine("was Canceled: true! DisplayName" + DisplayName);
                }
                //if (sw.Elapsed >= timeout)
                //{
                //    Console.WriteLine("Timeout !");
                //}
            });

            return(elements);
        }
Esempio n. 26
0
 protected override void Execute(NativeActivityContext context)
 {
     string bookmark = context.GetValue(bookmarkName);
     context.CreateBookmark(bookmark, new BookmarkCallback(bookmarkCallback));
     System.Console.WriteLine("创建bookmark:{0}", bookmark);
 }
Esempio n. 27
0
        protected override void Execute(NativeActivityContext context)
        {
            string bookmark = context.GetValue(bookmarkName);

            context.CreateBookmark(bookmark, new BookmarkCallback(bookmarkCallback));
        }
        protected override void Execute(NativeActivityContext context)
        {
            string notification = context.GetValue(this.Notification);

            ServiceLocator.Instance.RepresentationLayerMain.ShowNotificationWindow(notification);
        }
Esempio n. 29
0
        /// <summary>
        /// Execute the activity returning the service query and entity properties
        /// </summary>
        /// <param name="context"></param>
        protected override void Execute(NativeActivityContext context)
        {
            List<List<EntityProperty>> properties = null;
            XNamespace mxmlns = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
            XNamespace xmlns = "http://www.w3.org/2005/Atom";

            string serviceQuery = this.QualifiedFilterQueryString
                (this.Uri.RemoveQuotes(), this.Resource.RemoveQuotes(), context.GetValue<int>(this.Top), context.GetValue<int>(this.Skip), 
                this.SelectProperties, this.OrderBy);

            try
            {
                IEnumerable<XElement> entries = from element in XElement.Load(serviceQuery).Descendants(xmlns.GetName("entry")) select element;

                properties =
                    (from property in entries.Descendants(mxmlns.GetName("properties"))
                     select (from e in property.Descendants()
                             select new EntityProperty
                             {
                                 Name = e.Name.LocalName,
                                 Value = e.Value,
                                 Type = e.HasAttributes ? (e.Attribute(mxmlns.GetName("type")) != null ? e.Attribute(mxmlns.GetName("type")).Value.ToString() : string.Empty) : "Edm.String"
                             }).ToList()).ToList();

                //NEXT: Join properties and links using a single LINQ statement
                IEnumerable<IEnumerable<EntityProperty>> namedResources = from entry in entries
                    select from l in entry.Descendants(xmlns.GetName("link"))
                            where l.Attribute("type") != null
                            select new EntityProperty
                            {
                                Name = l.Attribute("title").Value.ToString(),
                                Value = l.Attribute("href").Value.ToString(),
                                Type = "Edm.Stream"
                            };

                var entityIds = from e in entries.Descendants(xmlns.GetName("id"))
                            select
                                new EntityProperty
                                {
                                    Name = "id",
                                    Value = e.Value,
                                    Type = "Edm.String"
                                };

                //Add namedResources to properties
                IEnumerable<EntityProperty> entityPropertyEnum;
                int i = -1;
                foreach (List<EntityProperty> p in properties)
                {
                    i++;
                    //Get the link properties
                    entityPropertyEnum = namedResources.ElementAt(i);
                    foreach (var item in entityPropertyEnum)
                    {
                        p.Add(item);
                    }
                    //Add in entity id
                    p.Add(entityIds.ElementAt(i));
                }
            }
            catch 
            { 
                // Catch exception in a production application
            }

            ServiceQueryString.Set(context, serviceQuery);
            EntityProperties.Set(context, properties);
        }
Esempio n. 30
0
        protected override void Execute(NativeActivityContext context)
        {
            DesignService designService = new DesignService();

            //启动事务
            using (TransactionScope trans = new TransactionScope())
            {
                //添加工作流活动实例
                DynEntity workflowfActivityInstance = new DynEntity("WorkflowActivityInstance");
                workflowfActivityInstance["WorkflowActivityInstanceID"]   = designService.GetNextID("WorkflowActivityInstance");
                workflowfActivityInstance["WorkflowInstanceID"]           = context.GetValue(WorkflowInstanceID);
                workflowfActivityInstance["WorkflowActivityID"]           = WorkflowActivityID;
                workflowfActivityInstance["WorkflowActivityInstanceName"] = DisplayName;
                workflowfActivityInstance["State"]     = "已退回";
                workflowfActivityInstance["StartTime"] = DateTime.Now;
                designService.AddDynEntity(workflowfActivityInstance);

                //获取工作流实例
                DynEntity workflowInstance = designService.GetDynEntityByID("WorkflowInstance", context.GetValue(WorkflowInstanceID));
                int       workflowID;
                if (workflowInstance != null)
                {
                    workflowID = Convert.ToInt32(workflowInstance["WorkflowID"]);
                }
                else
                {
                    throw new ApplicationException(string.Format("{0}实例下的活动{1},根据工作流实例ID获取工作流实例不正常", context.GetValue(WorkflowInstanceID), DisplayName));
                }

                //添加待做任务清单
                DynEntity task = new DynEntity("WorkflowToDoList");

                task["WorkflowToDoListID"] = designService.GetNextID("WorkflowToDoList");
                task["Type"]       = context.GetValue(Type).ToString();
                task["Item"]       = context.GetValue(Item).ToString();
                task["Position"]   = context.GetValue(Position).ToString();
                task["FirstActor"] = context.GetValue(FirstActor);
                task["LastActor"]  = context.GetValue(LastActor);

                string command = context.GetValue(Command);
                Dictionary <string, object> inParams = this.ExchangeParams.Get(context) as Dictionary <string, object>;
                foreach (string key in inParams.Keys)
                {
                    if (inParams[key] != null)
                    {
                        command = command.Replace("@" + key + "@", inParams[key].ToString());
                    }
                }

                task["WorkflowToDoListName"]       = DisplayName;
                task["WorkflowID"]                 = workflowID;
                task["WorkflowInstanceID"]         = context.GetValue(WorkflowInstanceID);
                task["WorkflowActivityInstanceID"] = workflowfActivityInstance["WorkflowActivityInstanceID"];
                task["Expression"]                 = context.GetValue(Expression);
                task["BookmarkName"]               = workflowfActivityInstance["WorkflowActivityInstanceID"].ToString();
                task["Command"] = command;
                task["Comment"] = context.GetValue(Description);
                task["State"]   = "已退回";

                if (inParams.ContainsKey("TableName"))
                {
                    task["TableName"] = inParams["TableName"].ToString();
                }
                if (inParams.ContainsKey("TableKey"))
                {
                    task["TableKey"] = inParams["TableKey"].ToString();
                }

                designService.AddDynEntity(task);

                if (inParams.ContainsKey("TableName") && inParams.ContainsKey("TableKey"))
                {
                    designService.TerminateWorkflow(inParams["TableName"].ToString(), inParams["TableKey"].ToString());
                }

                workflowInstance["EndTime"] = DateTime.Now;
                workflowInstance["State"]   = "已结束";

                designService.ModifyDynEntity(workflowInstance);

                trans.Complete();
            }
        }
Esempio n. 31
0
        protected System.Management.Automation.PowerShell GetWmiCommandCore(NativeActivityContext context, string name)
        {
            PowerShell powerShell = PowerShell.Create().AddCommand(name);

            object[] activityInstanceId = new object[2];
            activityInstanceId[0] = context.ActivityInstanceId;
            activityInstanceId[1] = name;
            base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: WMI Command '{1}'.", activityInstanceId));
            if (this.Impersonation != ImpersonationLevel.Default)
            {
                powerShell.AddParameter("Impersonation", this.Impersonation);
                object[] impersonation = new object[3];
                impersonation[0] = context.ActivityInstanceId;
                impersonation[1] = "Impersonation";
                impersonation[2] = this.Impersonation;
                base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2}.", impersonation));
            }
            Dictionary <string, object> value = context.GetValue <Dictionary <string, object> >(base.ParameterDefaults);

            if (this.PSAuthenticationLevel == AuthenticationLevel.Default)
            {
                if (this.GetUbiquitousParameter <AuthenticationLevel>("PSAuthenticationLevel", value) != AuthenticationLevel.Default)
                {
                    AuthenticationLevel ubiquitousParameter = this.GetUbiquitousParameter <AuthenticationLevel>("PSAuthenticationLevel", value);
                    powerShell.AddParameter("Authentication", ubiquitousParameter);
                    object[] objArray = new object[3];
                    objArray[0] = context.ActivityInstanceId;
                    objArray[1] = "AuthenticationLevel";
                    objArray[2] = ubiquitousParameter;
                    base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2} from ubiquitious parameters.", objArray));
                }
            }
            else
            {
                powerShell.AddParameter("Authentication", this.PSAuthenticationLevel);
                object[] pSAuthenticationLevel = new object[3];
                pSAuthenticationLevel[0] = context.ActivityInstanceId;
                pSAuthenticationLevel[1] = "Authentication";
                pSAuthenticationLevel[2] = this.PSAuthenticationLevel;
                base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2}.", pSAuthenticationLevel));
            }
            if (this.Locale != null)
            {
                powerShell.AddParameter("Locale", this.Locale);
                object[] locale = new object[3];
                locale[0] = context.ActivityInstanceId;
                locale[1] = "Locale";
                locale[2] = this.Locale;
                base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2}.", locale));
            }
            if (this.EnableAllPrivileges)
            {
                powerShell.AddParameter("EnableAllPrivileges", this.EnableAllPrivileges);
                object[] enableAllPrivileges = new object[3];
                enableAllPrivileges[0] = context.ActivityInstanceId;
                enableAllPrivileges[1] = "EnableAllPrivileges";
                enableAllPrivileges[2] = this.EnableAllPrivileges;
                base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2}.", enableAllPrivileges));
            }
            if (this.Authority != null)
            {
                powerShell.AddParameter("Authority", this.Authority);
                object[] authority = new object[3];
                authority[0] = context.ActivityInstanceId;
                authority[1] = "Authority";
                authority[2] = this.Authority;
                base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2}.", authority));
            }
            if (this.Namespace.Get(context) != null)
            {
                powerShell.AddParameter("Namespace", this.Namespace.Get(context));
                object[] activityInstanceId1 = new object[3];
                activityInstanceId1[0] = context.ActivityInstanceId;
                activityInstanceId1[1] = "Namespace";
                activityInstanceId1[2] = this.Namespace.Get(context);
                base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2}.", activityInstanceId1));
            }
            if (this.PSCredential.Get(context) != null)
            {
                powerShell.AddParameter("Credential", this.PSCredential.Get(context));
                object[] objArray1 = new object[3];
                objArray1[0] = context.ActivityInstanceId;
                objArray1[1] = "Credential";
                objArray1[2] = this.PSCredential.Get(context);
                base.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "PowerShell activity ID={0}: Setting parameter {1} to {2}.", objArray1));
            }
            return(powerShell);
        }
Esempio n. 32
0
        private void SaveIwbposCpv(NativeActivityContext context, ICollection <IwbPosWithCpvGrd> items)
        {
            if (items.Count == 0)
            {
                return;
            }

            var iwb          = context.GetValue(this.Source);
            var mgr          = IoC.Instance.Resolve <IBaseManager <IWBPos> >();
            var mgrCpvIwbPos = IoC.Instance.Resolve <IBaseManager <IWBPosCpv> >();
            var iwbPosList   = mgr.GetFiltered(
                string.Format(" IWBID_R = {0} and nvl(IWBPOSPRODUCTCOUNT,-999) <> nvl(IWBPOSCOUNT,-999) ",
                              iwb.GetKey())).ToList();

            foreach (var iwbPoseItem in iwbPosList)
            {
                var processedIwbPos = items.FirstOrDefault(i => i.IwbPosId == iwbPoseItem.IWBPosID);
                var needRegEvent    = false;

                if (processedIwbPos == null)
                {
                    continue;
                }

                if (iwbPoseItem.CustomParamVal == null)
                {
                    iwbPoseItem.CustomParamVal = new WMSBusinessCollection <IWBPosCpv>();
                }

                //get cpv
                var existReasonCpv         = iwbPoseItem.CustomParamVal.FirstOrDefault(c => c.CustomParamCode == ReasonCpvCode);
                var existReasonDescCpv     = iwbPoseItem.CustomParamVal.FirstOrDefault(c => c.CustomParamCode == ReasonDescCpvCode);
                var corrReasonCpvValue     = SerializationHelper.GetCorrectStringValue(processedIwbPos.IWBPosAdjustmentReason);
                var corrReasonDescCpvValue = SerializationHelper.GetCorrectStringValue(processedIwbPos.IWBPosAdjustmentReasonDesc);

                //update
                if (existReasonCpv != null)
                {
                    if (corrReasonCpvValue == null)
                    {
                        //delete child
                        if (existReasonDescCpv != null)
                        {
                            mgrCpvIwbPos.Delete(existReasonDescCpv);
                        }
                        //delete parent
                        mgrCpvIwbPos.Delete(existReasonCpv);
                        RegEvent(iwbPoseItem.IWBPosID);
                        continue;
                    }

                    if (corrReasonDescCpvValue == null && existReasonDescCpv != null)
                    {
                        //delete child only
                        mgrCpvIwbPos.Delete(existReasonDescCpv);
                        needRegEvent = true;
                    }

                    if (existReasonCpv.CPVValue != corrReasonCpvValue)
                    {
                        //update parent
                        existReasonCpv.CPVValue = corrReasonCpvValue;
                        mgrCpvIwbPos.Update(existReasonCpv);
                        needRegEvent = true;
                    }

                    if (existReasonDescCpv != null && corrReasonDescCpvValue != existReasonDescCpv.CPVValue)
                    {
                        //update child
                        existReasonDescCpv.CPVValue = corrReasonDescCpvValue;
                        mgrCpvIwbPos.Update(existReasonDescCpv);
                        needRegEvent = true;
                    }

                    if (existReasonDescCpv == null && corrReasonDescCpvValue != null)
                    {
                        //insert child, if exists only parent
                        var iwbPosCpvIns = new IWBPosCpv()
                        {
                            CPVParent       = existReasonCpv.CPVID,
                            CPV2Entity      = "IWBPOS",
                            CPVKey          = processedIwbPos.IwbPosId.ToString(),
                            CustomParamCode = ReasonDescCpvCode,
                            CPVValue        = corrReasonDescCpvValue
                        };
                        mgrCpvIwbPos.Insert(ref iwbPosCpvIns);
                        needRegEvent = true;
                    }
                }

                //insert
                if (existReasonCpv == null && processedIwbPos.IWBPosAdjustmentReason != null)
                {
                    //insert parent
                    var iwbPosCpvIns = new IWBPosCpv()
                    {
                        CPVID           = -1,
                        CPV2Entity      = "IWBPOS",
                        CPVKey          = processedIwbPos.IwbPosId.ToString(),
                        CustomParamCode = ReasonCpvCode,
                        CPVValue        = corrReasonCpvValue
                    };
                    mgrCpvIwbPos.Insert(ref iwbPosCpvIns);

                    //insert child
                    var iwbPosCpvInsDesc = new IWBPosCpv()
                    {
                        CPVParent       = iwbPosCpvIns.CPVID,
                        CPV2Entity      = "IWBPOS",
                        CPVKey          = processedIwbPos.IwbPosId.ToString(),
                        CustomParamCode = ReasonDescCpvCode,
                        CPVValue        = corrReasonDescCpvValue
                    };
                    mgrCpvIwbPos.Insert(ref iwbPosCpvInsDesc);
                    needRegEvent = true;
                }

                if (needRegEvent)
                {
                    RegEvent(iwbPoseItem.IWBPosID);
                }
            }
        }
Esempio n. 33
0
        protected override void StartLoop(NativeActivityContext context)
        {
            WindowsCacheExtension ext = context.GetExtension <WindowsCacheExtension>();
            var sw = new Stopwatch();

            sw.Start();
            Log.Selector(string.Format("Windows.GetElement::begin {0:mm\\:ss\\.fff}", sw.Elapsed));

            UIElement[] elements = null;
            var         selector = Selector.Get(context);

            selector = OpenRPA.Interfaces.Selector.Selector.ReplaceVariables(selector, context.DataContext);
            var sel        = new WindowsSelector(selector);
            var timeout    = Timeout.Get(context);
            var maxresults = MaxResults.Get(context);
            var minresults = MinResults.Get(context);

            if (maxresults < 1)
            {
                maxresults = 1;
            }
            var interactive = Interactive.Get(context);
            var from        = From.Get(context);
            int failcounter = 0;

            do
            {
                if (ClearCache != null && ClearCache.Get(context))
                {
                    Log.Selector(string.Format("Windows.GetElement::Clearing windows element cache {0:mm\\:ss\\.fff}", sw.Elapsed));
                    WindowsSelectorItem.ClearCache();
                }
                if (PluginConfig.get_elements_in_different_thread)
                {
                    elements = OpenRPA.AutomationHelper.RunSTAThread <UIElement[]>(() =>
                    {
                        try
                        {
                            Log.Selector(string.Format("Windows.GetElement::GetElementsWithuiSelector in non UI thread {0:mm\\:ss\\.fff}", sw.Elapsed));
                            return(WindowsSelector.GetElementsWithuiSelector(sel, from, maxresults, ext));
                        }
                        catch (System.Threading.ThreadAbortException)
                        {
                        }
                        catch (Exception ex)
                        {
                            Log.Error(ex.ToString());
                        }
                        return(new UIElement[] { });
                    }, PluginConfig.search_timeout).Result;
                }
                else
                {
                    Log.Selector(string.Format("Windows.GetElement::GetElementsWithuiSelector using UI thread {0:mm\\:ss\\.fff}", sw.Elapsed));
                    elements = WindowsSelector.GetElementsWithuiSelector(sel, from, maxresults, ext);
                    if (elements == null || elements.Length == 0)
                    {
                        elements = WindowsSelector.GetElementsWithuiSelector(sel, from, maxresults, ext);
                    }
                }
                //elements = WindowsSelector.GetElementsWithuiSelector(sel, from, maxresults);
                if (elements == null)
                {
                    elements = new UIElement[] { };
                }
                if (elements.Length == 0)
                {
                    Log.Selector(string.Format("Windows.GetElement::Found no elements {0:mm\\:ss\\.fff}", sw.Elapsed));
                    failcounter++;
                }
                if (failcounter > 2)
                {
                    WindowsSelectorItem.ClearCache();
                }
            } while (elements != null && elements.Length == 0 && sw.Elapsed < timeout);
            if (PluginConfig.get_elements_in_different_thread && elements.Length > 0)
            {
                // Get them again, we need the COM objects to be loaded in the UI thread
                elements = WindowsSelector.GetElementsWithuiSelector(sel, from, maxresults, ext);
            }
            context.SetValue(Elements, elements);

            var lastelements = context.GetValue(_lastelements);

            if (lastelements == null)
            {
                lastelements = new UIElement[] { }
            }
            ;
            context.SetValue(_lastelements, elements);
            if ((elements.Length + lastelements.Length) < minresults)
            {
                Log.Selector(string.Format("Windows.GetElement::Failed locating " + minresults + " item(s) {0:mm\\:ss\\.fff}", sw.Elapsed));
                throw new ElementNotFoundException("Failed locating " + minresults + " item(s)");
            }
            IEnumerator <UIElement> _enum = elements.ToList().GetEnumerator();
            bool more = _enum.MoveNext();

            if (lastelements.Length == elements.Length && lastelements.Length > 0)
            {
                more = !System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals(lastelements, elements);
            }
            if (more)
            {
                if (interactive)
                {
                    var testelement = _enum.Current;
                    Wait.UntilResponsive(testelement.RawElement, PluginConfig.search_timeout);
                }
                context.SetValue(_elements, _enum);
                context.SetValue(_sw, sw);
                Log.Selector(string.Format("Windows.GetElement::end:: call ScheduleAction: {0:mm\\:ss\\.fff}", sw.Elapsed));
                IncIndex(context);
                SetTotal(context, elements.Length);
                context.ScheduleAction <UIElement>(Body, _enum.Current, OnBodyComplete);
            }
            else
            {
                Log.Selector(string.Format("Windows.GetElement:end {0:mm\\:ss\\.fff}", sw.Elapsed));
            }
        }
Esempio n. 34
0
        protected override void Execute(NativeActivityContext context)
        {
            var selector = Selector.Get(context);

            selector = OpenRPA.Interfaces.Selector.Selector.ReplaceVariables(selector, context.DataContext);
            var sel        = new NMSelector(selector);
            var timeout    = Timeout.Get(context);
            var from       = From.Get(context);
            var maxresults = MaxResults.Get(context);
            var minresults = MinResults.Get(context);

            if (maxresults < 1)
            {
                maxresults = 1;
            }
            NMElement[] elements = { };
            var         sw       = new Stopwatch();

            sw.Start();
            string browser = sel.browser;

            if (WaitForReady.Get(context))
            {
                if (from != null)
                {
                    browser = from.browser;
                }
                DoWaitForReady(browser);
            }
            var allelements = context.GetValue(_allelements);

            if (allelements == null)
            {
                allelements = new NMElement[] { }
            }
            ;

            var s = new NMSelectorItem(sel[0]);

            if (!string.IsNullOrEmpty(s.url))
            {
                var tab = NMHook.FindTabByURL(browser, s.url);
                if (tab != null)
                {
                    if (!tab.highlighted || !tab.selected)
                    {
                        var _tab = NMHook.selecttab(browser, tab.id);
                    }
                }
            }

            do
            {
                elements = NMSelector.GetElementsWithuiSelector(sel, from, maxresults);
                Log.Selector("BEGIN:: I have " + elements.Count() + " elements, and " + allelements.Count() + " in all elements");

                // allelements = allelements.Concat(elements).ToArray();
                if (allelements.Length > 0)
                {
                    var newelements = new List <NMElement>();
                    for (var i = elements.Length - 1; i >= 0; i--)
                    {
                        var element = elements[i];
                        if (!allelements.Contains(element))
                        {
                            newelements.Insert(0, element);
                        }
                    }
                    elements = newelements.ToArray();
                    //if(elements.Count() > 20)
                    //{
                    //    for(var i=0; i < allelements.Length && i < elements.Length; i++)
                    //    {
                    //        if (!eq.Equals(allelements[i], elements[i]) || allelements[i].GetHashCode() != elements[i].GetHashCode())
                    //        {
                    //            Log.Output(allelements[i].GetHashCode() + " / " + elements[i].GetHashCode());
                    //        }

                    //    }

                    //}
                }
            } while (elements.Count() == 0 && sw.Elapsed < timeout);
            if (elements.Count() > maxresults)
            {
                elements = elements.Take(maxresults).ToArray();
            }

            if ((elements.Length + allelements.Length) < minresults)
            {
                Log.Selector(string.Format("Windows.GetElement::Failed locating " + minresults + " item(s) {0:mm\\:ss\\.fff}", sw.Elapsed));
                throw new ElementNotFoundException("Failed locating " + minresults + " item(s)");
            }



            IEnumerator <NMElement> _enum = elements.ToList().GetEnumerator();
            bool more = _enum.MoveNext();

            //if (lastelements.Length == elements.Length && lastelements.Length > 0)
            //{
            //    var eq = new Activities.NMEqualityComparer();
            //    more = !System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals(lastelements, elements);
            //}
            if (more)
            {
                allelements = allelements.Concat(elements).ToArray();
                var eq = new Activities.NMEqualityComparer();
                allelements = allelements.Distinct(eq).ToArray();

                //var allelementslength = allelements.Length;
                //Array.Resize(ref allelements, allelements.Length + elements.Length);
                //Array.Copy(elements, 0, allelements, allelementslength, elements.Length);
            }

            context.SetValue(_allelements, allelements);
            context.SetValue(Elements, allelements);
            Log.Selector("END:: I have " + elements.Count() + " elements, and " + allelements.Count() + " in all elements");

            if (more)
            {
                context.SetValue(_elements, _enum);
                context.ScheduleAction(Body, _enum.Current, OnBodyComplete);
            }
        }
        protected override void Execute(NativeActivityContext context)
        {
            var subscriptionHandle = this.SubscriptionHandle.Get(context);

            string folder = context.GetValue(this.WatchFolder);

            if (!System.IO.Directory.Exists(folder))
                throw new OperationCanceledException(String.Format("The path \"{0}\" is not a directory or does not exist.", folder));

            var extension = context.GetExtension<Hosting.FolderWatcherExtension>();

            var bookmark = context.CreateBookmark(String.Format("SubscribeFileChanges_{0:N}", Guid.NewGuid()));
            this.bookmark.Set(context, bookmark);

            subscriptionHandle.Initialize(extension, bookmark, folder,
                context.GetValue(this.WatchPattern), this.WatchSubfolders, base.DisplayName);
        }
Esempio n. 36
0
        protected override void StartLoop(NativeActivityContext context)
        {
            var result            = new List <UIElement>();
            var includeHidden     = false;
            var includeEmptyTitle = false;

            try
            {
                if (IncludeEmptyTitle != null)
                {
                    includeEmptyTitle = IncludeEmptyTitle.Get(context);
                }
                if (IncludeHidden != null)
                {
                    includeHidden = IncludeHidden.Get(context);
                }
            }
            catch (Exception)
            {
            }
            var windows = RuningWindows.GetOpenedWindows(includeHidden, includeEmptyTitle);

            using (var automation = AutomationUtil.getAutomation())
            {
                foreach (var window in windows)
                {
                    var _window = automation.FromHandle(window.Key);
                    result.Add(new UIElement(_window));
                }
            }
            WindowsCacheExtension ext = context.GetExtension <WindowsCacheExtension>();
            var sw = new Stopwatch();

            sw.Start();
            Log.Selector(string.Format("Windows.GetWindows::begin {0:mm\\:ss\\.fff}", sw.Elapsed));

            UIElement[] elements = result.ToArray();
            context.SetValue(Elements, elements);

            var lastelements = context.GetValue(_lastelements);

            if (lastelements == null)
            {
                lastelements = new UIElement[] { }
            }
            ;
            context.SetValue(_lastelements, elements);
            IEnumerator <UIElement> _enum = elements.ToList().GetEnumerator();
            bool more = _enum.MoveNext();

            if (lastelements.Length == elements.Length && lastelements.Length > 0)
            {
                more = !System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals(lastelements, elements);
            }
            if (more)
            {
                context.SetValue(_elements, _enum);
                context.SetValue(_sw, sw);
                Log.Selector(string.Format("Windows.GetWindows::end:: call ScheduleAction: {0:mm\\:ss\\.fff}", sw.Elapsed));
                IncIndex(context);
                SetTotal(context, elements.Length);
                context.ScheduleAction <UIElement>(Body, _enum.Current, OnBodyComplete);
            }
            else
            {
                Log.Selector(string.Format("Windows.GetWindows:end {0:mm\\:ss\\.fff}", sw.Elapsed));
            }
        }
Esempio n. 37
0
        protected override void Execute(NativeActivityContext контекст)
        {
            var событие = контекст.GetValue(Закладка);

            LogManager.GetCurrentClassLogger().Debug(событие);
        }