-
Power FX 로우코드 플러그인Power Platform 2023. 7. 25. 15:13728x90
Power FX 로우코드 플러그인
Dataverse에서 새로운 프러그인 방식을 제공하게 되었다. 기존에는 .NetFramework로 제작한 플러그인을 통하여만 Dataverse를 조작할 수 있는 플러그인을 제작할 수 있었는데 이제 Power FX 수식을 이용해 만들 수 있도록 추가된다. 현제 간단한 사용방법에 대하여 알아보자. Power Apps나 Power Automate에서 사용했던 사람이라면 크게 어려움없이 사용할 수 있을것이다. 현재는 Power Apps, Power Automate 웹, 그리고 api를 이용해 사용할 수 있다. 공식문서
사용설정
- AppSource에서 로그인 후 'Get it now' 클릭 그후 팝업창에서도 'Get it now'를 다시 클릭
- 사용하려는 환경울 선택후 클릭
- 'Dataverse Accelerator' 가 설치되는것을 확인
- 이후 Power Apps 앱에서 'Dataverse 가속기 앱'이 설치된 것을 확인한다.
- 환경변수의 값을 업데이트하라고 뜨는데 Dataverse 플러그인을 작성시 만들어지는 환경변수 등이 저장되는 솔루션의 이름 값을 입력하자(없는 값을 입력하면 기본 솔루션에 저장된다).
인스턴트 플러그인 생성
인스턴트 플러그인은 Power Platfrom에서 사용할 수 있는 API를 생성한다. 직접 호출해서 사용하거나 캔버스앱, Power Automate 등에서 사용할 수 있다.
- 'Dataverse 가속기 앱'을 열고 '인스턴트 플러그인' 에서 '+ 새 플러그 인' 클릭
- 사용될 이름과 설명을 입력한다. (고급 옵션에서는 외부 데이터 원본을 연결 참조를 통해 사용할 수 있게 하는데 현제는 Azure DB만 사용이 가능하다.)
- 매개 변수의 입출력, 그리고 사용할 식을 입력한다.
입력 매개변수에서 레이블에 입력변수의 이름을 입력하고 데이터 형식을 선택한다. 예제에서는 VarContactId 를 String으로 생성
Out 매개변수에서 레이블에 출력변수의 이름을 입력하고 데이터 형식을 선택한다. 예제에서는 OutName, OutEmail, OutPhone 3개의 매개 변수를 생성하고 String형으로 선택
식에서는 Power FX식을 입력한다. 주의할점은 Set등을 아직 사용할 수 없기때문에 변수를 새로 생성 할 수 없고 마지막 줄에는 대괄호로 묶은 컬렉션 형식으로 만들어놔야 반환값을 지정할 수 있다. (컬렉션이 여러개여도 반환되는건 마지막 컬렉션 뿐이다.)
아래식은 입력받은 GUID를 이용해 '연락처' 테이블에서 이름,메일주소,전화번호를 반환해주는 식이다. 다음으로 넘어간다.
{ OutName: LookUp([@'연락처 '], 연락처 = GUID(VarContactId)).'전체 이름', OutEmail: LookUp([@'연락처 '], 연락처 = GUID(VarContactId)).'전자 메일', OutPhone: LookUp([@'연락처 '], 연락처 = GUID(VarContactId)).'근무처 전화' };
- 검토를 진행한 후 저장을 한다. 이후 테스트로 넘어간다.
- 입력 매개 변수에 값을 입력한다. 예제에서는 VarContactid에 사용자 GUID를 입력하였다. 그후 '실행'을 클릭한다. 이후 응답에 어떻게 값이 반환되는지 확인이 가능하다.
- 이후 '통합' 탭으로 넘으가면 Power Apps와 Power Automate에서 사용방법에 대해 확인이 가능하다.
인스턴트 플러그인을 Power Apps에서 사용
- 캔버스앱을 열어 '버튼'과 '레이블' 컨트롤을 각각 배치한다.
- 데이터 원본을 추가한다. 추가하는 원본은 Microsoft Dataverse의 'Enviroment' 를 추가한다.
- 버튼 컨트롤의 OnSelect 속성에서 인스턴트 플러그인의 '테스트 및 통합' 페이지의 '통합' 탭에서 확인한 Power Apps에서 사용가능한 코드를 복사해서 붙여넣는다. 그후 Set로 반환되는 값을 변수에 저장한다.
Set(result, Environment.crf8f_ReturnContactInfo({VarContactId:"입력값"}))
- 이후 반환된 값을 다른 속성에서 사용이 가능하다.
인스턴트 플러그인을 Power Automate에서 사용
- Power Automate 흐름을 생성하고 편집창에 접속한다.
- 새로운 단계를 생성한다. 이때 Dataverse의 '바인딩되지 않은 작업 수행'을 선택한다.
- 이후 추가한 플러그인을 선택한후 입력 파라메터에 값을 입력하여 실행한다.
- 실행 결과로 원하는 값이 반환되는지 확인한다.
자동화된 플러그인 생성
Dataverse에서 특정 테이블에 레코드가 추가,삭제,업데이트시 동작하는 플러그인을 제작 가능하다. 기존 C# .NetFramework로 제작이 가능했던 것과 비슷한 역할을 갖는다.
- 우선 테스트를 진행할 2개의 테이블을 준비한다. 하나는 데이터가 입력될 메인 테이블이고 하나는 메인테이블에 데이터가 입력되면 자동으로 데이터가 생성될 서브테이블이다.
- 각 테이블에 레코드를 추가한다. 메인테이블에는 새로운 레코드가 생성될시 입력될 필드를 추가, 서브테이블에는 메인테이블에 새로운 레코드가 생서될시 생성할 필드와 어떤레코드를 조회(Lookup)하는지 확인하는 필드를 생성한다.
- 'Dataverse 가속기 앱'을 열고 '자동화된 플러그 인'에서 '+ 새 플러그 인' 클릭
- '이름' 항목에서 플러그인의 이름을 입력
'테이블' 항목에서 어떤 테이블의 이벤트를 감지할지 선택한다.(같은 환경의 Dataverse 테이블이여야한다.)
그다음 레코드가 생성,업데이트,삭제 의 3가지 동작중 어떤 동작시 플러그인이 시작할지 결정한다.
- Power FX 수식을 입력한다. 현재 Plugin에서 사용할 수 없는건 공식문서 참조하자
아래 수식은 메인테이블에 레코드가 생성시 name 필드를 이용해 새로운 텍스트를 생성해 별도 필드에 입력한다. 이후 서브테이블에 이름과 레코드 GUID를 이용해 새로운 레코드를 만든 후 입력한다. 이때 현재 Plugin에서는 Defaults를 사용할 수 없어서 Collect를 조합하여 실행한다.
If( IsBlank( ThisRecord.crf8f_textrecord ), Patch([@테스트_메인테이블], ThisRecord, { TextRecord:Concatenate(ThisRecord.crf8f_name," 텍스트자동생성") } )); Patch([@테스트_서브테이블], Collect([@테스트_서브테이블], { Name:Concatenate(ThisRecord.crf8f_name," 복사본"), LookUpRecord:ThisRecord } ), { TextRecord:"새로생성" } );
- 수식 아래에 '고급 옵션'에서는 수식이 레코드 이벤트가 생성되기 사전 혹은 사후에 실행할지를 결정할 수 있다.
- '저장' 후 메인테이블에서 새로운 레코드를 생성하며 동작이 실행되는지 확인한다.
정리
현재 Power FX Plugin 은 많은 제약사항이 있어서 아쉬운 점이 있다. 하지만 Dataverse내에서 이벤트나 테이터처리를 하는 것이라면 기존 .NetFramework 방식에 비해 쉽게 접근하여 생성할 수 있다는 것이 큰 장점이다.
728x90반응형'Power Platform' 카테고리의 다른 글
PowerPlatform 솔루션, 연결참조 주의점 (0) 2023.06.08 PowerPlatform-Pipelines-실행,확인 (0) 2023.05.23 PowerPlatform-Pipelines 소개 (0) 2023.05.19 모델기반 앱 추천 PCF 모음 1 (0) 2022.06.15 이후 Power Platform 업데이트 예정 (0) 2022.04.08