본문 바로가기
IT/mendix

고급 XPath를 사용하여 데이터 제약 - 논리 연산자

by 가능성1g 2024. 7. 25.
반응형

논리 연산자

논리 연산자를 사용하면 XPath 쿼리를 작성할 때 조건을 결합할 수 있습니다. Mendix는 두 가지 연산자, and 와 or 를 지원합니다. 이 연산자들은 사용자가 기대하는 기능을 수행합니다. 대괄호 안에 사용할 수 있습니다. 대괄호 집합이 여러 개 있는 XPath 쿼리를 만들면 표현식은 자동으로 및 연산자를 사용하여 결합됩니다. 논리 연산자는 바깥 대괄호 밖에서는 사용할 수 없습니다. 예시가 있는 그림은 아래에서 볼 수 있습니다:

[Available = true()
and
Active = false()
]

유효한 XPath 쿼리가 아닙니다:

[Available = true()]
and
[Active = false()]

위의 쿼리는 다음과 같이 작성해야 합니다:

[Available = true()]
[Active = false()]

 

and 연산자 사용하기

이제 조금 바꿔서 실제로 작동하는 및 연산자를 살펴볼 차례입니다. 이번에는 Product 엔티티에 사용하며 어떠한 연관도 사용하지 않습니다. AdventureWorks의 사람들은 조립이 필요한 모든 제품에 관심이 있으며 판매할 수 있는 제품을 만들 것입니다. 사용할 플래그는 두 가지로, AdventureWorks에서 조립이 필요한지 여부를 결정하는 MakeFlag와 조립된 제품이 판매 카탈로그의 일부인지 여부를 결정하는 FinishedGoodsFlag가 있습니다. 이 과제에서는 다른 제품의 조립에 사용되며 별도로 판매되는 모든 제품을 찾고 있습니다. 기본적으로 AdventureWorks가 자체 제품에 대해 판매하는 예비 부품 목록을 얻게 됩니다.

 

1. Production  모듈의 ProductionManagement 폴더에  Production_LayoutList Default을 템플릿으로 사용하여 ProductAssembleSellable_Overview라는 이름을 가진 새 페이지를 추가합니다.

 

2. 목록 보기의 데이터 원본 유형을 XPath로, 엔티티를 Production.Product로 설정하고 스크린샷과 같이 XPath 쿼리를 작성합니다. 완료했으면 확인을 클릭합니다. 목록 보기를 자동으로 채울지 묻는 메시지가 표시되면 예라고 답해야 합니다.

3. Production 모듈의 메뉴 문서에 페이지를 추가합니다.

4. 로컬에서 앱을 실행하고 결과를 확인하세요.

 

또 다른 예제가 시작되었습니다, 수고하셨습니다. 아직 끝나지 않았으니 계속 진행합시다!

 

or 연산자 사용

AdventureWorks 에는 제품의 색상을 표시하는 속성이 있습니다. 안타깝게도 이 속성에는 때때로 두 가지 색상이 포함되어 있습니다. 검은색 아이템이 많아서 해당 색상의 모든 제품을 표시하는 개요 페이지를 원하기 때문에 안타까운 일입니다. 이를 위해 Production_Overview 페이지에 다른 탭을 추가할 것입니다.

 

1. Production_Overview 페이지를 열고 Black Items 탭을 엽니다.

 

2. 목록 보기를 두 번 클릭하고 XPath를 아래 경로로 변경합니다.

`[Color = 'Black'`
`or`
`Color = 'Silver/Black']`

3. 로컬에서 애플리케이션을 실행하여 결과를 확인합니다. 지정한 색상이 아닌 다른 색상의 제품이 표시되지 않아야 합니다.

수고하셨습니다. 이제 강의가 한 번 더 남았으니 이 모듈을 마무리할 수 있습니다.

 

not 함수

not() 함수는 입력한 내용을 모두 무효화합니다. 이 함수는 일반적으로 생성되는 SQL 쿼리로 인해 속도가 느립니다. 따라서 목록 빼기 연산이 더 빠르므로 not 함수를 사용하지 않는 것이 좋습니다. 스크린샷에서 볼 수 있듯이 not 함수는 부울 값에 사용할 수 있습니다.

not() 함수의 또 다른 용도는 아래 스크린샷에서 확인할 수 있습니다. 여기서 쿼리는 Product와 ProductSubcategory 사이에 연관성이 있는지 확인한 다음 이를 무효화합니다. 따라서 연결이 존재하지 않으면 이 쿼리는 해당 제품을 결과에 포함합니다. 이 경우 생성되는 쿼리는 각 제품에 대해 제품 하위 카테고리가 존재하는지 확인해야 합니다. 결과적으로 데이터베이스는 각 제품에 대한 각 제품 하위 카테고리를 확인합니다.

 

not 함수 사용

AdventureWorks에서는 하위 카테고리가 지정되지 않은 모든 제품을 표시하는 페이지를 만들고자 합니다. 이를 위해 not() 함수를 사용합니다.

 

1. Production_Overview 페이지에서 카테고리 없는 제품 탭을 엽니다.

2. 아래와 같이 XPath를 변경합니다. 완료했으면 확인을 클릭합니다.

`[not(Production.Product_ProductSubcategory/Production.ProductSubcategory)]`

 

이 XPath 쿼리는 하위 카테고리에 대한 링크가 없는 모든 제품을 검색합니다.
로컬에서 애플리케이션을 실행하여 구축한 내용을 확인해 보세요!

반응형