// 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); } } }
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); }
// 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); }
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); } } }
// 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); }
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); }
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); } } }
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); } }
// 如果活动返回值,则从 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); }
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)); }
// 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()); } } } }
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; } }
/// <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; } }
// 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)); } }
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(); } }
protected override void Execute(NativeActivityContext context) { string bookMarkName = context.GetValue(BookMarkName); context.CreateBookmark(bookMarkName, continueExecute); }
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); } }
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); } }
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; } }
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; } }
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); }
protected override void Execute(NativeActivityContext context) { string bookmark = context.GetValue(bookmarkName); context.CreateBookmark(bookmark, new BookmarkCallback(bookmarkCallback)); System.Console.WriteLine("创建bookmark:{0}", bookmark); }
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); }
/// <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); }
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(); } }
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); }
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); } } }
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)); } }
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); }
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)); } }
protected override void Execute(NativeActivityContext контекст) { var событие = контекст.GetValue(Закладка); LogManager.GetCurrentClassLogger().Debug(событие); }