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中实现暂停功能即可。

原文地址:https://www.cnblogs.com/ybyebo/p/HowToPauseUiPathRobotExecution.html

时间: 2024-10-30 07:55:00

UiPath如何实现暂停功能?的相关文章

让C++控制台程序停下来,实现暂停功能

让C++控制台程序停下来,实现暂停功能 一.针对Microsoft #include   <stdlib.h> (1)第一种方式system( "PAUSE "); -------------------- (2)第二种方式getchar();  // 这招对QT程序也有用--------------------- (3)第三种方式Sleep(); 二.针对Linux(1)第一种方式 getchar(); 参考: http://www.cppblog.com/lauer39

Javascript中暂停功能的实现

<script language="javascript"> /*Javascript中暂停功能的实现 Javascript本身没有暂停功能(sleep不能使用)同时 vbscript也不能使用doEvents,故编写此函数实现此功能. javascript作为弱对象语言,一个函数也可以作为一个对象使用. 比如: function Test(){ alert("hellow"); this.NextStep=function(){   alert(&qu

【Cocos游戏实战】功夫小子第七课之游戏主功能场景逻辑功能和暂停功能场景的分析和实现

CSDN的markdown编辑器是吃屎了么! !.什么玩意.!写了一半写不了东西还全没了,搞个毛线! 本节课的视频教程地址是:第七课在此 假设本教程有帮助到您,希望您能点击进去观看一下,并且如今注冊成为极客学院的会员,能够免费领取30天学习时间,免费拿极客学院VIP,1000+高清视频.学习Android.HTML5.iOS各种开发技术,限时领取.手快的戳:http://e.jikexueyuan.com/invite/index.html?ZnJvbV9jb2RlPVkxblJUZSZ1bmF

Python开发工具PyCharm v2016.2发布,新增线程暂停功能,可定制IDE外观|附下载

[点击下载最新版PyCharm] vmprof Profiler支持(仅专业版) 对于大家关心的性能,PyCharm提供性能分析支持 Pandas Dataframes Viewer PyCharm 2016.2带来了Pandas Dataframes支持--一个开发商和数据科学必备的功能. 线程暂停选项 新增暂停选项:ALL和Thread."ALL"让所有线程在遇到断点时停止."Thread"选项,只有相应的线程才会停止. 在调试器中的函数返回值 Debug工具窗

selenium-java,解决一些加了显性等待和隐性等待都不好使的情况,以及给UI自动化加上暂停功能

最近在UI自动化时遇到了,上一步成功操作后没有响应的情况(动画加载和浏览器加载导致实际没有问题),导致下一步无法成功操作,所有想在尝试2次操作后再次进行上一步操作解决这种情况导致的错误(其实是不想每一次有问题都要手动加线程沉睡) 1.java应用程序,暂停/开始按钮 import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionL

模拟打印小票(支持暂停功能)

public class MainFrame extends JFrame { private JButton printButton = new JButton("打印"); private JButton suspendButton = new JButton("暂停"); private JLabel printText = new JLabel("模拟小票打印"); private JTextArea printTextArea = ne

控制台程序实现暂停功能

一.针对Microsoft #include   <stdlib.h> (1)第一种方式system( "PAUSE "); -------------------- (2)第二种方式getchar();  // 这招对QT程序也有用--------------------- (3)第三种方式Sleep(); 二.针对Linux(1)第一种方式 getchar();

C# 基于 socket 的断点续传功能的实现

最近由于工作需要做了一个异地灾备传输工具,每周从广州服务器同步5g大小的数据库备份文件到北京服务器. 第一个版本的传输工具开发得很简单,两个window服务,一个负责发送,另一个负责接收,利用socket建立tcp链接,在测试服务器上传输10g大小的文件没有问题. 但部署到生产环境之后,每次传输了3g左右的数据就中断了,经分析是由于网络不稳定造成的,所以需要对传输工具添加断点续传功能,当传输意外中断时,可以自动连接,并完成上一次未完成的传输. 断点续传的原理很简单,就是分割需要传输的文件,每次传

Android 实现能够暂停的录音功能

转载请注明出处:http://blog.csdn.net/yegongheng/article/details/40624267 好久没更新博客了,着实有点惭愧,以后不管工作是忙是闲都得坚持更新博客,持之以恒地做下去! 正式进入主题,今天我分享一个在工作中过程中遇到的一个技术难点以及我解决该难点的方案,该问题困扰了我许久,通过不断地研究和翻阅资料,终于在满足工作需求的情况下将该问题解决,希望我的经验能够对读者有所帮助.我们知道Android ApI提供了MediaRecorder和AudioRe