阅读和查看 Automation Anywhere 文档

Automation Anywhere Automation 360

关闭内容

内容

打开内容

使用软件包 SDK 创建触发器

  • 已更新:12/11/2020
    • Automation 360 v.x
    • 探索
    • RPA 工作区

使用软件包 SDK 创建触发器

使用 Automation 360 时,您可以使用 SDK 软件包创建触发器。

使用触发器

使用 Automation 360 创建触发器。触发器在满足特定条件时启动 bot 并等待条件改变或停止。当触发器的条件匹配时,将调用运行方法向触发器发出信号。

所需注释

要创建触发器,需要以下注释:

注释 使用
BotCommand 使用 BotCommand 注释,trigger 作为 commandType。这确保了普通 Java 对象 (POJO)适合于使用 Automation 360 创建触发器。
CommandPkg 这些值在创建软件包时使用。提供注释的名称、标签和描述。
Idx 注释所有必需的参数和成员变量,并帮助验证检查。或者,它们可能会显示在输入界面中。提供索引 (Idx) 和类型。
Pkg 注释将在界面中显示的所有参数和成员变量。如果没有 Idx,将忽略此注释。
StartListen 启动触发器侦听器。
TriggerId 触发器 ID 是停止触发器必需的。
TriggerRunnable 提供可运行。调用可运行会发送一个信号,该信号会启动与触发器关联的 bot

使用案例示例

以下用例显示了如何创建定期触发 bot 的计时触发器。

  1. 使用业务逻辑创建 POJO 类:
    public class TriggerDemo {
    	
    	private static final Timer TIMER = new Timer(true);
    	
    	public void startTrigger(Double interval) {
    		TimerTask timerTask = new TimerTask() {
    
    			@Override
    			public void run() {
    				// Do nothing
    
    			}
    		};
    
    		TIMER.schedule(timerTask, interval.longValue());
    	}
    
    }

    bot 中可以存在多个相同类型的触发器。所有触发器均由 triggerId 标识。

  2. triggerId 添加到类:
    @TriggerId
    	private String triggerUid;
    	
    	public String getTriggerUid() {
    		return triggerUid;
    	}
    
    	public void setTriggerUid(String triggerUid) {
    		this.triggerUid = triggerUid;
    	}
  3. 单独存储 TimerTask,以便当您想要停止特定触发器时,使用 triggerId
    private static final Map<String, TimerTask> taskMap = new ConcurrentHashMap<>();
    	
    	public void startTrigger(Double interval) {
    		TimerTask timerTask = new TimerTask() {
    
    			@Override
    			public void run() {
    				// Do nothing
    
    			}
    		};
            taskMap.put(this.triggerUid, timerTask);
    		TIMER.schedule(timerTask, interval.longValue());
    	}
  4. 条件满足时启动触发器。接受一个可运行,并适当地调用它。
    @TriggerRunnable
    	private Runnable runnable;
    	
    	public Runnable getRunnable() {
    		return runnable;
    	}
    
    	public void setRunnable(Runnable runnable) {
    		this.runnable = runnable;
    	}
    	
    	public void startTrigger(Double interval) {
    		TimerTask timerTask = new TimerTask() {
    
    			@Override
    			public void run() {
    				runnable.run();
    
    			}
    		};
            taskMap.put(this.triggerUid, timerTask);
    		TIMER.schedule(timerTask, interval.longValue());
    	}
  5. 单独停止触发器(使用 TimerTask),或同时停止所有触发器(StopAllTriggers)。
    /*
    	 * Cancel all the task and clear the map.
    	 */
    	@StopAllTriggers
    	public void stopAllTriggers() {
    		taskMap.forEach((k, v) -> {
    			if (v.cancel()) {
    				taskMap.remove(k);
    			}
    		});
    	}
    
    	/*
    	 * Cancel the task and remove from map
    	 *
    	 * @param triggerUid
    	 */
    	@StopListen
    	public void stopListen(String triggerUid) {
    		if (taskMap.get(triggerUid).cancel()) {
    			taskMap.remove(triggerUid);
    		}
    	}
  6. 添加其余注释。
    @BotCommand(commandType = BotCommand.CommandType.Trigger)
    @CommandPkg(label = "Demo Trigger", description = "Demo Trigger", icon = "email.svg", name = "demoTrigger")
    public class TriggerDemo {
    //Other code
    
    	@StartListen
    	public void startTrigger(@Idx(index = "1", type = AttributeType.NUMBER)
    	@Pkg(label = "Please provide the interval to trigger in seconds", default_value = "120", default_value_type = DataType.NUMBER)
    	@GreaterThan("0")
    	@NumberInteger
    	@NotEmpty
    	Double interval) {
    	//Other code
    	}
    
    }
发送反馈