Automation Anywhere 설명서 읽기 및 검토

Automation Anywhere Automation 360

콘텐츠 닫기

콘텐츠

콘텐츠 열기

패키지 SDK를 사용하여 트리거 생성

  • 업데이트: 12/11/2020
    • Automation 360 v.x
    • 탐색
    • RPA 작업 영역

패키지 SDK를 사용하여 트리거 생성

Automation 360을/를 사용할 때 SDK 패키지를 사용하여 트리거를 만들 수 있습니다.

트리거 사용

트리거를 생성하는 데 Automation 360를 사용합니다. 특정 조건이 충족되면 트리거가 bot를 시작하고 조건이 변경되거나 중지될 때까지 대기합니다. 트리거 조건이 일치하면 실행 방법을 호출하여 트리거에 신호를 보냅니다.

필요한 주석 기호

트리거를 생성하려면 다음 주석 기호가 필요합니다.

주석 기호 사용량
BotCommand 트리거가 있는 BotCommand 주석 기호를 commandType으로 사용합니다. 이렇게 하면 플레인 구형 Java 객체(POJO)가 Automation 360와 트리거 생성에 적합합니다.
CommandPkg 이러한 값은 패키지를 생성할 때 사용됩니다. 주석 기호에 이름, 라벨 및 설명을 입력합니다.
Idx 필요한 모든 매개변수와 구성원 변수에 주석 기호를 지정하고 유효성 검사를 도와줍니다. 또는 입력을 위해 인터페이스에 표시될 수 있습니다. 인덱스(Idx)와 유형을 입력합니다.
Pkg 인터페이스에 표시될 모든 매개변수와 구성원 변수에 주석 기호를 지정합니다. 이 주석 기호는 Idx와 함께 제공되지 않으면 무시됩니다.
StartListen 트리거 수신기를 시작합니다.
TriggerId 트리거를 중지하는 데 필요한 트리거 ID입니다.
TriggerRunnable runnable을 제공합니다. runnable을 호출하면 트리거와 관련된 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. 특정 트리거를 중지하고자 할 때 triggerId를 사용할 수 있도록 TimerTask를 따로 저장합니다.
    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. 조건이 충족되면 트리거를 시작합니다. runnable을 수락하고 적절하게 호출합니다.
    @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. 트리거를 개별적으로 중지하거나(triggerId사용) 동시에 모든 트리거를 중지합니다(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
    	}
    
    }
피드백을 보내주십시오