array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 UiPath Level 2-Part3 - 爱码网

这节课说说怎么触发(trigger)robot去执行jobs,主要学习使用Jobs和Schedules的功能。

 

1. robot的动态分配(dynamic allocation)

在创建job的时候,可以选择动态分配robot。确切地说,如果我们想要某个process执行n次,在选择动态分配robot的情况下,process所在的环境(environment)里的所有robot只要空闲就会去执行该process,那些没闲着的robot一旦闲下来了也会马上去执行process,直到达到了要求的次数。

1) 在Orchestrator的Jobs页面创建一个新job。

2) 在Execution Target标签页下面选择Allocate Dynamically。

3) 输入process要执行的次数。

UiPath Level 2-Part3

  • 如果指定的次数超过了可用的robot数量,剩下的次数会处于等待分配(Pending Allocation)的状态,等待新的可用的robot,或者刚才的robot执行完一次process。

 UiPath Level 2-Part3


 

2. 计划触发(trigger)一个job

除了手动触发job,即创建一个新job,Part 1详细讲过,我们还可以计划(schedule)一个job。

1) 下面我们计划一个job,它将触发指定环境里的所有robot,每隔1分钟就执行某个process。

  • 在Orchestrator的Schedules页面,点+号创建一个新的Job Schedule。
  • 给Schedule起个名字,选择要安排执行的process,Timezone是选择时区的。
  • 在Trigger标签页下面设定计划的时间。

UiPath Level 2-Part3

  • 切换到Execution Target标签页,可以设置安排哪些robot,按照要求我们选择All Robots。

UiPath Level 2-Part3

  • Actions标签页下面也有一些功能。
    • Stop Job after可以设置在一段时间后停止计划。
    • Disable Schedule at可以设置在某个日期停止计划。

UiPath Level 2-Part3

  • 设置好了点Create,安排上了!

UiPath Level 2-Part3

2) 查看触发的jobs。

现在我们回到Jobs页面,可以看到环境里的3个robots已经分别执行process了。一分钟后,三个robots会再次被触发,去执行process。

  • 通过Source列可以看出某个job是通过什么方式触发的。

UiPath Level 2-Part3

  • 也可以使用筛选功能专门查看某种方式触发的jobs。
    • Manual:只显示手动触发的job,即在Jobs页面创建的jobs。
    • Schedule:只显示在Schedule页面安排的jobs。
    • Agent:只显示通过UiPath Robot直接触发的jobs。

UiPath Level 2-Part3

3) 停止计划或删除计划。

鼠标移动到创建的那条计划上,点右侧的三个点,会弹出操作选项。

UiPath Level 2-Part3

  • Disable可以停止计划。如果要重新启动计划,可以选择Enable。
  • Remove会直接删除计划,计划将从Schedule页面移除。
  • View Jobs可以查看与这个计划相关jobs。

UiPath Level 2-Part3

 4) 设置仅在工作日执行计划。

  •  右上角点头像,选择Settings。

UiPath Level 2-Part3

  • 选择Non-Working Days标签页,在出现的日历里就可以点选非工作日。

UiPath Level 2-Part3

  • 在创建新计划的时候,在trigger下面选上Apply non-working days restrictions。

UiPath Level 2-Part3

 5) 如果我们计划一个job,在计划触发job时,指定的robot正在执行其他process,那么计划的job会处于等待(pending)状态,排队等着robot空闲了再执行。

UiPath Level 2-Part3

  • 如果有很多个pending的job,它们会按照创建的时间顺序依次执行。

 

3. 停止正在执行的job

UiPath Level 2-Part3

1) Kill会立即强行停止当前的job,忽略正在执行的步骤,停止后,该job的状态为Stopped。

UiPath Level 2-Part3

2) Stop也可以停止job,但是必须配合Sudio里的Should Stop活动使用。

点击Stop后,job不会立即停止,robot会继续执行process,直到运行到Should Stop活动。

Stop和Should Stop活动使我们能安全地停止某个正在执行的process,我们应该确保在每个关键步骤前或后加上Should Stop活动。

使用Stop停止的job,其状态为Successful。

 

下面是一个示例流程:

  • 创建一个循环,robot会不断在记事本写入Hello UiPath Orchestrator。
  • 添加一个Should Stop活动,如果在Orchestrator里点了Stop则退出循环。
    • Should Stop活动返回一个布尔值(True/False),当我们没有在Orchestrator里选择Stop时返回False,当在Orchestrator里选择了Stop时返回True。
  • 根据Should Stop活动的返回结果,robot继续写入文本,或退出循环并写入End of file。

UiPath Level 2-Part3

相关文章: