사용자 지정 리소스 제약 조건으로 Universal Resource Scheduling 확장

Universal Resource Scheduling은 Dynamics 365 Field Service 및 Project Service Automation을 기반으로 하는 스케줄링 엔진으로서, 작업에 적합한 리소스를 예약하기 위한 광범위한 리소스 일치 기능을 제공합니다. Universal Resource Scheduling 솔루션이 Field 및 Project Service와 함께 제공되는 동안 Universal Resource Scheduling은 Dynamics 365의 모든 작업 흐름을 예약하는 데도 사용할 수 있습니다. 이 문서에서는 기본 제공 리소스 제약 조건을 구현하는 방법과 사용자 지정 리소스 제약 조건을 사용하여 Universal Resource Scheduling을 사용자 지정하는 방법을 살펴보겠습니다.

리소스, 요구 사항, 제약 조건

리소스

Universal Resource Scheduling의 핵심은 리소스(bookableresource) 엔터티입니다. 예약(bookableresourcebooking) 레코드가 생성되면 리소스 레코드와 연결됩니다. 올바른 리소스가 선택되었는지 확인하기 위해 Universal Resource Scheduling은 리소스를 분류하기 위한 많은 기본 제공 필터 및 제약 조건을 제공합니다. 리소스가 사용자, 연락처, 거래처, 장비 등을 나타내는 리소스 유형, 숙련된 기술로 리소스를 필터링하는 특성, 특정 지역에 자원을 할당하는 지역, 조직 계층 구조를 모델링 하는 조직 단위 등의 예가 있습니다..

리소스 레코드와 연결된 제약 조건은 특성 또는 다른 엔터티와의 관계를 통해 모델링됩니다. 예를 들어, 이름 및 리소스 유형은 리소스 엔터티의 특성입니다. 리소스 특성 및 리소스 지역은 둘 이상의 리소스가 연결될 수 있으므로 하위 관계입니다. 이러한 엔터티는 리소스와 특성/지역 엔터티 모두에 대해 하위 관계입니다. 조직 구성 단위는 조직 구성 단위 엔터티에 대한 리소스 엔터티의 조회 특성입니다.

요구 사항

Universal Resource Scheduling의 또 다른 중요한 엔터티는 리소스 요구 사항(msdyn_resourcerequirement) 엔터티입니다. 요구 사항 엔터티는 작업을 수행하기 위한 요구 사항을 기록합니다. 요청된 작업에 대한 매개 변수(예: 출발 및 종료 날짜 필드)를 캡처하여 작업을 수행할 수 있는 기간을 제한합니다. 작업이 수행될 것으로 예상되는 기간에 대한 기간 필드입니다. 필요한 작업의 위치를 나타내는 작업 위치입니다. 또한 요구 사항 엔터티는 리소스 제약 조건을 캡처하여 이 요구 사항에 맞게 리소스를 충족하고 예약을 제한할 수 있습니다. 리소스 엔터티와 마찬가지로 리소스 제약 조건은 요구 사항 엔터티의 특성 또는 다른 엔터티와의 관계로 표현됩니다. 지역은 요구 사항 엔터티에서 작업이 수행되는 지역을 나타내는 지역 엔터티에 대한 조회 특성이므로 동일한 지역에서 리소스를 찾아야 합니다. 요구 사항 특성은 작업을 완료하는 데 필요한 기술을 표현하는 특성 엔터티에 대한 요구 사항과 관련된 하위 관계이므로 요구 사항은 일치하는 기술을 가진 리소스에만 일치시킬 수 있습니다.

Universal Resource Scheduling에 포함된 제약 조건

다음은 Universal Resource Scheduling과 함께 제공되는 제약 조건의 목록입니다.

  • 특성 - 리소스가 가지고 있는 기술을 모델링하는 데 사용할 수 있습니다. 또한 리소스의 숙련도가 각 기술에 얼마나 능숙한지 평가하기 위한 선택적 등급 값을 지원합니다.
  • 범주 - 리소스를 범주에 연결할 수 있습니다.
  • 지역 - 지역에 리소스를 할당합니다.
  • 조직 구성 단위 - 조직 계층 구조를 모델링합니다.
  • 리소스 유형 - 리소스의 유형을 정의합니다.
  • 팀 - 리소스가 구성원으로 있는 팀입니다.
  • 사업부 - 리소스가 속해 있는 사업부입니다.

일정 게시판에서 필터링

일정 게시판에는 리소스 목록과 할당된 예약 목록이 표시됩니다. 일정 게시판의 필터 패널을 사용하면 제약 조건에 따라 리소스 목록을 필터링할 수 있습니다(예: 리소스 종류 드롭다운에서 사용자의 리소스 종류를 선택하면 리소스 목록이 사용자 유형으로 필터링됩니다). 마찬가지로 특성 또는 지역을 일치시켜 리소스를 필터링할 수 있습니다.

필터 패널을 사용하여 리소스를 필터링하는 것은 일치하는 리소스를 찾는 방법 중 하나입니다. 이 방법은 특정 제약 조건 집합과 일치하는 리소스 목록을 수동으로 표시하려는 경우에 사용됩니다.

일정 도우미를 사용하여 사용 가능한 리소스 찾기

일정 게시판의 하단에서 요구 사항 레코드의 목록을 찾을 수 있습니다. 그 중 하나를 선택하고 가용성을 찾도록 선택할 수 있습니다. 이 작업을 수행하면 일정 도우미가 열립니다. 일정 도우미는 선택한 요구 사항 레코드에 캡처된 제약 조건을 사용하여 예약 가능한 일치하는 리소스를 찾습니다. 요구 사항에 대한 제약 조건과 일치하는 리소스에만 필요에 따라 요청된 기간에 사용할 수 있는 리소스가 게시판에 표시됩니다.

Dynamics 365 목록 보기 또는 양식에서 요구 사항 엔터티 및 기타 예약 가능한 엔터티에 있는 "예약" 리본 단추를 통해 비슷한 환경을 사용할 수 있습니다. "예약"을 클릭하면 선택한 요구 사항 레코드의 제약 조건과 일치하는 리소스를 보여주는 일정 도우미가 열립니다.

필터 패널을 사용하여 수동으로 리소스를 필터링하는 이전에 언급한 일정 게시판 모드와 달리 일정 도우미 모드에서는 필터 패널이 자동으로 요구 사항 레코드의 리소스 제약 조건을 채우고 리소스가 표시됩니다.

제약 조건 일치의 작동 방식

제약 조건 엔터티

일부 제약 조건은 리소스 엔터티에서 직접 특성으로 지정되고 다른 제약 조건은 관계를 통해 정의됩니다. 제약 조건이 두 번째, 마스터 엔터티를 참조하는 경우 관계가 필요합니다.

리소스 레코드와 관련 지역 및 특성 제약 조건을 살펴보겠습니다.

첫째, 마스터 레코드입니다. 지역 엔터티에는 지역이 저장되어 있습니다.

지역
뉴욕
뉴저지
시애틀

또한 특성 엔터티에는 다음과 같은 특성이 있습니다.

특징
프로젝트 관리자
디자이너
재무 분석가

조직 구성 단위 엔터티:

조직 구성 단위
Contoso US
Contoso EU

마지막으로 리소스 엔터티가 있습니다.

리소스 리소스 유형 조직 구성 단위
Jorge Galt User Contoso US
Abraham McCormick 연락처 Contoso EU

단일 리소스 레코드는 위의 리소스 유형 및 조직 구성 단위와 같은 단일 값 제약 조건을 캡처하는 데 사용됩니다. 리소스를 여러 지역 또는 특징 레코드에 연결하려는 경우 이러한 연결을 저장하려면 다대다(N:N) 관계의 세 번째 엔터티를 사용해야 합니다.

리소스 지역 엔터티를 사용하여 리소스에 대한 여러 지역을 연결합니다.

리소스 지역 레코드:

리소스 지역
Jorge Galt 뉴욕
Jorge Galt 뉴저지
Abraham McCormick 시애틀

리소스에 대한 여러 특징을 저장하는 리소스 특징 엔터티입니다.

리소스 특징 레코드:

리소스 특징
Jorge Galt 디자이너
Abraham McCormick 프로젝트 관리자
Abraham McCormick 재무 분석가

리소스와 마찬가지로 요구 사항 레코드는 단일 값 제약 조건을 캡처하고 하위 레코드는 다중값 제약 조건을 저장합니다.

요구 사항 엔터티는 다음과 같습니다.

요구 사항 기간 지역
작업 1 1시간 뉴욕
작업 2 1시간 시애틀

요구 사항 특징 엔터티:

요구 사항 특징 레코드:

요구 사항 특징
작업 1 디자이너
작업 2 프로젝트 관리자
작업 2 재무 분석가

경우에 따라 요구 사항에 조회 특성으로 모델링된 제약 조건이 있을 수 있는 반면 리소스는 N:N 테이블에 일치하는 특성을 저장할 수 있습니다. 예를 들어, 요구 사항의 경우 지역 제약 조건은 지역 엔터티에 대한 조회 특성입니다. 요구 사항은 작업에 대한 수요와 작업이 수행되는 지역을 캡처합니다. 그러나 리소스 레코드는 많은 지역 레코드에 연결될 수 있습니다.

제약 조건 속성 모음

사용자가 필터 패널에서 값을 선택하고 검색 단추를 선택하면 해당 값이 리소스 일치 API로 전송됩니다. 다중값 제약 조건의 경우 필터 패널은 마스터 엔터티 영역 및 특성의 데이터를 표시하고 제약 조건 속성 모음에 선택한 값을 포함합니다.

다음은 리소스 일치 API로 전송되는 제약 조건이 있는 샘플 속성 모음입니다.

이름 Value
ResourceType User
Territories 뉴욕
뉴저지

이렇게 하면 리소스 일치 API를 통해 뉴욕 또는 뉴저지 지역과 연결 된 사용자 유형의 리소스를 찾을 수 있습니다.

일정 도우미에 있는 경우 요구 사항 검색 제약 조건 API를 통해 요구 사항 레코드에서 제약 조건을 먼저 검색합니다. 그러면 검색된 제약 조건이 필터 패널에 미리 채워지고 리소스 일치 API로 보내집니다.

요구 사항 제약 조건 검색 API는 요구 사항 레코드 및 모든 관련된 하위 제약 조건(예: 요구 사항 특성)을 쿼리합니다. 선택한 요구 사항에 캡처된 모든 리소스 제약 조건을 표현하는 제약 조건 속성 모음으로 응답합니다.

요구 사항 검색 제약 조건 API의 샘플 응답은 다음과 같습니다.

이름 Value
Requirement 작업 2
Duration 1시간
Territories 시애틀
Characteristics 프로젝트 관리자
재무 분석가

리소스 일치 API는 일치하는 리소스에 대한 제약 조건 속성 모음 및 쿼리를 입력으로 수신합니다. 그러면 일치하는 리소스가 일정 게시판 또는 일정 도우미에 표시됩니다.

리소스 일치에 사용되는 엔터티 요약

  • 샘플 마스터 엔터티
    • 지역 - 제약 조건으로 참조됨
    • 특징 - 제약 조건으로 참조됨
    • 리소스 - 예약에 할당됨
    • 리소스 지역 - 리소스를 지역에 연결
    • 리소스 특징 - 리소스를 특징에 연결
  • 샘플 트랜잭션 엔터티
    • 요구 사항 - 작업 및 참조 지역에 대한 수요 캡처
    • 요구 사항 특징 - 요구 사항을 특징에 연결

리소스 일치 흐름 요약

  • 수동 필터링. 필터 패널 > 리소스 일치 API

    1. 사용자가 수동으로 필터 패널에 제약 조건을 추가
    2. 제약 조건이 리소스 일치 API로 전송됨
    3. 필터링된 리소스 목록이 표시됨
  • 요구 사항 필터링. 요구 사항 제약 조건 검색 API > 필터 패널 > 리소스 일치 API

    1. 사용자가 요구 사항 레코드에 대한 가용성(일정 게시판 내 또는 리본의 예약 단추)을 찾습니다.
    2. 제약 조건은 요구 사항 검색 제약 조건 API를 통해 검색되고 필터 패널에 표시됩니다.
    3. 제약 조건이 리소스 일치 API로 전송됨
    4. 필터링된 리소스 목록이 표시됨

사용자 지정 제약 조건을 사용하여 Universal Resource Scheduling 확장

Universal Resource Scheduling은 사용자 지정 리소스 제약 조건으로 확장할 수 있습니다. 제약 조건을 확장하는 것은 Universal Resource Scheduling으로 빌드하는 것과 동일한 방식으로 작동하며, Dynamics 365에서 특성과 관계로 모델링됩니다.

각 단계에 필요한 코드 샘플이 포함된 단계별 가이드는 Universal Resource Scheduling 확장: 언어별 리소스 찾기 - 단계별 가이드에 설명되어 있습니다.

사용자 지정 제약 조건

예제 시나리오로 "언어"를 사용하겠습니다. 조직은 자신이 말하는 언어로 리소스를 필터링하려고 합니다. 또한 요구 사항 레코드를 작업에 필요한 언어로 캡처하려고 합니다. 이 제약 조건은 기본 제공 지역 제약 조건과 비슷한 패턴을 따릅니다. 새 마스터 엔터티 언어는 리소스가 말할 수 있는 다양한 언어를 저장합니다. 다대다 관계 엔터티를 통해 리소스 레코드를 여러 언어에 연결할 수 있습니다. 요구 사항 엔터티에서 두 개의 새 조회 특성 Required LanguageSecondary Language를 만듭니다. 요구 사항에 대해 사용 가능한 리소스를 찾을 때 Required Language 또는 Secondary Language와 연결된 리소스만 표시됩니다.

여기서는 사용자 지정 언어 제약 조건을 설명합니다. 첫째, 새 언어 엔터티가 있습니다.

Language
영어
스페인어

그리고 새로운 리소스 언어 다대다 하위 엔터티:

리소스 Language
Jorge Galt 영어
Abraham McCormick 영어
Abraham McCormick 스페인어

다음은 이 요구 사항과 일치하도록 리소스가 말해야 하는 언어를 나타내는 필수 언어 및 보조 언어인 두 가지 새로운 특성을 가진 요구 사항 엔터티입니다.

요구 사항 기간 지역 필수 언어 보조 언어
작업 1 1시간 뉴욕 영어 ---
작업 2 1시간 시애틀 스페인어 영어

확장성 지점

위에서 설명한 리소스 일치 흐름에 따라 사용자 지정 제약 조건이 작동하도록 수정해야 하는 확장성 지점이 있습니다.

  1. 요구 사항 제약 조건 검색 API

    사용자가 요구 사항에 대한 가용성을 찾으면 새 제약 조건이 검색되므로 API는 새로운 필수 언어 및 보조 언어 특성을 읽어야 합니다.

  2. 필터 패널

    사용자는 필터 패널의 언어 레코드 목록에서 선택하여 일치하는 리소스를 필터링할 수 있어야 합니다. 요구 사항에 대한 가용성을 찾을 때 필터 패널은 언어 목록에서 미리 선택된 요구 사항 레코드에서 필요한 언어 및 보조 언어를 표시해야 합니다.

  3. 리소스 일치 API

    API는 입력으로 새 언어 제약 조건을 얻게 됩니다. 선택한 언어를 말하는 리소스만 반환해야 합니다.

확장 가능한 쿼리

내부적으로 요구 사항 제약 조건 검색 API(위의 1번) 및 리소스 일치 API(위의 3번)는 fetchxml을 사용하여 Dynamics 365에서 데이터를 쿼리합니다. 요구 사항 제약 조건 검색 API는 요구 사항 레코드 및 해당 하위 제약 조건(예: 요구 사항 특성 등)을 검색하는 여러 쿼리를 실행합니다. 입력으로 전달된 리소스 제약 조건을 기반으로 하는 리소스 일치 API는 올바른 FetchXML 쿼리를 동적으로 생성하므로 지정된 FetchXML 기준과 일치하는 리소스 레코드만 Dynamics 365에서 반환됩니다.

Universal Resource Scheduling에 대한 2017년 7월 업데이트에서는 확장 가능한 리소스 일치를 지원하기 위해 범용 FetchXML(UFX)이 도입되었습니다. UFX가 FetchXML에 추가하는 두 가지 중요한 기능은 다음과 같습니다. 1) 여러 결과 집합, 단일 UFX 쿼리는 여러 엔터티의 결과를 반환할 수 있으며 2) 동적 FetchXML, UFX 쿼리는 입력 데이터를 기반으로 FetchXML을 동적으로 구성할 수 있습니다.

UFX를 사용하면 요구 사항 레코드와 모든 하위 레코드를 쿼리하기 위해 단일 쿼리를 생성할 수 있습니다. 요구 사항 제약 조건 검색 API는 사용자 지정 가능한 UFX 쿼리를 실행하여 요구 사항 및 해당 하위 제약 조건을 검색합니다. 또한 사용자 지정 제약 조건 레코드를 검색하도록 쿼리를 사용자 지정할 수 있습니다.

요구 사항 제약 조건 검색 API에서 반환되는 제약 조건 속성 모음은 리소스 일치 API에 대한 입력으로 전달됩니다. API는 사용자 지정 가능한 UFX 쿼리를 실행합니다. UFX를 사용하면 쿼리는 입력 제약 조건을 사용하여 올바른 FetchXML을 동적으로 생성하여 일치하는 리소스를 찾습니다. 이 UFX 쿼리도 사용자 지정 제약 조건과 일치하는 리소스만 반환하도록 적절한 FetchXML을 생성하도록 수정할 수 있습니다.

확장 가능한 필터 레이아웃 및 리소스 템플릿

Universal Resource Scheduling에 대한 2017년 7월 업데이트에서 필터 패널(위의 2번)은 XML 레이아웃 정의를 통해 사용자 지정을 지원하도록 업데이트되었습니다. 새 레이아웃은 드롭다운 컨트롤을 지원하여 마스터 엔터티 및 일반 number, datetime, checkbox 컨트롤의 레코드 목록을 표시합니다. 사용자가 사용자 지정 제약 조건 엔터티에서 레코드를 선택할 수 있도록 레이아웃을 수정할 수 있습니다. Universal Resource Scheduling과 함께 제공된 것과 같이, 사용자 지정 제약 조건은 리소스 일치 API에 대한 입력으로 전달됩니다.

2017년 7월 업데이트에서 사용 가능해진 다른 클라이언트 쪽 확장성 지점은 리소스 셀입니다. 리소스 셀은 사용자 지정 가능한 Handlebars.js 템플릿을 통해 렌더링됩니다. 리소스 일치 API의 결과는 템플릿에서 사용할 수 있습니다. 따라서 리소스 일치 API에 의해 실행되는 쿼리를 사용자 지정하면 리소스 셀에 사용자 지정 데이터를 렌더링할 수 있습니다.

각 단계에 필요한 코드 샘플이 포함된 단계별 가이드는 Universal Resource Scheduling 확장: 언어별 리소스 찾기 - 단계별 가이드에 설명되어 있습니다.

추가 참고 사항

  • 예약 가능한 엔터티가 리소스 요구 사항 대신 연결된 요구 사항 그룹을 사용하는 경우 현재 필터 레이아웃을 구성할 수 없습니다.

참조

범용 Fetch XML

Universal Resource Scheduling 확장성 릴리스 노트