규칙 및 규칙 평가

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

규칙은 작업 항목 필드에 값 할당을 설정하거나 제한하는 데 사용됩니다. 자동 생성된 규칙과 프로세스 또는 프로젝트에 대해 정의된 사용자 지정 규칙이라는 두 가지 주요 규칙 유형이 있습니다. 자동 생성된 규칙은 표준 방식으로 작동해야 하는 영역에 대한 사용자 지정 규칙을 추가할 필요성을 최소화합니다.

비즈니스 사용 사례를 지원하기 위해 사용자 지정 규칙을 정의합니다. 필드의 데이터 형식에 따라 해당 필드에 입력할 수 있는 데이터에 대한 다양한 제한을 설정할 수 있습니다. 선택 목록(드롭다운 메뉴)의 값을 지정하거나, 기본값을 설정하거나, 항목을 지우거나, 변경을 제한할 수 있습니다. 조건부 규칙을 사용하면 서로 다른 필드 값 간의 종속성에 따라 필드에 규칙을 적용할 수 있습니다. 또한 필드를 수정할 수 있는 사람을 제한하거나, 그룹에 적용되도록 규칙의 범위를 지정할 수 있습니다.

다음을 이해하려면 이 문서를 참조하세요.

  • 시스템에서 자동 생성된 규칙을 적용하는 방법
  • 시스템 필드의 사용자 지정 규칙 정의에 적용되는 제한 사항
  • 적용할 수 있는 다양한 유형의 사용자 지정 규칙
  • 규칙 평가 방법
  • 상속 프로세스에 대해 정의된 규칙과 온-프레미스 XML 프로세스 간의 차이점
  • 정의하는 사용자 지정 규칙 수를 최소화해야 하는 이유

사용자 지정 규칙을 정의하기 전에 Azure Boards 구성 및 사용자 지정을 읽고 비즈니스 요구 사항에 맞게 Azure Boards 사용자 지정하는 방법을 폭넓게 이해합니다.

WIT에 대해 정의하는 규칙 수를 최소화합니다. WIT에 대한 여러 규칙을 만들 수 있지만 사용자가 작업 항목을 추가하고 수정할 때 추가 규칙은 성능에 부정적인 영향을 미칠 수 있습니다. 사용자가 작업 항목을 저장할 때 시스템은 해당 작업 항목 유형에 대한 필드와 연결된 모든 규칙의 유효성을 검사합니다. 특정 조건에서 규칙 유효성 검사 식이 너무 복잡해서 SQL 평가할 수 없습니다.

자동 생성된 규칙

자동 생성된 규칙은 표준 방식으로 작동해야 하는 영역에 대한 사용자 지정 규칙을 추가할 필요성을 최소화합니다.

상태 전환 규칙

상속된 프로세스는 워크플로에 추가된 각 사용자 지정 작업 항목 유형 및 사용자 지정 상태에 대해 모든 상태 전환 규칙의 전체 집합을 동적으로 생성합니다. 모든 상태에서 모든 상태로의 전환은 유효합니다.

온-프레미스 XML 프로세스의 경우 작업 항목 유형 정의 섹션 내에서 WORKFLOW 유효한 전환을 지정해야 합니다.

상태 전환 및 By/Date 필드 규칙

By/Date 필드는 만든 날짜별/날짜, 활성화 기준/날짜, 해결 기준/날짜종가/날짜에 해당합니다.

상속된 프로세스의 경우 작업 항목을 한 상태에서 다른 상태로 전환할 때 이러한 필드가 자동으로 설정되거나 지워집니다. 변경된 날짜/날짜 필드는 각 작업 항목 저장으로 업데이트되고 상태 전환과 관련이 없으므로 포함되지 않습니다.

이러한 필드를 제어하는 기본 규칙 및 동작은 다음과 같습니다.

  1. 닫힌 상태는 항상 완료된 상태 범주에 포함됩니다.
  2. 완료된 상태 범주는 구성할 수 없으며 하나의 상태와만 연결됩니다.
  3. 닫힌 상태는 Agile 및 CMMI 프로세스에 대해 항상 닫혀 있으며 스크럼 및 기본 프로세스에 대해 항상 완료 됩니다.
  4. 이러한 규칙의 자동 생성은 지역화된 상태 이름을 규칙 조건에 포함하므로 로캘의 영향을 받습니다. 시스템은 다른 로캘에 대해 서로 다른 규칙을 생성합니다.
  5. 이러한 필드에 대해 자동으로 생성된 규칙은 이러한 필드를 포함하는 작업 항목 유형에 대해서만 지정됩니다. 작업 항목 유형에 이러한 필드 중 하나 이상을 포함하지 않을 수 있습니다.
  6. 이러한 규칙은 작업 항목 유형에 사용자 지정 상태가 있거나 작업 항목 유형이 사용자 지정 작업 항목 유형인 경우에 필요합니다.
  7. 이러한 규칙은 상속된 프로세스에만 적용됩니다. 호스트된 XML 또는 온-프레미스 XML 프로세스에 대해 생성되지 않습니다.

워크플로 상태는 Kanban 보드에서 워크플로를 지원하기 위해 상태 범주와 연결됩니다. 자세한 내용은 백로그 및 Boards 워크플로 상태 및 상태 범주를 사용하는 방법을 참조하세요.

상태 변경 날짜 필드 규칙

이러한 규칙은 특정 상태에 종속되지 않으므로 기술적으로 종결자별/마감 날짜 규칙보다 훨씬 간단합니다. 모든 작업 항목 유형에 대해 동일한 규칙이 항상 작동합니다. 일부 OOB 작업 항목 형식에 상태 변경 날짜 필드가 없으므로 자동으로 생성되어야 하므로 사용자가 이 필드를 사용자 지정 작업 항목 유형에 추가할 때 이러한 규칙도 자동으로 생성되어야 합니다. 닫힌 날짜/마감 날짜 규칙에 대한 동일한 원칙도 여기에 적용됩니다.

사용자 지정 규칙

모든 사용자 지정 규칙은 선택 사항입니다. 상속된 프로세스의 경우 조건과 작업으로 구성된 규칙을 지정합니다. 온-프레미스 XML 프로세스의 경우 필드 또는 워크플로 내에서 규칙을 지정합니다.

두 프로세스 간에 일대일 매핑은 없습니다. 경우에 따라 XML 요소 규칙은 규칙으로 정의되지 않고 상속된 프로세스에 대한 편집 필드 대화 상자 내에서 정의됩니다. 다른 XML 요소(예: FROZEN, MATCH) NOTSAMEAS는 상속된 프로세스에서 지원되지 않습니다.

다음 사항에 유의하세요.

  • 규칙은 양식과 상호 작용할 때뿐만 아니라 다른 도구를 통해 상호 작용할 때도 항상 적용됩니다. 예를 들어 필드를 읽기 전용으로 설정하면 작업 항목 양식뿐만 아니라 API 및 Excel Azure DevOps Server 추가 기능에도 규칙이 적용됩니다.
  • 상속된 프로세스 항목은 전체 규칙을 만들기 위한 조건 및 작업을 지정합니다. XML 요소는 이러한 구별을 하지 않습니다.
  • 필드 규칙은 다른 두 필드의 합계인 값을 할당하거나 다른 수학 계산을 수행하는 것을 지원하지 않습니다. 그러나 TFS Aggregator(웹 서비스) Marketplace 확장을 통해 요구 사항에 맞는 솔루션을 찾을 수 있습니다. 작업 및 기타 필드 롤업도 참조하세요.
  • Marketplace 확장을 사용하여 필드에 사용자 지정 규칙을 적용하는 추가 솔루션(예: 작업 항목 양식 컨트롤 라이브러리 확장)을 찾을 수 있습니다.

규칙 컴퍼지션

상속된 프로세스의 경우 각 규칙은 조건 및 작업이라는 두 부분으로 구성됩니다. 조건은 규칙을 적용하기 위해 충족해야 하는 상황을 정의합니다. 작업은 수행할 작업을 정의합니다. 대부분의 규칙의 경우 규칙당 최대 2개의 조건과 10개의 작업을 지정할 수 있습니다. 모든 사용자 지정 규칙을 실행하려면 모든 조건을 충족해야 합니다.

예를 들어 상태 및 다른 필드에 할당된 값에 따라 필요한 필드를 만들 수 있습니다. 예를 들면 다음과 같습니다.

   (Condition) When a work item State is활성
   (Condition) And when the value of값 영역 = 비즈니스
   (Action) Then make required스토리 포인트

참고

현재 상태 전환 규칙에 대해 하나의 조건만 지원됩니다. 상태에 따라 규칙을 적용하는 경우 워크플로 상태에 규칙 적용을 참조하세요.

다음 표에는 선택한 조건과 함께 사용할 수 있는 작업이 요약되어 있습니다.

Condition

지원되는 작업

필드 값을 설정하거나 필수 또는 읽기 전용으로 설정

Conditions, work item is created

Actions, work item is created

상태에 따라 전환 제한

Condition, work item is moved

Actions, restrict a transaction based on State.

상태 및 사용자 또는 그룹 멤버 자격에 따라 필드를 숨기거나 필드를 읽기 전용으로 설정하거나 필수로 설정

Condition, user group membership

Actions, restrict a transaction based on State and membership.

사용자 또는 그룹 멤버 자격에 따라 필드 특성을 설정하거나 상태 전환을 제한합니다.

Condition, user group membership

Actions, restrict a transaction based on State and membership.

너무 많은 규칙이 정의되면 어떻게 되나요?

프로젝트당 단일 SQL 식이 정의되어 작업 항목이 만들어지거나 업데이트 될 때마다 유효성을 검사합니다. 이 식은 프로젝트에 대해 정의된 모든 작업 항목 형식에 대해 지정하는 규칙의 수에 따라 증가합니다. 필드에 대해 지정된 각 동작 한정자는 하위 식 수가 증가합니다. 중첩된 규칙, 전환에만 적용되거나 다른 필드의 값에 조건부로 지정된 규칙으로 인해 문에 더 많은 조건이 추가 IF 됩니다. 식이 특정 크기 또는 복잡성에 도달하면 SQL은 더 이상 계산할 수 없으며 오류를 생성합니다. 일부 WIT를 제거하거나 일부 규칙을 제거하면 오류가 해결될 수 있습니다.

선택 목록(드롭다운 메뉴)의 값을 지정하거나, 기본값을 설정하거나, 항목을 지우거나, 변경을 제한할 수 있습니다. 조건부 규칙을 사용하면 서로 다른 필드 값 간의 종속성에 따라 필드에 규칙을 적용할 수 있습니다. 또한 필드를 수정할 수 있는 사람을 제한하거나, 그룹에 적용되도록 규칙의 범위를 지정할 수 있습니다.

작업 항목 규칙이 단일 컬렉션으로 존재하지 않습니다. 규칙은 실제로 동적으로 생성되고 다른 데이터 원본에서 병합됩니다. 병합 논리는 동일한 규칙을 통합하는 간단한 논리이지만 충돌하는 규칙을 트리밍하지는 않습니다.

규칙 무시

일반적으로 모든 작업 항목은 사용자가 작업 항목을 수정할 때 규칙 엔진에서 유효성을 검사합니다. 그러나 특정 시나리오를 지원하기 위해 작업 항목 업데이트에 대한 바이패스 규칙을 할당받은 사용자는 프로젝트 수준 권한을 사용하여 규칙을 평가하지 않고 작업 항목을 저장할 수 있습니다.

규칙은 두 가지 방법 중 하나로 무시할 수 있습니다. 첫 번째는 작업 항목을 통해 REST API를 업데이트 하고 매개 변수를 bypassRules 로 설정하는 것입니다 true. 두 번째는 바이패스룰즈 모드(초기화 WorkItemStoreWorkItemStoreFlags.BypassRules)로 초기화하여 클라이언트 개체 모델을 사용하는 것입니다.

시스템 필드 및 사용자 지정 규칙

시스템 필드에는 System이 있습니다. 이름 참조 이름(예: System.TitleSystem.State).

영역 ID, 변경된 날짜, 만든 날짜, 만든 날짜, 만든 날짜, 상태이유 값을 사용하려면 다음 시스템 필드가 필요합니다.

규칙 엔진은 다음과 같은 경우를 제외하고 설정 조건 또는 작업을 시스템 필드로 제한합니다.

  • 상태이유 필드를 읽기 전용으로 만들 수 있습니다.
  • 제목, 할당 대상, 설명변경된 기준 필드에 대부분의 규칙을 적용할 수 있습니다.

상속 프로세스에 대한 규칙 사용자 인터페이스의 드롭다운 메뉴에 필드가 표시되지 않는 경우 이 이유입니다. 예를 들어 조건에 따라 영역 경로 (System.AreaPath)를 읽기 전용으로 설정하려고 하면 영역 경로 필드를 선택할 수 없습니다. 시스템 필드를 지정할 수 있더라도 규칙 엔진에서 규칙을 저장하지 못하도록 제한할 수 있습니다.

기본 및 복사 규칙

기본 및 복사 규칙은 작업 항목 필드의 값을 수정합니다. 기본값 지정, 필드 지우기, 필드 정의 요구 등과 같은 런타임 동작 및 제약 조건을 정의합니다.

사용자 또는 그룹 멤버 자격 규칙 제한에 설명된 대로 현재 사용자의 그룹 멤버 자격에 따라 이러한 규칙의 적용을 제한할 수 있습니다.

이러한 규칙 작업의 대부분은 조건 선택과 함께 적용할 수 있습니다.

상속된 프로세스 작업

설명

Copy the value from...

현재 필드에 복사할 값이 들어 있는 다른 필드를 지정합니다.

Clear the value of...

값이 포함된 필드를 지웁니다.

Use the current time to set the value of ...

현재 사용자의 시간 설정에 따라 필드의 시간을 설정합니다.

제약 조건 규칙

제약 조건 규칙은 필드 값을 변경하는 것을 제한합니다. 작업 항목의 유효한 상태를 정의합니다. 각 제약 조건은 단일 필드에서 작동합니다. 제약 조건은 작업 항목 저장의 서버에서 평가되며 제약 조건이 위반되면 저장 작업이 거부됩니다.

사용자 또는 그룹 멤버 자격 규칙 제한에 설명된 대로 현재 사용자의 그룹 멤버 자격에 따라 이러한 규칙의 적용을 제한할 수 있습니다.

이러한 규칙 작업의 대부분은 조건 선택과 함께 적용할 수 있습니다.

상속된 프로세스 작업

설명

Hide the field...
그룹 멤버 자격 조건을 선택한 경우에만 사용할 수 있습니다.

작업 항목 양식에 필드를 표시하지 않도록 지정하여 현재 사용자가 필드 값을 변경할 수 있는 기능을 기본적으로 제거합니다.

Make read-only

필드를 수정할 수 없도록 합니다. 특정 조건에서는 이 규칙을 적용할 수도 있습니다. 예를 들어 작업 항목이 닫힌 후에 필드를 읽기 전용으로 만들어서 데이터를 보고용으로 보존할 수 있습니다.
필드 기본값을 읽기 전용으로 지정하려면 [필드 편집] 대화 상자 [ 옵션] 탭에서 지정합니다.

Make required

사용자에게 필드 값을 지정하도록 요구합니다. 사용자는 모든 필수 필드에 값을 할당할 때까지 작업 항목을 저장할 수 없습니다.
필드 기본값을 지정하려면 [필드 편집] 대화 상자의 [옵션 ] 탭에서 지정합니다.

목록 선택

선택 목록은 사용자가 문자열 또는 정수 필드에 대해 선택할 수 있거나 선택할 수 없는 값을 정의합니다. 선택 목록에 정의된 값은 작업 항목 폼과 쿼리 편집기에 표시됩니다.

상속된 프로세스의 경우 선택 목록은 필드 편집 대화 상자를 통해 정의됩니다.

필드 편집 대화 상자

설명

선택 목록 필드의 정의

필드에 대해 허용 값 목록을 정의합니다. 작업 항목 폼과 쿼리 작성기의 필드 목록에서 선택 가능한 값만 허용됩니다. 이러한 값 중 하나를 선택해야 합니다.

사용자가 자신의 항목을 지정할 수 있도록 옵션 탭 내에서 사용자가 자신의 값을 입력할 수 있도록 허용 확인란을 선택합니다.

필드에 제안되는 값 목록을 정의합니다. 작업 항목 폼과 쿼리 작성기의 필드 목록에서 선택 가능한 값이 제안됩니다. 목록의 값뿐 아니라 다른 값도 입력할 수 있습니다.

조건부 필드 값 또는 변경 내용

조건부 규칙은 특정 값과 같거나 같지 않은 필드의 값에 따라 작업을 지정하거나 특정 필드 값이 변경되었거나 변경되지 않은 경우 작업을 지정합니다. 일반적으로 조건부 규칙은 먼저 조건부 규칙에 적용됩니다. 여러 조건부 규칙이 true로 평가되면 실행 순서는 When, WhenNot, WhenChanged, WhenNotChanged입니다.

하나의 필드에 여러 조건부 규칙을 지정할 수 있습니다. 그러나 하나의 조건부 규칙을 여러 필드에 지정할 수 없으며, 단일 필드에만 지정할 수 있습니다.

상속된 조건

설명

The value of ... (equals) [시기]

다른 필드에 특정 값이 있는 경우 현재 필드에 적용할 하나 이상의 규칙을 지정합니다.

A change was made to the value of ... [WhenChanged]

특정 필드의 값이 변경될 경우 현재 필드에 하나 이상의 규칙을 적용합니다.

The value of ... (not equals) [WhenNot]

다른 필드에 특정 값이 없을 경우 현재 필드에 하나 이상의 규칙을 적용합니다.

No change was made to the value of ... [WhenNotChanged]

특정 필드의 값이 변경되지 않은 경우 현재 필드에 하나 이상의 규칙을 적용합니다.


상속된 작업

설명

Clear the value of ...
Copy the value from ...
Make read-only ...
Make required ...
Set the value of ...
Use the current time to set the value of ...
Use the current user to set the value of ...

특정 필드에 대해 수행할 작업을 지정합니다.

사용자 또는 그룹 멤버 자격 규칙 제한

현재 사용자의 멤버 자격에 따라 규칙의 적용을 제한할 수 있습니다. 후자를 지정할 수 있지만 단일 사용자가 아닌 Azure DevOps 보안 그룹으로 규칙 범위를 지정하는 것이 좋습니다. 규칙의 범위를 여러 그룹으로 지정하려면 사용하려는 그룹 집합을 포함하는 부모 Azure DevOps 그룹을 만들어야 합니다.

프로세스 구현

발생할 수 있는 규칙 평가 문제를 방지하려면 Azure Active Directory 또는 Active Directory 보안 그룹이 아닌 Azure DevOps 보안 그룹을 지정합니다. 자세한 내용은 기본 규칙 및 규칙 엔진을 참조하세요.

다음 표에 표시된 것처럼 현재 사용자의 멤버 자격에 따라 규칙을 제한하려면 상속된 프로세스에 대해 두 가지 조건 중 하나를 지정합니다. 이러한 규칙은 Azure DevOps 2020 이상 버전에 대해 활성화됩니다.

적용 대상

규칙

조건

Current user is a member of group ...
Current user is not member of group ...

작업

Hide the field ...
Make read-only ...
Make required ...
Restrict the transition to state ...

토큰을 사용하여 사용자 또는 그룹 참조

ID 또는 사람 선택 필드는 사용자와 그룹을 모두 참조하는 값을 허용할 수 있습니다. 규칙을 그룹으로 제한하면 그룹의 도메인 또는 범위를 나타냅니다. 일부 값에는 토큰을 사용할 수 있습니다.

토큰의 예는 다음과 같습니다.

  • [ProjectName](예: [Fabrikam], [FabrikamFiber], [MyProject]
  • [OrganizationName](예: [fabrikam], [myorganization]
  • [CollectionName](예: [fabrikam], [myorganization]

프로젝트 또는 조직에 사용할 수 있는 범위에 대해 알아보려면 Project 설정>PermissionsGroups> 또는 조직 설정>PermissionsGroups> 페이지로 이동하여 필요에 따라 목록을 필터링할 수 있습니다. 예를 들어 다음 이미지는 Azure DevOps 기반으로 필터링된 목록에 대한 처음 4개의 항목을 보여 있습니다. 자세한 내용은 프로젝트 수준 권한 변경 또는 프로젝트 컬렉션 수준 권한 변경을 참조하세요.

Screenshot of filtered Permissions groups list.

기본 보안 그룹에 대한 자세한 내용은 사용 권한 및 그룹을 참조하세요.

규칙 평가

작업 항목을 수정하는 사용자의 사용자 또는 그룹 멤버 자격에 따라 조건을 지정하는 규칙은 두 가지 방법 중 하나로 평가됩니다. 규칙을 평가할 때 애플리케이션은 해당 사용자가 지정된 그룹의 구성원인지 여부를 확인하여 규칙이 현재 사용자에게 적용되는지 여부를 결정해야 합니다.

  • 웹 포털, REST API 또는 azure boards 명령에서 작업 항목을 수정할 때 Azure Active Directory 또는 Active Directory에 대한 요청이 수행됩니다. 이 작업에 문제가 발생하지 않습니다.
  • WIT 클라이언트 개체 모델을 사용하여 Visual Studio, Team Explorer Everywhere, Excel 또는 기타 사용자 지정 도구에서 작업 항목을 수정하는 경우 멤버 자격 평가 요청은 클라이언트 캐시를 기반으로 합니다. 클라이언트 캐시는 Active Directory 그룹을 인식하지 않습니다.

참고

GIT를 사용하는 프로젝트에 대한 Visual Studio 2019 팀 탐색기가 REST API를 사용하도록 다시 작성되었습니다.

사용자가 다양한 클라이언트에서 작업 항목을 업데이트하는 문제를 방지하려면 Active Directory 그룹 대신 Azure DevOps 보안 그룹을 지정합니다. Active Directory 그룹에 해당하는 Azure DevOps 보안 그룹을 쉽게 만들 수 있습니다. 방법을 알아보려면 사용자 또는 그룹 추가 또는 제거를 참조하고 보안 그룹을 관리합니다.

참고

WIT 클라이언트 OM은 더 이상 사용되지 않습니다. 2020년 1월 1일부터 Azure DevOps Services 및 2020년 Azure DevOps Server 대해 작업할 때 더 이상 지원되지 않습니다.

규칙이 평가되는 순서

규칙은 일반적으로 나열되는 순서대로 처리됩니다. 그러나 모든 규칙을 평가하기 위한 전체 시퀀스는 완전히 결정적이지 않습니다.

이 섹션에서는 조건부, 복사 및 기본 규칙을 적용할 때 예상되는 동작 및 상호 작용에 대해 설명합니다.

다음 단계에서는 올바른 순서로 Azure DevOps 수행하는 상호 작용과 작업 항목 양식의 사용자가 수행하는 상호 작용을 보여 줍니다. 1, 8 및 13단계만 사용자가 수행합니다.

  1. 웹 포털, Visual Studio/팀 탐색기 또는 Team Explorer Everywhere 같은 Azure DevOps 클라이언트에서 사용자가 새 작업 항목을 만들거나 기존 작업 항목을 편집합니다.

  2. 필드 기본값을 입력합니다. 모든 필드에 대해 조건부 절의 일부가 아닌 필드에 할당된 모든 기본값을 적용합니다.

  3. 필드 값을 복사하거나 설정합니다. 모든 필드에 대해 모든 규칙을 적용하여 값을 복사하거나 조건부 절에 포함되지 않은 필드의 값을 설정합니다.

  4. 일치하는 When 조건부 규칙이 있는 모든 필드에 대해 필드 값을 설정하거나 복사하는 규칙을 적용합니다.

  5. 일치하는 조건부 규칙이 아닌 경우 모든 필드에 대해 필드 값을 설정하거나 복사하는 규칙을 적용합니다.

    시스템은 항상 When Not 규칙 전에 When 규칙을 처리합니다.

  6. 1단계 이후 값이 변경되고 변경 시 규칙이 포함된 모든 필드에 대해 필드 값을 설정하거나 복사하는 규칙을 적용합니다.

  7. 사용자가 편집을 시작하도록 허용합니다.

  8. 사용자가 필드 값을 변경한 다음 포커스를 필드에서 이동합니다.

  9. 새 값과 일치하는 해당 필드에 대한 When 규칙을 처리 합니다.

  10. 새 값과 일치하는 해당 필드에 대한 When Not 규칙을 처리합니다.

  11. 새 값과 일치하는 해당 필드에 대해 변경된 경우 규칙을 처리합니다.

  12. 사용자에게 편집 기능을 반환합니다.

  13. 사용자가 변경 내용을 데이터 저장소에 저장합니다.

  14. 모든 필드에 대해 조건부 규칙에 따라 직접 또는 간접적으로 필드에 대해 정의된 모든 Use the current time to set the value of ... 작업을 적용합니다.