排定營利工作

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

已排定工作總覽

營利服務會提供工作排程器和一組預先排定在指定時間執行的工作。

下表列出營利提供的預先排程工作,以及工作的排定執行時間 (所有時間皆以世界標準時間為準)。其中也列出了每個工作的觸發條件。

工作 說明 排程 (世界標準時間) 觸發條件
開發人員每月稅率 從稅務引擎擷取每位開發人員的稅率,並以修改後的稅率更新開發人員實體。 每個月的第一天,凌晨 5:45 MINT.MONTHLY_DEV_TAXRATE@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
續約 將針對使用中費率方案的週期性費用,或從當日開始的未來費率方案收取新費用。 每天超過午夜的 5 秒 MINT.RENEW_SUBSCRIPTIONS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
XeFeed 更新程式 取得各種支援貨幣的美元匯率。 每天午夜 1 秒過後 MINT.XEFEED@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
續訂開發人員費率方案 滾動費率方案的續訂日期,並計算提前解約費用。 每天凌晨 2:20 MINT.RENEW_DEV_RATEPLAN@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
重試交易轉發 注意:這項工作已淘汰,並對營利沒有任何影響。 每天凌晨 4:30 MINT.RETRY_TX_RELAY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
交易清潔工具 注意:這項工作已淘汰,並對營利沒有任何影響。 每天下午 5:30 MINT.TX_CLEANSER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
開發人員餘額稽核 稽核開發人員帳戶餘額。將目前的用量和預付餘額/後付信用額度複製到稽核表格,然後從開發人員帳戶中扣除目前的用量,並將用量餘額歸零。 每月第一天的午夜 5 秒 MINT.DEVELOPER_BALANCE_AUDIT@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
每月帳單文件 產生帳單文件。

注意:Apigee 不再支援透過 Apigee Edge Monetization 產生帳單文件。請參閱退休金

每個月的第 11 天,午夜後 1 分鐘 MINT.MONTLY_BILLING_DOCS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
開發人員費率方案計數器 注意:這項工作已淘汰,並對營利沒有任何影響。 每天超過午夜的 3 秒 MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
每日費用 重新計算所有每小時的交易總額,並使用這些資料計算前一天的每日總計。 每天凌晨 1:20 MINT.CHARGE_DAILY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
每小時費用 計算一小時內每季的所有交易總計。 每季超過 1 小時 1 分鐘 MINT.CHARGE_HOURLY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
重新整理通知設定 將所有通知條件重新編入索引。 每 5 分鐘 MINT.REFRESH_NOTIFICATION_CONFIG@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
傳送電子郵件通知 累積的電子郵件通知數量 每小時 MINT.EMAIL_NOTIFICATION@@@
management-server@@@SYSTEM@@@
management-server@@@SYSTEM
重新整理限制 注意:這項工作已淘汰,並對營利沒有任何影響。 不適用 (一律不執行) MINT.REFRESH_LIMIT@@@
message-processor@@@SYSTEM@@@
message-processor@@@SYSTEM

除了上述工作以外,您還可以透過事件通知啟用其他工作,如下表所列。如需更多資訊,請參閱設定通知

工作 說明 安排時間 觸發條件
新包裹通知 通知所有有可用的新 API 套件的開發人員。 執行一次 — 工作啟用當天的晚上 9:00。

注意:無論您是否設定讓工作多次執行的 cronExpression,通知都只會傳送一次。

MINT.NEW_PACKAGE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新的臨時通知 傳送通知給所有開發人員,說明新的 API 產品已在特定地理區域市場推出。 執行一次 — 工作啟用當天的晚上 9:00。

注意:無論您是否設定讓工作多次執行的 cronExpression,通知都只會傳送一次。

MINT.ADHOC_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新產品通知 通知所有開發人員有可用的新 API 產品。 執行一次 — 工作啟用當天的晚上 9:00。

注意:無論您是否設定讓工作多次執行的 cronExpression,通知都只會傳送一次。

MINT.NEW_PRODUCT_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新的房價方案通知

傳送通知給受影響的開發人員,說明有新的費率方案。所有訂閱父項費率方案的開發人員都會收到新的費率方案已啟用的通知。

此外:

  • 如果房價方案是標準方案,則所有開發人員都會收到通知。
  • 如果是開發人員類別費率方案,只有該類別的開發人員會收到通知。
  • 如果是開發人員費率方案,只有該開發人員會收到通知。
會在新費率方案的開始日期凌晨 4:30 執行。 MINT.NEW_RATEPLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新 Tnc 通知受影響的開發人員,說明新的《條款及細則》已發布或經過修訂,且開發人員尚未接受這些條款。 在新版《條款及細則》開始日期前的晚上 9:00 前執行 30、7 和 1 天。 MINT.TNC_ACCEPTANCE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
即將到期的費率方案 傳送通知給受影響的開發人員,提前告知費率方案即將過期。 在費率方案到期前的 9:00 (下午 9:00) 前執行 30、7 和 1 天。 MINT.EXPIRING_RATE_PLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT

使用 API 管理營利工作時間表

以下各節說明如何使用 API 管理營利工作時間表:

如要進一步瞭解本節所述的 API,請參閱 API 參考資料中的已排定的工作

設定觸發條件

排程器必須仰賴觸發條件來執行工作。已排定的工作會在相關聯的觸發條件執行時執行。觸發條件的屬性是用來設定工作執行作業,您可以設定這些屬性的值,控管工作執行作業的特性,例如執行工作的時間和頻率。

兩種最常見的觸發條件類型為「Cron 觸發條件」和「簡單觸發條件」。Cron 觸發條件具有指定執行排程的 cronExpression 屬性。簡易觸發條件沒有 cronExpression 屬性,您可以指定 startTime 來表示觸發條件生效的時間,並視需要指定 endTime

觸發條件屬性如下 (所有時間都以世界標準時間為準):

屬性 說明
cronExpression Cron 運算式來建立觸發條件的執行排程,例如「每週一到星期五的上午 8:00」或「每月最後一個星期五凌晨 1:30」。詳情請參閱「建構 Cron 運算式」一文。

指定這項屬性會將觸發條件定義為 Cron 觸發條件。

注意:如果同時指定 cronExpressionstartTime/endTime,則以 cronExpression 為優先。

enabled 此標記用於註明是否已啟用觸發條件,這個值可以是下列其中一項:
  • true:觸發條件已啟用執行。
  • false。觸發條件已停用,將不會執行。
endTime 觸發條件的排程不再生效的時間 (以 Epoch 紀元時間格式呈現)。
group 要執行觸發條件的伺服器類型。舉例來說,如果觸發條件應在管理伺服器中執行,則值應設為 management-server。如果觸發條件應在訊息處理伺服器中執行,值應設為 message-processor
id 識別觸發條件。
jobId 識別要執行的工作。
name 用來識別觸發條件的專屬名稱。
priority 如果有多個觸發條件在同一時間執行,則觸發條件的相對執行優先順序。值越低,優先順序越高。例如,如果已排定兩個觸發事件同時執行,且其中一個觸發優先順序為 1,優先順序為 2,則優先順序為 1 的觸發事件會先執行。

這個屬性僅適用於多個觸發條件的執行時間相同時。

startTime 僅適用於簡單的觸發條件。

觸發條件的時間表生效時間 (以 Epoch 紀元時間格式呈現)。

注意:如果同時指定 cronExpressionstartTime/endTime,則以 cronExpression 為準。

suiteId 此標記可指定通知部分是系統層級還是預設層級通知套件。有效值為 DEFAULTSYSTEM,您也可以自行指定專屬套件名稱。
triggerDataMap 鎖定鍵 custom_lock_key,可防止多個伺服器同時執行相同的工作。

建構 Cron 運算式

Cron 運算式是字串,由 6 或 7 個欄位組成,並以空格分隔。運算式代表一組時間,通常是執行處理常式的時間表。在觸發條件的 cronExpression 屬性中指定的 Cron 運算式將用來安排執行該觸發條件。

Cron 運算式的格式如下:s m h dm m dw y

在此情況下:

欄位 說明 需要 接受的值 允許的特殊字元
s 0-59 , - * /
m 分鐘 0-59 , - * /
h 小時 0-23 , - * /
dm 0-31 , - * ? 鍵/ 左 W
m 月份 1-12 或 1 月 12 日 , - * /
dw 星期幾 1-7 或 SUN-SAT , - * ? 鍵/ 左 #
y 空白或 1970-2099 , - * /

特殊字元的定義如下:

特殊字元 說明
* 用於選取欄位中的所有值。例如,分鐘欄位中的 * 表示每分鐘。
? 在其中一個可以使用字元的欄位中,用來指定其中一個欄位可以使用的內容,其他欄位則不得指定其他欄位。舉例來說,如果您想讓觸發條件在每個月的某日執行 (例如 10 日),但不在乎星期幾,請在月份欄位中指定 10,接著指定 ?。
- 用於指定範圍。舉例來說,小時欄位中的 10 至 12 代表小時 10、11 和 12。
, 用於指定其他值。舉例來說,「星期幾」欄位的 MON、WED、FRI 表示星期一、星期三和星期五。
/ 用於指定增量。舉例來說,秒欄位中的 0/15 代表秒數 0、15、30 和 45。秒欄位的 5/15 代表秒 5、20、35 和 50。您也可以在「」字元後方指定「/」。亦即在 / 之前加上 0。如果在月日欄位指定 1/3,表示從每個月的第一天開始,每 3 天執行一次。
L 在允許的兩個欄位中都有不同的意義。「月日」欄位中的 L 代表當月的最後一天,也就是 1 月的第 31 天,如果是 2 月,則為第 28 天。在「星期幾」欄位中,L 是指一週的最後一天,也就是 7 或 SAT。但如果在「星期幾」欄位的值之後使用另一個值,則代表當月的最後 xxx 天。舉例來說,6L 代表當月的最後一個星期五。
用於指定最接近指定日期的平日 (星期一至星期五)。舉例來說,如果您在「月日」欄位中指定 15W,表示最接近當月 15 日的平日。因此,如果 15 日是星期六,觸發條件將在 14 日星期五執行。如果 15 日是星期日,觸發條件會在 16 日星期一執行。如果 15 日是星期二,則系統會在 15 日星期二執行。不過,假如您將某日的日子指定為 1W,而第 1 天為星期六,則觸發條件會在 3 日星期一執行,因為這麼做不會「跳躍」一個月的日期。您只能指定 W 字元,指定日期是一天,不能指定範圍或天數清單。
# 用來指定當月的第 n 個 XXX。舉例來說,「星期幾」欄位中的值 6#3 代表月的第三個星期五 (第 6 天 = 星期五,#3 = 當月的第 3 個)。其他示例:2#1 = 當月的第一個星期一,4#5 = 當月的第五個星期三。

以下是 Cron 運算式的範例 (所有時間均以世界標準時間為準):

Cron 運算式 執行排程
0 0 12 * * ? 每天中午 12 點 (中午)。
0 15 10 * * ? 2013 2013 年全年每天 10:15。
0 10,44 14 ?3 週三 3 月的星期三下午 2:10 和每週三下午 2:44。
0 15 10 ?* 2013 至 2015 年 6L 號 2013 年、2014 年和 2015 年期間每月最後一個星期五上午 10:15。
0 15 10 ?* 6#3 每個月的第三個星期五早上 10:15。

使用 API 查看已排定的工作

您可以向 /triggers?orgid={org_name} 發出 GET 要求,即可查看目前已排定的所有工作。

例如:

$ curl -H "Accept:application/json" -X GET \ "http://localhost:8080/v1/mint/triggers?orgid={org_name}" \ -u email:password

以下提供回應範例:

[ {
  "createdDate" : 1457924378176,
  "cronExpression" : "3 0 0 * * ?",
  "enabled" : true,
  "group" : "management-server",
  "id" : "MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
  "jobId" : "MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@management-server",
  "name" : "MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@management-server@@@DEFAULT",
  "priority" : "1",
  "suiteId" : "DEFAULT",
  "triggerDataMap" : {
    "custom_lock_key" : "mint.scheduler.__ORG_ID__.resetdeveloperrateplancounter@@@management"
  },
  "updatedDate" : 1457924378176
}, {
  "createdDate" : 1457924378014,
  "cronExpression" : "",
  "enabled" : true,
  "group" : "management-server",
  "id" : "MINT.ADHOC_NOTIFY@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
  "jobId" : "MINT.ADHOC_NOTIFY@@@management-server",
  "name" : "MINT.ADHOC_NOTIFY@@@management-server@@@DEFAULT",
  "priority" : "4",
  "startTime" : "1372916749000",
  "suiteId" : "DEFAULT",
  "triggerDataMap" : {
    "custom_lock_key" : "mint.scheduler.__ORG_ID__.adhocnotify@@@management"
  },
  "updatedDate" : 1457924378014
}, {
  "createdDate" : 1457924377877,
  "cronExpression" : "0 20 1 * * ?",
  "enabled" : true,
  "group" : "management-server",
  "id" : "MINT.CHARGE_DAILY@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
  "jobId" : "MINT.CHARGE_DAILY@@@management-server",
  "name" : "MINT.CHARGE_DAILY@@@management-server@@@DEFAULT",
  "priority" : "1",
  "suiteId" : "DEFAULT",
  "triggerDataMap" : {
    "custom_lock_key" : "mint.scheduler.__ORG_ID__.chargedaily@@@management"
  },
  "updatedDate" : 1457924377877
},
...
]

您也可以向 /triggers/{trig_id} 發出 GET 要求,藉此查看已排定的工作,其中 {trig_id} 是工作觸發條件的名稱,如「已排定的工作總覽」一文所述。例如:

$ curl -X GET \ "http://localhost:8080/v1/mint/triggers/MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT" \ -u email:password

以下提供回應範例:

{
    "createdDate" : 1457924377925,
    "cronExpression" : "0 20 2 * * ?",
    "enabled" : true,
    "group" : "management-server",
    "id" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
    "jobId" : "MINT.RENEW_DEV_RATEPLAN@@@management-server",
    "name" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT",
    "priority" : "1",
    "suiteId" : "DEFAULT",
    "triggerDataMap" : {
        "custom_lock_key" : "mint.scheduler.__ORG_ID__.renewydevrateplan@@@management"
    },
    "updatedDate" : 1457924377925
}

使用 API 更新已排定的工作

如要更新已排定的工作,您可以變更其觸發條件的屬性。舉例來說,您可能需要變更觸發條件的執行排程。

如果是 Cron 觸發工作 (也就是包含 Cron 運算式值的工作),您只能變更 cronExpression 的值和已啟用屬性的值。系統會忽略其他變更。如果工作未指定 Cron 運算式值,您可以變更其他屬性,例如 startTimepriority

如要更新已排定的工作,請向 /triggers/{trig_id} 發出 PUT 要求,其中 {trig_id} 是工作觸發條件的識別身分,如排定工作總覽一文所述。更新設定時,您必須在要求主體中指定更新的設定和觸發條件的 ID。

舉例來說,下列要求會更新「新開發人員費率方案更新」工作的 Cron 運算式,在世界標準時間上午 5 點執行:

$ curl -H "Content-Type: application/json" -X PUT -d \
 '{
    "cronExpression" : "0 0 5 * * ?",
    "enabled" : true,
    "group" : "management-server", 
    "id" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
    "jobId" : "MINT.RENEW_DEV_RATEPLAN@@@management-server",
    "name" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT",
    "priority" : "1",
    "suiteId" : "DEFAULT",
    "triggerDataMap" : {
        "custom_lock_key" : "mint.scheduler.__ORG_ID__.renewydevrateplan@@@management"
    },
}' \
https://localhost:8080/v1/mint/triggers/MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT
\
-u email:password

使用 API 停用及重新啟用已排定的工作

如要停用已排定的工作,請將該工作觸發條件的 enabled 屬性值設為 false。例如:

$ curl -H "Content-Type: application/json" -X PUT -d \
 '{
    "cronExpression" : "0 0 5 * * ?",
    "enabled" : false,
    "group" : "management-server",
    "id" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT",
    "jobId" : "MINT.RENEW_DEV_RATEPLAN@@@management-server",
    "name" : "MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT",
    "priority" : "1",
    "suiteId" : "DEFAULT",
    "triggerDataMap" : {
        "custom_lock_key" : "mint.scheduler.__ORG_ID__.renewydevrateplan@@@management"
    },
}' \
https://localhost:8080/v1/mint/triggers/MINT.RENEW_DEV_RATEPLAN@@@management-server@@@DEFAULT@@@management-server@@@DEFAULT
\
-u email:password

如要重新啟用已停用的工作,請將觸發條件的 enabled 屬性值設為 true。

後續步驟

建議您定期重新同步處理貴機構的營利狀態,以及您透過 Edge API 服務建立的所有開發人員、應用程式和產品。請參閱「透過營利機制同步處理 Apigee Edge 資料」一文。