Counter

カウンタサービスは、ユニークなカウンタ値を生成するサービスです。トランザクション名の生成やアプリケーションで利用するオーダー番号やネットワークのVLAN番号の払い出しなどに使用できます。 カウンタの定義情報は以下のとおりです。

  • counter_type: カウンタの種類を指定します。 NumberUUIDInventoryの3つのタイプがあります。 Numberは数値タイプで、最小値から最大値まで順に発行されます。最大値に達すると、最小値から再度払い出します。 UUIDはuuidtype1で払い出されます。 Inventoryは、Numberと同様に、最小値から最大値まで順番に払い出されますが、在庫管理されるため、在庫がなくなり次第、409 Conflictが返却されます。払い出されたカウンタを払い戻すことで新規の取得が可能になります。

  • counter_name: カウンタを一意に識別する名前を指定します。

  • counter_format: カウンタから返される値の形式を指定します。値は$で表されます。SO00000101などの形式で払い出す場合は、SO$を指定してください。数値の左0埋めについては後述するpaddingTrueに設定する必要があります。

  • min_num: カウンタの最小値を指定します。

  • max_num: カウンタの最大値を指定します。

  • padding: ゼロパディングモードを指定します。counter_formatの例に示されているSO00000101のように、ゼロが埋め込まれた値を取得する場合は、Trueを指定します。

  • counter_script: スクリプトを使用して、カウンタで払い出された数値をもとに値をカスタマイズできます。変数vに割り当てられたカウンタ値が格納されているため、開発者はスクリプト内でvを書き換えることで自由にカスタマイズできます。

# Example of giving the last two digits of the year and the month
today = datetime.datetime.utcnow() 
v = "{y}{p}{m}{v}".format(y=today.year-2000, p="0" if today.month < 10 else "", m=today.month, v=v)

カウンタには以下の操作が提供されます。

  • allocate: カウンタ値を取得します。

  • release: カウンタ値を解放します。このアクションは、Inventoryタイプでのみ可能です。

  • expand: カウンタプールのサイズを拡張します。最小値は現在のサイズより大きくすることはできません。最大値は現在のサイズより小さくすることはできません。このアクションは、Inventoryタイプでのみ可能です。

  • shrink: カウンタプールのサイズを縮小します。最小値は現在のサイズより小さくすることはできません。最大値は現在のサイズより大きくすることはできません。このアクションは、Inventoryタイプでのみ可能です。

Note

カウンタの払い出しや払い戻しなどはCounter組込みオブジェクトで操作します。Docs » リファレンス » ビルトインオブジェクトを参照してください。