Dataverse 로우코드 플러그 인(프리뷰)의 예시
[이 항목은 시험판 설명서이므로 변경될 수 있습니다.]
이러한 예시 플러그 인의 목표는 플러그 인을 앱에 통합하여 시작할 수 있도록 돕는 것입니다. 작성 환경에는 Dataverse 내부 또는 외부에서 작업을 트리거할 수 있는 Power Fx 식으로 지원되는 Microsoft Dataverse 사용자 지정 API 작성이 포함된다는 것을 이해하게 될 것입니다.
중요
- 이는 프리뷰 기능입니다.
- 프리뷰 기능은 생산용으로 만들어진 것이 아니므로 기능이 제한될 수 있습니다. 이런 기능은 공식 릴리스 전에 사용할 수 있으므로 고객이 조기에 액세스하고 피드백을 제공할 수 있습니다.
전제 조건
데이터 이벤트에 대한 예시 플러그 인 중 하나를 사용하려면 Dataverse 가속기 앱이 환경에 설치되어 있어야 합니다. 추가 정보: 로우코드 플러그 인 생성을 위한 전제 조건
참고
이메일 템플릿은 특정 테이블에서만 사용할 수 있습니다. 추가 정보: 이메일용 템플릿 만들기
음수가 아닌 값을 반환
이 예에서는 Abs() 함수를 사용하여 인수의 음수가 아닌 값을 반환합니다. 숫자가 음수이면 Abs
함수는 해당 양수를 반환합니다.
Dataverse Accelerator 앱을 실행하고 명령 모음에서 새 작업 > 인스턴트 플러그 인을 선택합니다.
수식 이름 및 설명과 같은 표시 이름을 제공합니다.
Out
매개 변수를 만들어 문자열과 같이 의미 있는 예상 동작의 유효성을 검사합니다. 필요에 따라 입력 매개 변수를 사용하여 테스트를 더 쉽게 수행할 수 있으며, 이는 수식에 적합합니다.수식 편집기에서
Out
매개 변수를 중괄호로 묶습니다.{Out: "" }
수식을 테스트하는 식을 입력합니다.
- Intellisense가 수식을 허용하는지 확인합니다(텍스트가 연한 파란색으로 변함).
- 예를 들어 결과의 유효성을 검사하는 데 도움이 되는 출력을 제공하는 식을 구현합니다.
{Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 ) }
다음을 선택한 후 저장을 선택합니다.
테스트를 선택하여 수식을 테스트합니다. 출력 매개 변수를 사용하여 결과를 검증하십시오.
입력 유효성 검사 및 사용자 지정 오류
중복 검색
사용자 지정 오류 메시지를 발생시키는 중복 오류 감지와 같은 서버 측 입력 유효성 검사를 구현합니다.
- Dataverse Accelerator 앱을 실행하고 명령 모음에서 새 작업 > 자동화된 플러그 인을 선택합니다.
- 이름 상자에 중복 확인을 입력합니다.
- 테이블에 연락처를 선택합니다.
- 행이 다음과 같을 때 이 플러그 인 실행에서 생성됨을 선택합니다.
- 수식 상자에 다음 수식을 입력합니다.
If( !IsBlank(LookUp([@Contacts],'Last Name'=ThisRecord.'Last Name' && 'First Name'=ThisRecord.'First Name')),
Error("You have existing contacts with the same first name and last name")
)
- 저장을 선택합니다.
플러그 인 테스트
- 플러그 인을 테스트하려면 테이블 지정 단계에 따라 연락처 테이블을 사용하여 캔버스 앱을 만듭니다
- 연락처 행을 만듭니다.
- 이전 단계에서와 동일한 이름으로 다른 연락처를 만듭니다.
- 중복 레코드가 발견되었음을 알리는 메시지가 표시됩니다. 오류 메시지 프롬프트에서 무시하고 저장을 선택합니다.
이름과 성이 같은 연락처가 두 개 있습니다라는 사용자 지정 오류 메시지가 표시됩니다.
데이터 유효성 검사
ErrorKind 열거를 사용하여 특정 유형의 오류를 표시합니다.
새 자동화 플러그 인을 생성합니다.
다음 값을 제공합니다.
- 이름: 입력 유효성 검사
- 설명: 유효한 날짜를 확인하고 잘못된 경우 오류를 발생시킵니다
- 테이블: 약속
- 행이 다음과 같은 경우 이 플러그인 규칙을 실행: 업데이트됨
아래 수식을 입력합니다.
If(ThisRecord.'Due Date' < Now(), Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" }) );
고급 옵션에서 실행 시기를 사전 작업으로 설정합니다. 잘못된 데이터를 방지하기 위해 데이터를 저장하기 전에 이 규칙을 실행하려고 합니다.
저장을 선택합니다.
사용자 지정 오류에 대해 자세히 알아보려면 Error() 함수로 이동하세요.
데이터 이벤트를 기반으로 이메일 보내기
필수 구성 요소:
- 사용자 환경에 대해 서버 쪽 동기화가 설정되었습니다. 추가 정보: 이메일, 약속, 연락처 및 작업의 서버 쪽 동기화 설정
- 이메일 템플릿.
이메일 템플릿 예시
다음은 SenMail 기반 데이터 이벤트에 대해 생성할 수 있는 이메일 템플릿 예입니다.
- 템플릿 유형: 전역
- 이름: 주문 감사합니다
- 설명: 이 템플릿을 사용하여 주문한 고객에게 감사를 표합니다.
- 제목:
Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
- 본문: 이 코드를 사용하세요.
Hello {!Sales Order:First Name;},
Order Type: {! Sales Order: Order Type;},
Location Type: {! Sales Order: Location Type;},
Address1: {! Sales Order: Address 1;},
Address2: {! Sales Order: Address 2;},
Preferred Service Start Date 1: {! Sales Order: Preferred Service Start Date;},
Next Step- We take upto 48 hrs to schedule an in-person and will notify you as soon as we have a In-person Technician allocated at your site. For any questions, please contact us at 1-800-CON-SOLAR
Yours Sincerely,
Contoso Sales
자동화된 플러그 인 생성
- Dataverse Accelerator 앱을 실행한 다음 자동화된 플러그 인에서 +새 플러그 인을 선택합니다.
- 다음 정보를 입력합니다.
이름: SendEmailUponCreate
테이블: SalesOrder인 판매 주문의 논리적 테이블 이름을 선택합니다. 이 이벤트는 판매 주문 테이블을 기반으로 합니다.
다음 행으로 이 플러그인을 실행: 생성됨
수식: 아래 코드를 수식 상자에 붙여 넣습니다. SendEmailFromTemplate 함수에 대한 자세한 내용은 SendEmailFromTemplate 작업을 참조하세요.
XSendEmailFromTemplate( LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template', ThisRecord, LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email] )
- 고급 > 사후 작업을 선택합니다.
- 저장을 선택합니다.
플러그 인이 성공적으로 저장되었습니다라는 확인 메시지가 나타납니다.
인스턴트 작업을 기반으로 앱 내 알림 보내기
앱 내 알림을 통해 제작자는 모델 기반 앱의 사용자를 위해 상황에 맞는 실행 가능한 알림을 구성할 수 있습니다.
앱 내 알림을 보내는 로우코드 플러그 인 만들기
- Dataverse 가속기 앱을 실행한 다음 인스턴트 플러그 인에서 +새 플러그 인을 선택합니다.
- 다음 정보를 입력하고 다음을 선택합니다.
- 이름: NotifyTechnican1
- 설명: 이 인스턴트 플러그 인은 앱 사용자에게 알립니다.
- 정의 페이지에서 다음 데이터 유형으로 입력 매개 변수를 생성합니다.
- OrderID: 문자열
- TechnicianEmail: 문자열
- 수식. 수식 상자에 다음 코드를 붙여 넣습니다. 이 기능에 대한 자세한 내용은 SendAppNotification 작업을 참조하세요.
XSendAppNotification( "New service", LookUp(Users,'Primary Email'=TechnicianEmail), "You have a new solar panel installation scheduled on "& LookUp('Scheduling Results','OrderId'=OrderID).'ServiceDate'&" in "& LookUp('Service Orders','Order Number'=OrderID).City &". Contact the coordinator with any questions.", [ XCreateSidePaneActionForEntity( "View order", OrderID, "Sales Order", "cr8b8_serviceorder1", LookUp('Service Orders','Order Number'=OrderID).'Service Order' ) ] )
- 다음을 선택합니다.
- 요약 페이지에서 저장을 선택합니다.
앱 내 알림 인스턴트 작업 호출
- 캔버스 앱을 선택한 다음 명령 모음에서 편집을 선택합니다(또는 새 앱 만들기).
- 왼쪽 탐색 창에서 화면을 선택하거나 새로 만듭니다.
- 삽입 메뉴에서 텍스트 기술자에게 알림을 사용하여 페이지에 버튼을 추가합니다.
- 버튼을 선택하고 fx 수식 입력줄에 다음을 입력합니다. 여기서 DataCardValue17은 주문 ID가 포함된 열이고 DataCardValue15는 기술자의 이메일 주소가 포함된 열입니다. 이 예에서는 Service Order App이라는 캔버스 앱이 사용됩니다.
Environment.cr8b8_Notifytechnician1({ OrderID: DataCardValue17.Text, TechnicianEmail: DataCardValue15.Text }); Notify("The technician was notified!", NotificationType.Success, 2000);
- 변경 사항을 저장하고 게시합니다.
앱에서 기술자에게 알림 작업을 선택하면 서비스 주문에 할당된 기술자에게 앱 내 알림이 전송됩니다. 알림에 대한 작업은 측면 창에서 서비스 주문 세부 정보를 엽니다.
MSN Weather 커넥터를 사용한 샘플 인스턴트 플러그 인
이 플러그 인은 MSN Weather 커넥터를 사용하여 특정 위치의 현재 날씨를 반환합니다.
필수 구성 요소:
- 로우코드 플러그 인 생성을 위한 전제 조건
- MSN Weather 커넥터는 해당 환경에서 허용됩니다.
환경에서 아직 사용할 수 없는 경우 MSN Weather에 대한 연결 참조를 생성합니다.
코드 조각 복사:
IntelliSense를 사용하여 수식 편집을 완료하고 필요에 따라 커넥터 응답 속성을 사용합니다.
저장
팁
응답이 가질 수 있는 다양한 속성에 액세스하려는 경우 With() 함수를 사용하여 한 작업의 전체 응답을 캡처합니다. 아래 예에는 입력 매개 변수 Location
(문자열)과 출력 매개 변수 Out
(문자열)이 있습니다.
With({ /* Capture current weather response from connector */
c: new_MsnWeather.CurrentWeather( Location, "Imperial" ).responses.weather.current
},{ /* Return concatenated weather details */
Out: "Current temp: " & c.temp & " degrees. Feels like " & c.feels & " degrees. Wind speed is " & c.windSpd & " mph."
})
모범 사례
자동화된 로우코드 플러그 인의 무한 루프 오류 처리
패치가 플러그 인과 동일한 테이블에서 발생하는 '업데이트' 이벤트 시 자동화된 플러그 인에 패치 설명을 작성하지 마세요. 이로 인해 무한 루프 및 플러그 인 실행 실패가 발생합니다.
문제가 있는 패턴: Patch()
수식을 사용하면 또 다른 업데이트가 트리거됩니다.
권장 패턴: 이 문제를 방지하려면 Set()
수식을 대신 사용하세요.