SAS Institute
|
JMP 오리온 통합 (JOI)
선적 서류 비치
|
2018 년 4 월 3 일
|
버전 2.0
|
D 조 현명한 기술, Inc
www.d-wise.com
1500 주변 공원 박사
모리스 빌, 노스 캐롤라이나 27650
lifesciences@d-wise.com
+1.919.600.6230
|
|
내용
1 실행
2 환경 설정
삼 구성 파일
3.1 벌채 반출
3.2 Salesforce에 연결
3.3 오리온과의 연결
3.4 허용 된 오퍼링
3.5 Salesforce에서 가져온 필드
3.6 오리온 필드의 기본값
3.7 매핑 규칙
3.8 테스트 용 필터 처리
4 매핑 규칙
4.1 컨테이너 객체 매핑
4.2 배열 매핑
4.3 매핑 속성
1 실행
JOI는 다음과 같은 배치 파일을 실행하여 시작됩니다. 조이 박쥐 . 배치 파일은 JOI 프로그램 폴더로 이동하여 주 JOI 프로그램을 실행합니다. 다음은 배치 파일 내용의 샘플입니다.
JOI를 프로덕션에서 사용하려면 프로그램을 지정된 간격 (예 : 5 분마다)으로 반복 실행해야합니다. 이 작업은 일괄 처리 프로그램을 실행하는 반복 작업을 설정하기 위해 Windows 작업 스케줄러와 같은 예약 프로그램을 사용하여 수행 할 수 있습니다.
2 환경 설정
JOI 환경 설정은 별도의 SAS 프로그램 joi_environment_settings.sas . 이 프로그램은 주 JOI 프로그램과 동일한 폴더에 있어야합니다. 주 프로그램에서 % include 문을 통해 실행됩니다.
JOI에 필요한 유일한 환경 설정은 JOI가 설치된 루트 폴더를 식별하는 것입니다. 설정은 이름이 지정된 매크로 변수에 폴더를 지정하여 지정합니다. 뿌리 다음 예제와 같이
% root = C : \ Users \ dhopkins \ Documents \ Projects \ SAS_Institute \ JOI \ 2.0;
3 구성 파일
JOI 구성 설정은 별도의 SAS 프로그램에 저장됩니다. joi_config_settings.sas . 이 프로그램은 주 JOI 프로그램과 동일한 폴더에 있어야합니다. 주 프로그램에서 % include 문을 통해 실행됩니다.
구성 설정을 통해 JOI의 동작을 핵심 프로그램을 변경하지 않고도 수정할 수 있습니다. 구성 설정에는 다음 영역이 포함됩니다.
- 벌채 반출
- Salesforce에 연결
- 오리온과의 연결
- 허용 된 오퍼링
- Salesforce에서 가져온 필드
- 오리온 필드의 기본값
- 매핑 규칙
- 필터 처리 중
3.1 로깅
JOI가 실행되면 처리 정보가 로그 파일에 기록됩니다. 로그 파일이 순환됩니다. 즉, JOI는 실행될 때마다 새 로그 파일을 작성하고 지정된 일 수보다 오래된 로그 파일을 삭제합니다. 다음 매크로 변수는 로깅과 관련된 구성 설정을 포함합니다.
매크로 변수
|
기술
|
logFolder
|
로그 파일이 저장 될 폴더
|
logFilePrefix
|
로그 파일의 이름을 구성하는 데 사용되는 접두사. 로그 파일의 이름은 "JOI"가 접두사 인 다음 예제와 같이 접두사에 날짜를 추가하여 지정합니다.
JOI-2018-02-08.로그
|
logDuration
|
로그 파일을 삭제하기 전에 보관할 기간 (일)
|
3.2 Salesforce에 연결
JOI는 Salesforce REST 서비스에 요청을 보내 Salesforce와 데이터를 교환합니다. 아래 나열된 매크로 변수에는 서비스를 찾고 인증하는 데 사용되는 구성 설정이 들어 있습니다. 구성 파일에는 테스트 데이터 액세스 용과 프로덕션 데이터 액세스 용의 두 가지 버전이 포함되어 있습니다. 테스트를 위해 또는 프로덕션 용도로 실행 중인지 여부에 따라 설정의 한 버전을 주석 처리해야합니다.
매크로 변수
|
기술
|
salesforceBaseUrl
|
REST 엔드 포인트를 구성하는 데 사용되는 기본 URL
|
salesforceConsumerKey
|
소비자 키
|
salesforceConsumerSecret
|
소비자 비밀
|
salesforceUsername
|
사용자 이름
|
salesforcePassword
|
암호
|
salesforceSecurityToken
|
보안 토큰
|
salesforcePayloadFolder
|
Salesforce에 대한 요청에 대한 페이로드가 포함 된 파일을 저장할 폴더
|
3.3 오리온 연결
JOI는 Orion REST 서비스에 요청을 보내 Orion과 데이터를 교환합니다. 아래 나열된 매크로 변수에는 서비스를 찾고 인증하는 데 사용되는 구성 설정이 들어 있습니다.
매크로 변수
|
기술
|
orionBaseUrl
|
REST 엔드 포인트를 구성하는 데 사용되는 기본 URL
|
orionPrincipalUser
|
주요 사용자
|
orionAccessKey
|
액세스 키
|
orionSecretKey
|
비밀 키
|
orionPayloadFolder
|
Orion에 대한 요청에 대한 페이로드가 들어있는 파일을 저장할 폴더
|
orionApiVersion
|
요청할 때 사용할 Orion API 버전
|
3.4 허용 된 제공
오리온에 새로운 기회를 게시 할 때, JOI는 기회 제공을 위해 오리온 ID를 포함해야합니다. 이를 용이하게하기 위해 구성 프로그램은 허용되는 오퍼링 목록과 해당 오퍼링에 해당하는 오리온 ID를 설정합니다. 허용 된 오퍼링은 호출 된 매크로를 호출하여 목록에 추가됩니다. allowOffering . 매크로는 오퍼링의 이름 (텍스트)과 오퍼링의 ID (정수)라는 두 개의 매개 변수를 취합니다. 다음은 세 가지 오퍼링을 목록에 추가하는 예입니다.
%allowOffering(JMP, 1099);
%allowOffering(JMP Genomics, 1371);
%allowOffering(JMP Clinical, 2131);
3.5 Salesforce에서 가져온 필드
Orion에 대한 요청에 대한 페이로드를 생성하기 위해 JOI는 다섯 개의 Salesforce 테이블에서 특정 필드를 가져와야합니다.
구성 프로그램은 각 테이블에서 가져올 필드를 지정합니다. 이 작업은 각 테이블에 해당하는 빈 데이터 집합을 만들어 해당 테이블에서 필요한 필드가 포함되도록합니다. 다음은 Account 테이블에서 필요한 필드를 지정하는 예제입니다.
data sfAccountVars;
length
Id $255
Orion_Account_ID__c $255
ref4__c $255
Salesgroup__c $255
;
call missing (of _all_);
run;
추가 필드는 계정 테이블에서 가져올 수 있습니다 (필요한 경우). 길이 위의 예에서 성명. length 문의 변수는 Salesforce 테이블의 필드와 완전히 동일해야합니다.
3.6 오리온 필드의 기본값
Orion에 기회를 게시하는 데 필요한 일부 필드는 Salesforce에서 가져온 데이터가 아니라 기본값으로 설정됩니다. 이 필드는 Orion에 게시 된 모든 기회에 대해 동일한 값을가집니다. 구성 프로그램은 다음 매크로 변수에 할당하여이 필드에 사용할 값을 지정합니다.
|
매크로 변수
|
오리온 필드
|
|
defaultStrategicInitiativeId
|
|
|
defaultType
|
/ root / opportunity / type
|
|
defaultInputSourceType
|
/ root / opportunity / inputSourceType
|
|
defaultMultinationalDeal
|
|
|
defaultComitCreate
|
|
|
defaultRoleId
|
|
|
defaultCustBusObjId
|
/ root / opportunity / customerBusinessObjectiveId
|
|
defaultCustBusObjGroupCode
|
/ root / opportunity / customerBusinessObjectiveGroupCode
|
|
defaultLikelihoodToCloseId
|
/ root / opportunity / likelihoodToCloseId
|
|
defaultMarkedPrivate
|
/ root / opportunity / markedPrivate
|
3.7 매핑 규칙
구성 프로그램에는 Orion 페이로드에 사용할 JSON 구조와 JSON 구조를 채우는 데 사용할 데이터를 정의하는 매핑 규칙 집합이 포함되어 있습니다. 세 가지 매크로가 매핑 규칙을 만드는 데 사용됩니다. mapJsonObject , mapJsonArray , 및 mapJsonProperty . 완전한 규칙 세트는 매크로에 대한 일련의 호출에 의해 설정됩니다. 매핑 규칙 매크로를 사용하는 방법에 대한 자세한 내용은 섹션 4에 나와 있습니다.
3.8 테스트 용 필터 처리
구성 프로그램은 처리 중에 지정된 기회 하위 집합으로 제한하기 위해 테스트 중에 사용할 수있는 처리 필터를 제공합니다. 필터는 조건 절을 opportunityListFilter 매크로 변수. 다음 필터 예제는 처리가 ID = '00629000002SiZnAAK'인 기회로 제한합니다.
%let opportunityListFilter=id%str(=)%str(%')00629000002SiZnAAK%str(%');
특수 문자는 마스킹해야합니다. % str 기능을 사용할 수 있습니다.
다음 예제와 같이 JOI를 사용하는 동안 처리 필터를 공백으로 설정해야합니다.
%let opportunityListFilter=;
4 매핑 규칙
매핑 규칙은 Orion 페이로드에 필요한 JSON 구조를 정의하는 데 사용됩니다 (즉, Orion에 새로운 기회를 게시하기 위해 보낸 데이터). 매핑 규칙은 JSON 구조의 요소와 각 요소를 채우는 데 사용되는 데이터를 정의합니다.
매핑 규칙으로 정의 할 수있는 세 가지 유형의 요소가 있으며 규칙을 만드는 데 사용되는 세 가지 매크로에 해당합니다.
|
요소 유형
|
매크로 이름
|
호출 구문
|
|
컨테이너 객체
|
mapJsonObject
|
% mapJsonObject (
parent = <부모 요소>,
key = <요소 키>
);
|
|
정렬
|
mapJsonArray
|
% mapJsonArray (
parent = <부모 요소>,
key = ,
arraySource = <데이터 집합 이름>
);
|
|
재산
|
mapJsonProperty
|
구문 1 :
% mapJsonProperty (
parent = <부모 요소>,
key = ,
값 = <값>
);
구문 2 :
% mapJsonProperty (
parent = <부모 요소>,
key = ,
valueSource = <값 소스>
);
|
4.1 컨테이너 객체 매핑하기
JSON의 컨테이너는 포함 된 요소를 묶는 중괄호로 지정됩니다. 모든 JSON 구조체는 적어도 하나의 컨테이너, 즉 최상위 컨테이너 ( "/ root"라고 함)를 포함합니다. 다른 컨테이너는 루트 컨테이너 또는 다른 중첩 컨테이너 내에 중첩 될 수 있습니다. 루트 컨테이너는 JOI에서 매핑 규칙을 요구하지 않지만 중첩 된 모든 컨테이너는 JOI에서 매핑 규칙을 요구하지 않습니다. 3 개의 중첩 컨테이너 (굵은 텍스트)가 포함 된 다음 JSON 예제를 살펴 보겠습니다.
{
"opportunity": {
"accountId": 5110985,
"amount": 530000,
},
"salesGroup": "JP",
"comit": {
"firstPeriodTerm": null,
"dealLength": null,
"form": {
"mlaNeeded": null,
"supplementNeeded": false,
},
}
}
이 예제의 매핑 규칙에는 mapJsonObject 매크로. 각 호출은 다음 구문을 사용하여 컨테이너 요소와 중첩 된 부모의 키를 지정합니다.
%mapJsonObject(
parent=<parent element>,
key=<element key>
);
상위 인수는 슬래시가 경로 요소를 분리하는 데 사용되는 Linux 폴더 경로와 유사한 구문을 사용하여 지정됩니다. 따라서 위의 예제에서 중첩 된 컨테이너는 다음 세 가지 매크로 호출로 매핑 될 수 있습니다.
%mapJsonObject (parent=/root, key=opportunity);
%mapJsonObject (parent=/root, key=comit);
%mapJsonObject (parent=/root/comit, key=form);
4.2 배열 매핑하기
JSON의 배열은 배열 요소를 묶는 대괄호로 지정됩니다. JOI는 먼저 어레이를 채우기 위해 필요한 레코드, 필드 및 값을 포함하는 SAS 데이터 세트를 작성한 다음 데이터 세트를 arraySource 인수를 매핑 규칙에 추가합니다.
아래의 JSON 예제에는 두 개의 객체가 포함 된 하나의 배열 (굵은 텍스트)이 포함되어 있습니다. 각 객체에는 세 개의 요소가 들어 있습니다. 배열의 구조는 두 개의 레코드와 세 개의 필드를 포함하는 SAS 데이터 세트와 유사합니다.
{
"cdhubId": 999,
"accountNameId": 999,
"inputSourceType": "foo",
"ips": [
{
"employeeId": 123,
"roleId": "123_role",
"territoryId": "123_territory",
},
{
"employeeId": 234,
"roleId": "234_role",
"territoryId": "234_territory",
}
],
"comitCreate": true,
}
이 예제의 매핑 규칙에는 mapJsonArray 매크로. 아래에 표시된 구문을 사용하면 호출은 배열 요소의 키, 해당 요소가 중첩 된 부모 및 배열을 채우는 데 사용 된 데이터가 포함될 데이터 집합을 지정합니다.
%mapJsonArray(
parent=<parent element>,
key=<element key>,
key=<dataset identifier>
);
위 예제의 배열은 다음 매크로 호출로 매핑 될 수 있습니다.
%mapJsonArray (parent=/root, key=ips, arraySource=opportunityIpsJson);
이 매핑 규칙이 작동하려면 JOI가 Orion 페이로드를 구성하기 전에 표시된 데이터 집합을 만들어야합니다. (배열 데이터 세트의 생성은 createJsonComponentDatasets 매크로). 위에 표시된 JSON 예제의 경우 JOI는 다음 레코드, 필드 및 필드를 포함하는 데이터 집합을 만들어야합니다. 값 :
|
employeeId
|
roleId
|
영역
|
|
123
|
123_role
|
123_territory
|
|
234
|
234_role
|
234_territory
|
배열 내의 요소는 JOI에서 별도의 매핑 규칙을 요구하지 않습니다. 어레이 내용은 SAS 데이터 세트의 데이터에 의해 완전히 정의됩니다. 위의 JSON 예제의 경우 매핑 규칙을 지정할 필요가 없습니다. employeeId , 역할 ID , 또는 영역 .
4.3 매핑 속성
만드는 가장 간단한 JSON 요소를 속성이라고합니다. 각 속성은 키 - 값 쌍입니다. JOI에는 배열에 포함되지 않은 모든 속성에 대한 매핑 규칙이 필요합니다. 다음 JSON 예제에는 매핑 규칙 (녹색 텍스트)이 필요한 8 개의 속성이 포함되어 있습니다.
{
"opportunity": {
"accountId": 5110985,
"amount": 530000,
"ips": [
{
"employeeId": 123,
"roleId": "123_role",
"territoryId": "123_territory",
}
],
"comitCreate": true,
},
"salesGroup": "JP",
"comit": {
"firstPeriodTerm": null,
"dealLength": null,
"form": {
"mlaNeeded": null,
"supplementNeeded": false,
},
}
}
이 예제에 대한 매핑 규칙에는 mapJsonProperty 매크로. 아래에 표시된 것처럼 키 - 값 쌍에 대한 값을 얻는 방식에 따라이 매크로를 호출하는 두 가지 방법이 있습니다.
구문 1 :
%mapJsonProperty(
parent=<parent element>,
key=<element key>,
value=<value>
);
구문 2 :
%mapJsonProperty(
parent=<parent element>,
key=<element key>,
valueSource=<value source>
);
첫 번째 구문은 할당되는 값이 리터럴 값이거나 매크로 변수에 포함 된 값일 때 다음 예제와 같이 사용됩니다.
%mapJsonProperty (parent=/root/opportunity, key=accountId, value="5110985");
%mapJsonProperty (parent=/root/opportunity, key=comitCreate, value=&defaultcomitCreate);
두 번째 구문은 할당되는 값을 salesforce 변수에서 얻거나 다음 예제와 같이 SAS 매크로를 실행하여 사용할 때 사용됩니다.
%mapJsonProperty (parent=/root/opportunity, key=amount, valueSource=salesforce:opportunity.amount__c);
%mapJsonProperty (parent=/root/comit, key=dealLength, valueSource=macro:assignDealLength);
위의 예제에서 매핑 규칙이 필요한 속성은 다음 8 개의 매크로 호출과 매핑 될 수 있습니다.
%mapJsonProperty (parent=/root/opportunity, key=accountId, value="5110985");
%mapJsonProperty (parent=/root/opportunity, key=amount, valueSource=salesforce:opportunity.amount__c);
%mapJsonProperty (parent=/root/opportunity, key=comitCreate, value=&defaultcomitCreate);
%mapJsonProperty (parent=/root, key=salesGroup, valueSource=salesforce:account.Salesgroup__c);
%mapJsonProperty (parent=/root/comit, key=firstPeriodTerm, valueSource=macro:assignFirstPeriodTerm);
%mapJsonProperty (parent=/root/comit, key=dealLength, valueSource=macro:assignDealLength);
%mapJsonProperty (parent=/root/comit/form, key=mlaNeeded, valueSource=salesforce:opportunity.mla__c);
%mapJsonProperty (parent=/root/comit/form, key=supplementNeeded, valueSource=salesforce:opportunity.supplement__c);