NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 RPA 매크로 - 글로벌 스크립트에 대한 이해. (상급 난이도)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로에는 개별적인 스크립트들이 변수를 공유하거나 또는 로직에 따라 서브 스크립트를 공유할 수 있습니다. 단순하게 스크립트를 제작하는게 가장 좋지만~ 특수한 상황에서는 다른 스크립트의 변수 또는 다른 스크립트의 서브 스크립트를 공유해야 합니다. A 스크립트와 B 스크립트가 동시에 실행될 때 B 스크립트의 변수 값에 따라 A 스크립트의 동작이 변경되어야 할 수 있습니다. B 스크립트에서 동작중인 서브 스크립트를 A 스크립트에서 어떤 로직에 따라 중지 시킬수도 있습니다. 글로 설명하기보다는 실제 예제를 한번 보시죠^^ 에디터를 실행한 후 새로운 스크립트를 하나 추가하세요.

    aIdzK2H.png

     

     

    전체 스크립트 구조는 아래와 같습니다. 중요한 부분은 [ 스크립트 실행 ]입니다.  [ 핸들 추가 ]는 바탕화면 무한 클릭(서브 스크립트)에서 비활성으로 동작시키기 위해 추가한 액션입니다. 그리고, 서브 스크립트가 중지되더라도 매인은 계속 동작하기 위해 그룹(1)과 [ 액션 이동 ]으로 무한 반복하도록 되어 있습니다.

    oWJwoLB.png

     

     

    글로벌 스크립트 속성을 True로 변경하세요. 이렇게하면 다른 스크립트에서 이 스크립트를 제어할 수 있게됩니다.

    Bn4wu7f.png

     

     

    새로운 스크립트를 하나 추가한 후 아래와 같이 구성합니다. 실행 전 지연에 3000(3초)를 설정한 이유는 [New] Script 2가 어느정도 동작된 후 스크립트를 중지하기 위함입니다. 여기서 주의할점은 글로벌 스크립트를 설정하지 않았다는 점입니다. 이 스크립트를 실행하면 글로벌로 설정된 스크립트를 중지할 수 없을거 같지만 실제 동작은 그렇지 않습니다.

    SOTmcQ1.png

     

     

    동작이 빨라서 잘 확인이 안될수도 있습니다. 스크립트 2가 실행되고 서브 스크립트도 같이 실행되었습니다. 이 서브 스크립트는 글로벌로 등록되었습니다. 스크립트 1을 실행하면 3초 후 스크립트 1에서 등록한 글로벌 스크립트를 중지하고, 자신도 중지됩니다. 하지만, 글로벌로 설정하지 않았기 때문에 "지정한 키가 사전에 없습니다." 에러를 표시하고 종료합니다. 물론, 글로벌로 등록된 서브 스크립트도 중지가 되었습니다.

    jV3wSeW.gif

     

     

    이렇게 동작되는 이유는 간단합니다. 매인 스크립트(여기서는 스크립트 1, 스크립트 2가 매인 스크립트입니다.)가 서브 스크립트를 관리합니다. 글로벌로 등록된 서브 스크립트는 모든 매인 스크립트와 연결됩니다. 따라서, 스크립트 1에서 에러가 나서 중지하지는 못했지만, 스크립트 1이 완료되면서 서브 스크립트를 모두 중지시키기 때문에 이러한 결과가 발생합니다. 그러면, 스크립트 1도 무한으로 반복하도록 변경한 후 다시 테스트 해보겠습니다.

    OTQOrIw.gif

     

     

    스크립트 1이 중지되지 않으면 글로벌로 등록된 서브 스크립트도 중지되지 않습니다. 스크립트 중지 액션은 에러로 실행이 안된거구요. 그러면, 정상적인 동작으로 한번 테스트를 해볼께요. 스크립트 1의 스크립트 중지 액션에서 글로벌 스크립트 속성을 True로 변경하고, 실행했습니다. 정상적으로 글로벌 스크립트가 중지되었습니다.

    gtBGsPd.gif

     

     

    이렇듯 다른 스크립트에서 서브 스크립트를 제어하려면 글로벌 스크립트로 등록해줘야 합니다. 변수도 동일합니다. 서로 다른 스크립트가 하나의 변수에 접근해서 값을 변경하거나 가져와서 다른 동작을 수행하려면 글로벌 변수로 등록해야 합니다. 서브 스크립트를 비동기로 실행하면 아래와 같이 서브 스크립트를 실행만하고, 다음 액션으로 넘어가게 됩니다. 그렇더라도 다른 스크립트에서 비동기로 실행중인 서브 스크립트를 중지할 수 있습니다.

    tbCxPso.gif

     

     

    글로벌 스크립트이기 때문에 다른 스크립트에서 설정한 스크립트를 실행 할 수도 있습니다.

    vUh4Xuy.png

     

     

    내용이 다소 어려운 부분이 있습니다. 동시에 여러가지를 생각하면서 스크립트를 작성한다는건 상당히 어려운 작업입니다. 이는 모든 시스템이 비슷합니다. 대부분은 하나의 동작을 만들어서 동일한 작업을 스레드로 처리합니다. 하지만, 글로벌 스크립트는 서로 다른 로직에서 하나의 서브 스크립트를 제어해야 하므로 상당히 신경써서 로직을 구성해야 합니다. 의도하지 않은 동작이 발생할 확률이 높기 때문입니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.