.. meta:: :keywords: GRAPH .. _doc-start-graph: 그래프 ====== 이 페이지는 "엔서"의 "태스크 (TASK)"를 정의할 수 있는 "그래프"에 대한 가이드를 포함합니다. 비주얼 프로그래밍 ----------------- 비주얼 프로그래밍(Visual Programming)은 사용자가 텍스트로 코딩하는 대신 그래픽적으로 프로그램 요소를 조작하여 프로그램을 개발할 수 있게 하는 방법 입니다. "엔서"의 비주얼 프로그래밍은 :ref:`프로젝트 ` 의 하위 작업 분류인 "태스크 (TASK)"를 노드 기반 인터페이스를 사용하여 하나 이상의 그래프로 정의할 수 있습니다. 그래프 페이지에 처음 들어오면 아래와 같은 빈 화면이 출력됩니다. .. image:: img/graph-01.png 빈 화면에서 마우스 우클릭으로 컨텍스트 메뉴를 출력할 수 있습니다. .. image:: img/graph-02.png "태스크 추가" 버튼으로 태스크를 생성합니다. .. image:: img/graph-03.png 생성된 태스크 그룹 안에서 마우스 우클릭으로 태스크용 컨텍스트 메뉴를 출력할 수 있습니다. .. image:: img/graph-04.png 현재 시간을 출력하는 데모를 진행하도록 하겠습니다. 다음과 같은 방법으로 새로운 람다를 추가합니다. Task에 람다 추가 >> image >> 시계 이미지 .. note:: "시계 이미지" 람다는 현재 시간을 이미지와 텍스트로 출력해 주는 람다 입니다. .. image:: img/graph-05.png 위와 동일한 방법으로 다음 람다를 생성합니다. Task에 람다 추가 >> rtc >> rtc.realtime_video .. note:: "rtc.realtime_video" 람다는 WebRTC 비디오를 출력해 줍니다. .. image:: img/graph-06.png 이제 "시계 이미지"의 "image" 슬롯과 "rtc.realtime_video"의 "image" 슬롯을 연결해 줍니다. 이렇게 연결하면 "현재 시간 이미지" 를 "WebRTC 비디오" 로 출력하게 됩니다. .. image:: img/graph-07.png 이제 테스크를 주기적으로 실행시킬 수 있는 "무한 트리거" 람다를 추가합니다. Task에 람다 추가 >> trigger >> 무한 트리거 .. note:: "무한 트리거" 람다는 테스크에 신호를 무한정 보냅니다. 그리고 상단에 있는 "실행" 버튼을 클릭하면 설계된 그래프를 실행하게 됩니다. .. image:: img/graph-08.png 실행에 성공하면 "그래프 상태 보기" 버튼을 클릭하여 태스크의 상태를 조회할 수 있습니다. .. image:: img/graph-09.png 태스크의 상태는 아래와 같은 종류가 있습니다. - ``initializing``: 초기화 중 입니다. - ``active``: 활성화 되었으며 정상적으로 실행되고 있습니다. - ``closing``: 종료 중 입니다. - ``done``: 정상적으로 완료되었 습니다. - ``error``: 비정상 종료 되었습니다. 태스크가 정상적인 상태로 활성화 될 경우 아래 화면과 같이 ``active`` 상태로 전환됩니다. .. image:: img/graph-10.png WebRTC 실시간 비디오를 시청하기 위해 대시보드의 플러그인 위젯을 열어, 다음과 같이 주소를 입력합니다. ``http://localhost:8080/`` .. warning:: "rtc.realtime_video" 람다의 ``Port`` 주소를 ``8080`` 으로 지정했으며, "엔서"를 실행한 PC와 브라우저로 접속한 PC가 동일한 경우 ``localhost`` 로 접속할 수 있습니다. 정상적으로 접속되면 다음과 같은 현재 시간 화면이 출력됩니다. .. image:: img/graph-11.png