메타모델 생성 및 가상계좌 테스트(달러) 설계서 - SeungpilPark/uEngine-bill GitHub Wiki
각 플랜에는 이름이 있으며 단일 제품 구매를 나타낸다. 그 외에도 계획 매개 변수는 단계별로 정렬된다. 위의 그림에서는 30 일 평가판과 무제한 반복되는 EVERGREEN 단계가 있는 계획을 보여준다. 계획의 각 단계마다 다음을 지정해야 한다.
- Phase Type: TRIAL, DISCOUNT, FIXEDTERM, EVERGREEN 중 하나 일 수 있다.
- Duration: 일, 월, 년 단위의 단계 길이 또는 UNLIMITED
- Billing Period: 청구 할 빈도. 일일, 주간, 월간, 수요일, 월간, 분기 별, 연수, 연례, BIENNIAL 또는 NO_BILLING_PERIOD가 될 수 있다.
- Recurring Price: 결제 기간마다 지불해야하는 가격. 가격은 카탈로그가 지원하는 모든 통화에 대해 숫자 값을 지정해야한다.
- Fixed Price: 정기 가격 이외에 기간의 시작 부분에 부과되는 고정 가격. 이것은 다중 통화 가격이기 때문에 모든 통화에 대해 지정해야한다.
- Usage Sections: 사용량 기반 과금 플랜
<plan name="discount-standard-monthly">
<product>Standard</product>
<initialPhases>
<phase type="TRIAL">
<duration>
<unit>DAYS</unit>
<number>30</number>
</duration>
<billingPeriod>NO_BILLING_PERIOD</billingPeriod>
<fixedPrice> <!-- empty price implies $0 -->
</fixedPrice>
</phase>
<phase type="DISCOUNT">
<duration>
<unit>MONTHS</unit>
<number>3</number>
</duration>
<billingPeriod>MONTHLY</billingPeriod>
<recurringPrice>
<price>
<currency>GBP</currency>
<value>50.00</value>
</price>
<price>
<currency>USD</currency>
<value>66.00</value>
</price>
</recurringPrice>
</phase>
</initialPhases>
<finalPhase type="EVERGREEN">
<duration>
<unit>UNLIMITED</unit>
</duration>
<billingPeriod>MONTHLY</billingPeriod>
<recurringPrice>
<price>
<currency>GBP</currency>
<value>75.00</value>
</price>
<price>
<currency>USD</currency>
<value>100.00</value>
</price>
</recurringPrice>
</finalPhase>
</plan>
가격 목록은 선택 또는 교환을 위해 그룹화 된 계획 모음이다. 특정 고객 그룹에게 제시 할 할인 가격을 식별하는 데 사용된다.
<priceLists>
<defaultPriceList name="DEFAULT">
<plans>
<plan>standard-monthly</plan>
<plan>sports-monthly</plan>
<plan>super-monthly</plan>
</plans>
</defaultPriceList>
</priceLists>
카탈로그의 Rules 에서는 계획 작성, 취소 및 변경에 대한 빌링 프레임워크의 대응을 명시한다. 여기서는 가능한 가장 간단한 규칙 집합을 제공한다.
Change Policy [IMMEDIATE] - 계획 변경을 적용 할 시기를 결정하는 데 사용되는 정책. IMMEDIATE 정책은 모든 계획 변경 사항이 계획 변경 요청시 즉시 적용될 것이라고 명시한다.
Change Alignment [START_OF_BUNDLE] - 변경 정렬은 새 계획 단계가 이전 계획 단계와 어떻게 정렬되어야 하는지를 결정한다. 이 정책은 계획 단계가 항상 번들의 시작과 일치해야한다고 말한다. 예를 들어, 모든 계획에 대해 30 일 평가판을 사용하는 경우 고객은 여러 plan 간에 여러 번 앞뒤로 이동할 수 있지만 plan 시작은 항상 번들의 시작 부분에 맞춰야하기 때문에 plan은 원래 시작으로부터 30 일 동안 같은 시간에 종료된다.
Cancel Policy [IMMEDIATE] - 계획 취소시기를 결정한다. 여기서 선택된 정책은 요청을 받는 시점에 즉시 취소된다는 것을 의미한다.
Create Alignment [START_OF_BUNDLE] - 새로 생성 된 애드온 계획의 단계를 조정하는 방법을 결정한다. 선택할 수있는 START_OF_BUNDLE 은 추가 계획과 관련된 모든 평가판이 기본 계획의 평가판과 일치 함을 의미한다.
Billing Alignment [ACCOUNT] - 다른주기에 따라 다른 요금이 청구될 수 있습니다. 결제 정렬 ACCOUNT는 결제가 항상 고객 계정의 청구주기 날짜와 일치한다는 것을 의미한다.
Price List [DEFAULT] - 고객이 계획을 변경함에 따라 새로운 계획을 결정하기 위해 어떤 가격표를 사용해야하는지에 대한 비즈니스 규칙이 있을 수 있다. 이 규칙 세트를 사용하면 이러한 규칙을 표현할 수 있다.
<rules>
<changePolicy>
<changePolicyCase>
<policy>IMMEDIATE</policy>
</changePolicyCase>
</changePolicy>
<changeAlignment>
<changeAlignmentCase>
<alignment>START_OF_BUNDLE</alignment>
</changeAlignmentCase>
</changeAlignment>
<cancelPolicy>
<cancelPolicyCase>
<policy>IMMEDIATE</policy>
</cancelPolicyCase>
</cancelPolicy>
<createAlignment>
<createAlignmentCase>
<alignment>START_OF_BUNDLE</alignment>
</createAlignmentCase>
</createAlignment>
<billingAlignment>
<billingAlignmentCase>
<alignment>ACCOUNT</alignment>
</billingAlignmentCase>
</billingAlignment>
<priceList>
<priceListCase>
<toPriceList>DEFAULT</toPriceList>
</priceListCase>
</priceList>
</rules>
phaseType | EVERGREEN |
---|---|
fromProduct | Sports |
fromProductCategory | BASE |
fromBillingPeriod | MONTHLY |
fromPriceList | DEFAULT |
toProduct | Standard |
toProductCategory | BASE |
toBillingPeriod | MONTHLY |
toPriceList | DEFAULT |
<rules>
...
<changePolicy>
<changePolicyCase>
<phaseType>TRIAL</phaseType>
<policy>IMMEDIATE</policy>
</changePolicyCase>
<changePolicyCase>
<phaseType>EVERGREEN</phaseType>
<fromProduct>Sports</fromProduct>
<toProduct>Standard</toProduct>
<policy>END_OF_TERM</policy>
</changePolicyCase>
<changePolicyCase>
<policy>END_OF_TERM</policy>
</changePolicyCase>
</changePolicy>
...
</rules>
컨텍스트에는 세 가지 유형이 있다.
- 생성 컨텍스트: 새 구독에 대한 컨텍스트를 제공.
- 구독 컨텍스트: 계획, 단계, 가격 목록, 제품 등의 세부 정보를 포함하여 기존 구독의 컨텍스트를 제공.
- 컨텍스트 변경: 계획 변경의 경우에 사용되는 것으로 올바른 구독 단계뿐만 아니라 새로운 대상 계획의 세부 사항에 대한 컨텍스트를 제공.
Creation Context | Subscription Context | Change Context |
---|---|---|
product | product | phaseType |
productCategory | productCategory | fromProduct |
billingPeriod | billingPeriod | fromProductCategory |
priceList | priceList | fromBillingPeriod |
phaseType | fromPriceList | |
toProduct | ||
toProductCategory | ||
toBillingPeriod | ||
toPriceList |
<products>
<product name="Standard">
<category>BASE</category>
</product>
<product name="Sports">
<category>BASE</category>
<available>
<addonProduct>OilSlick</addonProduct>
<addonProduct>RemoteControl</addonProduct>
</available>
</product>
<product name="Super">
<category>BASE</category>
<included>
<addonProduct>OilSlick</addonProduct>
</included>
<available>
<addonProduct>RemoteControl</addonProduct>
</available>
</product>
<product name="OilSlick">
<category>ADD_ON</category>
</product>
<product name="RemoteControl">
<category>ADD_ON</category>
</product>
</products>