您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
已排定工作總覽
營利功能提供工作排程器和一組預先排定的工作,會在指定時間執行。
下表列出營利功能提供的預先排定工作,以及排定執行的時間 (所有時間均以世界標準時間列出)。此外,系統也會列出每個工作的觸發條件。
| 工作 | 說明 | 排程 (世界標準時間) | 觸發條件 |
|---|---|---|---|
| 每月開發人員稅率 | 從稅務引擎擷取每位開發人員的稅率,並使用修訂後的稅率更新開發人員實體。 | 每月第一天早上 5:45。 | MINT.MONTHLY_DEV_TAXRATE@@@ |
| 續約 | 適用於當天生效的現有費率方案,或日後生效的新費率方案。 | 每天午夜過後 5 秒 | MINT.RENEW_SUBSCRIPTIONS@@@ |
| XeFeed Updater | 取得每種支援貨幣的美元匯率。 | 每天午夜過後 1 秒 | MINT.XEFEED@@@ |
| 續訂開發人員費率方案 | 延後費率方案的續約日期,並計算提前終止費用。 | 每天凌晨 2:20 | MINT.RENEW_DEV_RATEPLAN@@@ |
| 重試交易轉送 | 注意:這項工作已淘汰,不會影響營利。 | 每天凌晨 4:30 | MINT.RETRY_TX_RELAY@@@ |
| 交易清除器 | 注意:這項工作已淘汰,不會影響營利。 | 每天早上 5:30 | MINT.TX_CLEANSER@@@ |
| 開發人員餘額稽核 | 稽核開發人員帳戶餘額。將目前的用量和預付餘額/後付信用額度複製到稽核表,然後從開發人員帳戶扣除目前的用量,並將用量餘額歸零。 | 每月第一天凌晨 0 時 5 秒 | MINT.DEVELOPER_BALANCE_AUDIT@@@ |
| 月結單 | 產生帳單文件。 注意:Apigee 不再支援從 Apigee Edge Monetization 產生帳單文件。 請參閱「淘汰」一節。 |
每月 11 日凌晨 00:01 | MINT.MONTLY_BILLING_DOCS@@@ |
| 開發人員費率方案計數器 | 注意:這項工作已淘汰,不會影響營利。 | 每天午夜過後 3 秒 | MINT.RESET_DEVELOPER_RATE_PLAN_COUNTER@@@ |
| 每日費用 | 重新計算所有每小時交易總計,並用來計算前一天的每日總計。 | 每天凌晨 1:20 | MINT.CHARGE_DAILY@@@ |
| 按時數計費 | 計算每 15 分鐘的交易總額。 | 每小時的 15 分、30 分、45 分和整點過後 1 分鐘 | MINT.CHARGE_HOURLY@@@ |
| 重新整理通知設定 | 重新建立所有通知條件的索引。 | 每 5 分鐘 | MINT.REFRESH_NOTIFICATION_CONFIG@@@ |
| 傳送電子郵件通知 | 傳送累積的電子郵件通知 | 每小時 | MINT.EMAIL_NOTIFICATION@@@ |
| 重新整理限制 | 注意:這項工作已淘汰,不會影響營利。 | 不適用 (永不執行) | MINT.REFRESH_LIMIT@@@ |
除了上述工作之外,您也可以透過事件通知啟用其他工作,如下表所示。詳情請參閱「設定通知」。
| 工作 | 說明 | 排程 | 觸發條件 |
|---|---|---|---|
| 新包裹通知 | 向所有開發人員傳送通知,告知有新的 API 套件可用。 |
執行一次 - 在工作啟用當天晚上 9 點。
注意:無論您設定的 |
MINT.NEW_PACKAGE_NOTIFY@@@ |
| 新增臨時通知 | 向所有開發人員傳送通知,告知特定地理市場推出新的 API 產品。 |
執行一次 - 在工作啟用當天晚上 9 點。
注意:無論您設定的 |
MINT.ADHOC_NOTIFY@@@ |
| 新產品通知 | 向所有開發人員傳送通知,告知他們有新的 API 產品可用。 |
執行一次 - 在工作啟用當天晚上 9 點。
注意:無論您設定的 |
MINT.NEW_PRODUCT_NOTIFY@@@ |
| 新房價方案通知 |
向受影響的開發人員傳送通知,告知他們有新的費率方案。系統會通知所有訂閱上層費率方案的開發人員,新的費率方案已生效。 此外:
|
在新的費率方案生效當天凌晨 4 點 30 分執行。 | MINT.NEW_RATEPLAN_NOTIFY@@@ |
| New Tnc | 向受影響的開發人員傳送通知,告知他們新的或修訂的條款及細則已發布 (且開發人員尚未接受)。 | 在新的或修訂版《條款及細則》生效日期的前 30 天、前 7 天和前 1 天,於晚上 9 點執行。 | MINT.TNC_ACCEPTANCE_NOTIFY@@@ |
| 即將到期的費率方案 | 向受影響的開發人員傳送通知,預先警告費率方案即將到期。 | 在費率方案到期前 30 天、7 天和 1 天,於晚上 9 點執行。 | MINT.EXPIRING_RATE_PLAN_NOTIFY@@@ |
使用 API 管理營利作業排程
以下各節說明如何使用 API 管理營利作業排程:
如要進一步瞭解本節所述的 API,請參閱 API 參考資料中的「排定工作」。
設定觸發條件
排程器會依據觸發條件執行工作。已排定的工作會在相關聯的觸發條件執行時執行。觸發程序的屬性會設定工作執行作業,您可以設定這些屬性的值,控管工作執行作業的特徵,例如工作執行時間和頻率。
最常見的兩種觸發條件類型是 cron 觸發條件和簡單觸發條件。Cron 觸發程序具有 cronExpression 屬性,可指定執行排程。簡單觸發條件沒有 cronExpression 屬性;您可以指定 startTime 來指出觸發條件生效的時間,並視需要指定 endTime。
觸發條件屬性如下 (列出的時間均為世界標準時間):
| 屬性 | 說明 |
|---|---|
cronExpression |
用來建立觸發條件執行排程的 Cron 運算式,例如:「每週一到週五上午 8:00」或「每月最後一個週五凌晨 1:30」。詳情請參閱建構 Cron 運算式。
指定這項屬性會將觸發條件定義為 cron 觸發條件。 附註:如果同時指定 |
enabled |
此標記表示是否已啟用觸發條件來執行動作。可能的值如下:
|
endTime |
觸發條件排程失效時的時間,格式為 Epoch。 |
group |
觸發條件執行的伺服器類型。舉例來說,如果觸發條件應在管理伺服器中執行,則值應設為 management-server。如果觸發條件應在訊息處理伺服器中執行,則值應設為 message-processor。 |
id |
觸發條件的 ID。 |
jobId |
要執行的工作識別資訊。 |
name |
用來識別觸發條件的專屬名稱。 |
priority |
如果多個觸發條件預定在同一時間執行,則觸發條件的相對執行優先順序。值越低代表優先順序越高。舉例來說,如果兩個觸發程序排定在同一時間執行,且其中一個觸發程序的優先順序為 1,另一個為 2,則優先順序為 1 的觸發程序會先執行。
只有在多個觸發條件的執行時間完全相同時,這項屬性才適用。 |
startTime |
僅適用於簡單觸發條件。
觸發條件排程生效的時間 (以紀元格式表示)。 附註:如果同時指定 |
suiteId |
這個旗標會指定通知是系統層級還是預設層級的通知套件。有效值為 DEFAULT 或 SYSTEM,或您也可以指定專屬的套裝組合名稱。 |
triggerDataMap |
鎖定鍵 custom_lock_key,可防止多部伺服器同時執行相同工作。 |
建構 Cron 運算式
Cron 運算式是由六或七個欄位組成的字串,並以空白字元分隔。這個運算式代表一組時間,通常是執行例行程序的排程。觸發條件 cronExpression 屬性中指定的 Cron 運算式,會用於排定該觸發條件的執行時間。
s
m h dm m dw y
其中:
| 欄位 | 說明 | 必填 | 接受的值 | 可用的特殊字元 |
|---|---|---|---|---|
s |
秒 | 是 | 0-59 | , - * / |
m |
分鐘 | 是 | 0-59 | , - * / |
h |
小時 | 是 | 0-23 | , - * / |
dm |
日 | 是 | 0-31 | , - * ? / L W |
m |
月 | 是 | 1 至 12 或 JAN 至 DEC | , - * / |
dw |
星期幾 | 是 | 1-7 或 SUN-SAT | , - * ? / L # |
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 或週六。但如果「L」用在「星期幾」欄位中的其他值之後,則代表當月的最後一個 xxx 日。舉例來說,6L 代表該月的最後一個星期五。 |
| W | 用於指定最接近指定日期的平日 (週一至週五)。舉例來說,如果您在「每月第幾週」欄位中指定「15W」,表示最接近該月 15 日的平日。因此,如果 15 日是星期六,系統會在 14 日星期五執行觸發程序。如果 15 日是星期日,系統會在 16 日星期一執行觸發程序。如果當月 15 日是星期二,款項會在當天匯出。不過,如果將每月第 1 週的星期幾設為觸發條件,且當月 1 號是星期六,則觸發條件會在 3 號 (星期一) 執行,因為系統不會「跳過」當月的天數界線。只有在月份中的日期為單一日,而非日期範圍或日期清單時,才能指定 W 字元。 |
| # | 用於指定當月的第 n 個 XXX 日。舉例來說,如果星期幾欄位的值為 6#3,表示該月第三個星期五 (星期 6 = 星期五,#3 = 該月第三個星期五)。其他範例:2#1 = 當月的第一個星期一,4#5 = 當月的第五個星期三。 |
以下列舉幾個 cron 運算式 (所列時間皆為世界標準時間):
| Cron 運算式 | 執行排程 |
|---|---|
| 0 0 12 * * ? | 每天中午 12 點。 |
| 0 15 10 * * ? 2013 | 2013 年每天上午 10:15。 |
| 0 10,44 14 ? 3 WED | 3 月每週三下午 2:10 和 2:44。 |
| 0 15 10 ? * 6L 2013-2015 | 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} 是工作觸發條件的 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 和 enabled 屬性的值。系統會忽略其他變更。如果工作未指定 cron 運算式值,您可以變更其他屬性,例如 startTime 或 priority。
如要更新排定的工作,請對 /triggers/{trig_id} 發出 PUT 要求,其中 {trig_id} 是工作觸發條件的 ID,如「排定工作總覽」一文所述。更新時,您需要在要求主體中指定更新後的設定和觸發條件 ID。
舉例來說,下列要求會更新「New Developer Rate Plan Renewal」工作的 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 資料與營利功能同步處理」一文,瞭解如何操作。