UiPath如何实现暂停功能?
照理说一个无人值守的机器人原本是不应该有人工操作介入的,也就不会提供暂停功能。但客户可能出于业务需要,或者风险管控的考虑,会需要机器人具备暂停功能。通常,会希望在机器人运行时,用户摁下快捷键,机器人就马上暂停,而暂停之后也能够恢复。
那么如何在机器人执行正常业务流程的同时,检测快捷键是否被摁下呢?这里可以使用Pick(System.Activities.Statements.Pick)来实现这个效果。如下图如示。左侧只是用来模拟通常的业务流程,各位可以将自己实际的workflow放进去。右侧分支在Trigger中放入一个Monitor Events(UiPath.Core.Activities.MonitorEvents)用来同时检测快捷键是否触发。实际运行的时候,Pick的逻辑是这样的,两个分支的Trigger部分会并行执行(但其实各个分支的启动还是有细微的时间差的,这个在此先不讨论),哪一个分支的Trigger先运行完毕,就会运行那一个分支的Action部分并且其它分支会停止执行。

既然我们已经能够在主流程运行的同时检测快捷键是否触发,那么我们接下来要解决的问题就是如何暂停(阻塞)主流程的运行。这里要注意的一点是,用户暂停后,应该也能够取消暂停状态继续执行,所以这里采用的方法一定要能够接收用户的输入。对此,我在Monitor Events中利用了Message Box,当然读者也可以根据实际情况选择其它具有类似作用的Activity。Monitor Events中的内容大致如下所示。我们可以看到,当用户摁下Ctrl+P时,机器人就会暂停并且弹出对话框提示机器人已暂停,一旦用户点击确定按钮,机器人就会继续运行下去。

我在主流程中做了一个无限循环打印时间的设计用来模拟实际的业务流程。机器人运行中摁下Ctrl+P在Output窗口中看起来的效果就是如下图所示这样。

要特别注意的一点是Monitor Events的属性中有一个RepeatForever一定要设为True,否则机器人只能暂停一次。。。

另外,当一个Workflow通过Invoke Workflow File去调用另一个Workflow时,调用方和被调用方(简称父子workflow)其实是运行在两个线程中的,而Message Box只能暂停自己所处线程的执行,因此要特别处理。一般来说,子Workflow未运行完毕时,父Workflow并不会继续运行下去,所以在子Workflow中实现暂停功能即可。
UiPath如何实现暂停功能?的更多相关文章
- 【Cocos游戏实战】功夫小子第七课之游戏主功能场景逻辑功能和暂停功能场景的分析和实现
CSDN的markdown编辑器是吃屎了么! !.什么玩意.!写了一半写不了东西还全没了,搞个毛线! 本节课的视频教程地址是:第七课在此 假设本教程有帮助到您,希望您能点击进去观看一下,并且如今注冊成 ...
- Javascript中暂停功能的实现
<script language="javascript"> /*Javascript中暂停功能的实现 Javascript本身没有暂停功能(sleep不能使用)同时 ...
- delphi真正实现延时暂停功能
用delphi怎么实现延时功能?在delphi中有一个sleep()函数是用来暂停线程的,使用了它好像和死掉了似得,不好用,这么简单的延时动作用Timer控件有显得复杂了.下面给大家分享一个真正好用的 ...
- selenium-java,暂停功能
暂停/开始应用程序 public class Common_method { public void kill_chromedriver(){ Runtime runtime=Runtime.getR ...
- selenium-java,解决一些加了显性等待和隐性等待都不好使的情况,以及给UI自动化加上暂停功能
最近在UI自动化时遇到了,上一步成功操作后没有响应的情况(动画加载和浏览器加载导致实际没有问题),导致下一步无法成功操作,所有想在尝试2次操作后再次进行上一步操作解决这种情况导致的错误(其实是不想每一 ...
- 让C++控制台程序停下来,实现暂停功能
一.针对Microsoft #include <stdlib.h> (1)第一种方式system( "PAUSE "); -------------------- ...
- (17)Python读取摄像头并实现视频播放、暂停、指定目录保存、回放功能
读取摄像头并播放.暂停功能 import sys #import scipy.io as sio from PyQt5 import QtGui, QtCore, QtWidgets #from wy ...
- Unity3D之游戏暂停制作方法记录
在游戏开发中我们一般都需要涉及到一个功能:游戏暂停,但是这里指的暂停仅仅是核心模块的暂停,并不是整个游戏都暂停,比如一些UI和UI上的动画与特效是不能被暂停的,整个游戏都暂停了玩家该如何继续游戏呢. ...
- 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
3.暂停游戏 暂停游戏概述: 在游戏进行时,玩家有可能会遇到多种突发事件.在跑酷游戏中突发状况的发生对游戏的影响更甚,游戏进行时玩家死亡,游戏只能从头开始,那么如果因为外界因素而影响游戏的进行,显然是 ...
随机推荐
- JavaScript的数组知识案例之随机点名器
本次分享JavaScript主要知识点涉及到for循环.if选择结构判断语句.数组的定义.定时器.清除定时器.日期对象的使用. 执行后效果图: 思路: 1.网页结构搭建: HTML 2.网页布局美化: ...
- Python学习 Part7:类
Python学习 Part7:类 1. 作用域和命名空间 命名空间(namespace)就是一个从名称到对象的映射. 命名空间的一些实例:内置名称集(函数,像abs(),和内置异常名称),一个模块中的 ...
- 【方案】mvc 保证定时器回收限制
在项目中我们或多或少的遇到一些需要定时触发或者计算的东西,这个时候我们就需要定时器来作为解决方案.非常好思路清晰,业务逻辑完好,定时器也开好了,当我们信心满满的挂到IIS服务器的时候,发现写的定时器在 ...
- nginx常用配置系列-静态资源处理
接上篇,nginx处理静态资源的能力很强,后端服务器其实也可以处理静态资源,比如tomcat,但把非业务类的单一数据交给后端处理显然效率比较低,还有一种场景是多个站点公用一套资源集时,通过nginx可 ...
- 谈论seo思维性对优化中起到决定性的作用
在<SEO的艺术>又出版之后,SEO艺术更加受到了广大SEOer的关注和热捧,在这本书里面,也有很多的不为人知的技巧分享.SEO的艺术强调的是SEO融入网络营销,融入社会化媒体大潮,然而这 ...
- Activity的状态保存
这两个图其实说的是一个意思,具体onSaveInstanceState()这个函数什么时候会调用,在网络上搜了一下 这个第一种情况,我可以解释一下,说的是这个方法只在onResume和onPause之 ...
- 跨域问题实践总结!下( [HTML5] postMessage+服务器端(反向代理服务器+CORS Cross-Origin Resource Sharing))
4. [HTML5] postMessage 问题: 对于跨域问题,研究了一下html5的postMessage,写了代码测试了一下,感觉html5新功能就是好用啊.此文仅使用html5的新特性pos ...
- 纯CSS小三角制作
无关的知识点 ① background-clip 属性规定背景的绘制区域. 1.padding-box:从padding区域(不含padding)开始向外裁剪背景. 2.border-box:从bor ...
- Android 不规则图像填充 小玩着色游戏
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45788433: 本文出自:[张鸿洋的博客] 一.概述 近期群里偶然看到一哥们在 ...
- B20J_1419_Red Is Good_期望DP
B20J_1419_red is good_期望DP 题意:有R张红牌和B张黑牌,一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. 分析:期望DP ...