Aggregate는 데이터베이스에서 데이터를 가져오는 쉬운 시각적 방법을 제공하지만 때때로 Aggregate가 처리할 수 없는 더 복잡한 쿼리가 필요할 수 있습니다. 따라서 SQL 도구를 사용하여 상당히 복잡한 SQL문을 작성할 수도 있습니다. SQL Tool SQL 도구는 서버 작업 및 화면 데이터 작업과 같은 서버측 흐름에서 사용할 수 있습니다. 입력 및 출력은 미리 정의해야 하며 상단의 시각적 편집기를 사용하여 수행할 수 있습니다. 입력 및 출력은 미리 정의해야 하며 상단의 시각적 편집기를 사용하여 수행할 수 있습니다. SQL 도구 내부에서 SQL문을 작성할 수 있습니다. SQL 도구가 블랙박스와 같다는 것을 아는 것이 중요합니다. 이는 외부 범위에 직접 액세스할 수 없음을 의미합니다. 따라서 외부..
Client Variables 클라이언트 변수의 값은 기본 데이터 유형 및 엔터티 식별자로 제한됩니다. 클라이언트 브라우저는 모든 클라이언트 변수를 저장합니다. 사용자가 로그인할 때마다 클라이언트 변수 값이 유지되지만 로그아웃하면 클라이언트 변수 값이 기본값으로 재설정 클라이언트 변수는 많은 경우에 유용하며 사용자별로 다르며 클라이언트 브라우저에 로컬로 저장된다는 점을 인식하는 것이 중요 Site Properties 사이트 속성은 응용 프로그램 전체 정보를 저장하는 전역 구성 변수입니다. 글로벌이란 애플리케이션의 설정을 저장하는데 사용할 수 있으며 해당 환경의 모든 최종 사용자가 해당 값을 공유한다는 의미입니다. 사이트 속성은 서버측에만 존재합니다. 그리고 정수, 텍스트 값 및 엔터티 식별자와 같은 기본..
Scrren Events On Initialize 이벤트 핸들러가 초기화되는 시점에서 실행됩니다. 일반적으로 이벤트 핸들러에서 초기화 작업이 수행됩니다. 예를 들어 화면이 로드되었을 때 초기데이터를 가져오거나 초기 변수 값을 설정하는 등의 작업이 이 단계에서 수행됩니다. On Ready 화면이 초기화되고 요소들이 렌더링된 후 실행됩니다. 이벤트 핸들러에서는 화면 요소들에 대한 조작이나 초기화를 수행 할 수 있습니다. 예를 들어, 버튼이나 입력란과 같은 요소들의 상태를 설정하거나 초기 포커스를 설정하는 등의 작업이 이 단계에서 수행됩니다. On Render 화면 요소들이 렌더링된 후 실행됩니다. 이벤트 핸들러에서는 화면의 레이아웃이나 스타일과 관련된 작업을 수행할 수 있습니다. 예를 들어 동적으로 생성된 ..
Employees라는 하나의 Screen이 있고 이 Screen에는 모든 직원을 검색하는 Aggreagte가 있습니다. 해당 화면에는 왼쪽 영역에 직원 목록이 표시됩니다. 목록에서 직원을 클릭하면 오른쪽에 해당 직원의 상세 정보가 나타납니다. 처음에는 직원의 ID만 볼 수 있지만, 이번 연습에서는 해당 영역을 추가할 것입니다. 오른쪽 영역은 나중에 만들 Block이 표시될 영역입니다. 이 블록은 데이터베이스에서 Employee의 상세 정보를 검색하고 표시할 것입니다. 그 후에는 매개 변수 변경 이벤트 핸들러를 구현할 것입니다. 이를 통해 부모 화면에서 선택한 Employee가 변경될 때마다 블록에 표시된 정보를 새로 고칠 수 있습니다. 그 다음으로는 Drop Down을 사용하여 Employee의 부서를 ..
이번 포스팅에서는 Block 내에서 Event를 트리거한 다음 부모에서 처리하는 방법을 보여드리겠습니다 . 먼저 이 앱에는 다음과 같이 구성되어있습니다. 먼저 블록을 보겠습니다. 블록에는 현재 선택된 요일을 나타내는 CurrentWeekDay라는 입력매개변수가 존재합니다. 그리고 블록 내부에 있는 다섯개의 버튼 중 하나를 클릭할 때마다 SelectWeekDay 작업이 실행됩니다. 클라이언트 작업 내에서 현재 요일(CurrentWeekDay)을 할당으로 선택한요일(NewWeekDay)로 변경하기만 하면 됩니다. 위의 앱을 브라우저를 통해 실행시켜보면 아래의 텍스트에서 볼 수 있듯이 정보는 업데이트 되지 않습니다. 블록 안에 선택한 요일이 변경될때마다 트리거될 이벤트를 추가해 보겠습니다. 이벤트는 입력 매개..
이번 포스팅에서는 Block에 의해 트리거된 이벤트를 처리하는 방법을 보겠습니다. Outsystems UI의 FlipContent 패턴을 사용합니다. 이 모든 패턴은 블록이므로 Flip Content를 사용하여 이벤트 처리를 보여줍니다. 보시다시피 이 패턴에는 두 개의 Place holder(CardFront 및 CardBack)가 있습니다. 이 블록을 화면으로 드래그 하겠습니다. Card Front Place holder에 Outsystesms 문화책의 표지를 추가해보겠습니다. 그리고 카드 뒷면에 목차가 포함된 이미지를 추가합니다. FlipContent블록은 콘텐츠가 뒤집힐 때 이벤트를 트리거하지만 이 이벤트는 필수는 아닙니다. 이벤트를 처리하려면 이벤트가 발생할 때 실행할 화면 동작을 지정하기만 하면..
이번 포스팅에서는 블록에서 사용할 수 있는 내장 On Parameters Changed 이벤트를 살펴보겠습니다. On Parameters Changed Block에는 On Parameters Changed라는 내장 이벤트가 있습니다. 이 이벤트는 블록에서만 사용하고 플랫폼은 블록 입력 매개변수 중 하나의 값을 변경할 때마다 자동으로 트리거합니다(이렇게하면 블록이 상위에서 오는 변경사항에 반응 가능). 블록 자체 내에서 입력 매개변수 값을 변경해도 이 이벤트가 트리거되지 않습니다. 실제 작동 방식 왼쪽에 몇가지 제품이 있는 화면이 있습니다. 이 화면에는 현재 선택한 제품의 ID를 보유하는 로컬변수도 있습니다.(현재 선택된 제품 X) 화면 오른쪽에는 특정 제품의 세부 정보를 표시하는 블록이 존재, 화면의 S..
Events Events(이벤트)는 특정 이벤트가 발생했음을 알려 블록이 부모와 상호작용할 수 있도록 하는 요소입니다. 따라서 블록이 부모와 상호작용하려면 이벤트를 사용해야 합니다. 기본적으로 블록은 이벤트를 트리거한 다음 부모가 이를 처리하고 그에 따라 행동합니다. 이는 이벤트가 블록 내부에 정의됨을 의미합니다. 이벤트의 입력매개변수는 필수가 아니지만 블록 범위에서 부모의 외부범위로 데이터를 전달할 수 있도록 합니다. 트리거 : 트리거(trigger)는 특정 이벤트가 발생할 때 자동으로 실행되는 작업을 말합니다.(이벤트가 발생하면 트리거는 이를 감지하고 미리 정의된 작업을 수행) 왜 부모와 상호 작용 해야할까? 블록과 부모는 다른 범위를 가지고 있다. 따라서 사용자가 블록내부의 요소와 상호작용하는 경우..
Blocks Blocks(블록)은 기본적으로 재사용 가능한 코드 조각입니다. 블록 안에 다른 위젯, 패턴, 블록을 배치할 수 있어 풍부하고 복잡한 사용자 인터페이스를 구성할 수 있습니다. Blocks(블록)은 사용자 인터페이스 요소이며 화면처럼 디자인됩니다. 따라서 다른 위젯과 심지어 다른 블록도 드래그하여 블록 안에 삽입할 수 있습니다.스크린과 마찬가지로 블록도 입력 매개변수, 로컬 변수 및 스크린액션을 가질 수 있습니다. 또한 블록에는 자리 표시자(PlaceHolders) 및 이벤트(Event)와 같은 일부 독점 요소가 있을 수 있습니다. 또한 화면과 마찬가지로 블록에는 출력 매개변수가 없습니다. 블록은 인터페이스 요소이므로 화면 및 다른 블록 내부에 배치할 수 있습니다. Placeholder 블록을..
인덱스(Index) 인덱스는 데이터베이스 테이블에서 데이터 검색 속도를 높이기 위해 데이터베이스에서 사용하는 데이터 구조 입니다. Outsystems의 경우 엔터티에서 인덱스를 사용할 수 있습니다. 인덱스가 데이터 검색 속도를 높일 수 있지만 그에 따른 비용이 들 수 있습니다. 저장 공간을 차지하는 것 외에도 데이터가 변경될 때마다 인덱스도 기존 데이터와 일치하도록 변경해야 합니다. 예를 들어 삽입 또는 업데이트가 있습니다. 특정 속성에 집합에 대한 인덱스를 정의하면 해당 속성을 기반으로 데이터를 선택할 때 데이터 검색속도가 빨라집니다. 참조 속성이 좋은 예이며 이러한 인덱스가 자동으로 생성되는 이유입니다. 자체 사용자 지정인덱스도 만들 수 있습니다. 인덱스를 너무 많이 추가하면 실제로 성능 문제가 발생..
outsystems에서는 자체적으로 데이터베이스가 존재한다. 다음은 여러 엔티티가 있는 데이터 모델의 예이다. Customer이라는 Entity를 보면 이름(Name), 이메일(Email), 주소(Address)와 같은 간단한 속성들을 가지고 있다. 그리고 설명,기한 및 배송날짜가 있는 Order Entity도 존재한다. 그리고 Customer과 Order사이에 선이 존재하는데 이 선은 한명의 고객이 여러개의 주문을 할 수 있음을 의미한다. (관계형데이터베이스의 기호와 비슷) 식별자(Primary Key) Outsystems에서 데이터 간의 관계 생성은 대부분 엔티티 식별자 속성을 기반으로 한다. 즉 관계를 허용하려면 엔티티에 식별자가 있어야 한다. Entity Identifier는 Entity가 생성될..
이 포스팅에서는 목록 및 목록 항목 위젯을 사용하여 화면에 주문 목록을 표시해보겠습니다. Orders Screen이 생성된 모듈이 이미 있습니다. 이 화면에는 우선 순위별로 정렬된 모든 주문을 가져오는 Aggreagtes가 이미 생성되어 있습니다. 화면에 목록 위젯을 추가하여 시작하겠습니다. 왼쪽의 도구 상자에서 화면의 콘텐츠 영역으로 List위젯을 드래그 해줍니다. 모든 목록 위젯에는 표시할 데이터가 있는 데이터 소스가 있어야 합니다. 엔터티를 직접 선택할 수도 있고 또는 소스를 기존 Aggregate로 수동으로 설정할 수 있습니다. 소스를 GetOrders.List로 설정해보겠습니다. 이제 목록에 표시할 데이터와 형식을 결정해야 합니다. 위 화면을 보면 알 수 있듯이 일부 데이터를 목록으로 끌어서 정..
이 모듈에서는 Customer 엔터티를 정의했습니다. 여기에는 부트스트랩된 일부 데이터가 포함되어 있습니다. Fetch Data 논리 탭으로 전환하고 GetCustomers 서버 작업 내부에 집계를 생성하겠습니다. 왼쪽 도구 상자에서 Aggregate를 끌어서 작업 흐름에 놓습니다. 방금 끌어놓은 Aggreagate를 더블클릭해봅니다. 더블 클릭해보면 비어 있음을 알 수 있습니다. 엔터티를 추가해보겠습니다. 캔버스를 클릭한 다음 엔터티를 선택하거나 데이터 탭에서 엔터티를 끌어서 수행할 수 있습니다. 드래그 앤 드롭 방식을 사용해보겠습니다. 데이터 탭으로 전환하고 고객 엔터티를 찾아 캔버스에 끌어 놓습니다. Customer 엔터티가 집계에 소스로 추가되었습니다. Sources 탭에서 확인할 수 있습니다. ..
Aggregates란? 대부분의 애플리케이션은 데이터베이스에서 데이터를 가져와야 한다. Aggregate를 사용하면 해당 유형의 쿼리를 시각적인 방식으로 만들 수 있다. Aggregate는 데이터를 검색, 필터링, 정렬, 집계 등 다양한 방식으로 처리하기 위한 데이터 집합 관리 기능 Aggregate는 SQL의 SELECT문과 유사한 방식으로 작동한다. 즉, 데이터베이스 테이블에서 데이터를 검색하고 필터링하고 집계할 수 있다. Aggregate를 사용하여 데이터를 가져오면 에플레키에션에서 사용할 수 있는 개체 컬렉션으로 반환된다. SUM, AVG, MIN, MAX등과 같은 집계함수를 사용하여 숫파질드의 합계,평균,최소값,최대값 등을 계산 가능. 또한 조인, 필터링, 정렬, 그룹화 등과 같은 다양한 작업을..
이 모듈에서는 이미 생성된 LoopScreen이라는 스크린이 있고 안에 하나의 Screen Action이 있습니다. 화면에는 숫자 입력 매개변수와 연결된 값 3과 함께 Power Of Two Screen Action을 호출하는 버튼이 있습니다. 구현 2의 거듭제곱은 주어진 값만큼 숫자 2를 곱하는 수학 함수입니다. 따라서 3이면 2^3 즉 8(2*2*2)이 나와야합니다. 이 수학 함수를 구현하기 위해 루프를 사용합니다. Ad-hoc 루프는 Ifs를 사용하여 구현할 수 있습니다. Ad-hoc 루프란? outsystems에서 Ad-hoc 루프는 반복 횟수를 미리 알 수 없는 상황에서 사용하는 반복문입니다. Ad-hoc는 즉석에서, 임시적으로 라는 뜻을 가지고 있습니다. IFs란? OutSystems에서 "i..