排定營利工作

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

已排定工作總覽

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

下表列出營利功能提供的預先排定工作,以及排定執行的時間 (所有時間均以世界標準時間列出)。此外,系統也會列出每個工作的觸發條件。

工作 說明 排程 (世界標準時間) 觸發條件
每月開發人員稅率 從稅務引擎擷取每位開發人員的稅率,並使用修訂後的稅率更新開發人員實體。 每月第一天早上 5:45。 MINT.MONTHLY_DEV_TAXRATE@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
續約 適用於當天生效的現有費率方案,或日後生效的新費率方案。 每天午夜過後 5 秒 MINT.RENEW_SUBSCRIPTIONS@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
XeFeed Updater 取得每種支援貨幣的美元匯率。 每天午夜過後 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
開發人員餘額稽核 稽核開發人員帳戶餘額。將目前的用量和預付餘額/後付信用額度複製到稽核表,然後從開發人員帳戶扣除目前的用量,並將用量餘額歸零。 每月第一天凌晨 0 時 5 秒 MINT.DEVELOPER_BALANCE_AUDIT@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
月結單 產生帳單文件。

注意:Apigee 不再支援從 Apigee Edge Monetization 產生帳單文件。 請參閱「淘汰」一節。

每月 11 日凌晨 00:01 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
按時數計費 計算每 15 分鐘的交易總額。 每小時的 15 分、30 分、45 分和整點過後 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 點。

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

MINT.NEW_PACKAGE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新增臨時通知 向所有開發人員傳送通知,告知特定地理市場推出新的 API 產品。 執行一次 - 在工作啟用當天晚上 9 點。

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

MINT.ADHOC_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
新產品通知 向所有開發人員傳送通知,告知他們有新的 API 產品可用。 執行一次 - 在工作啟用當天晚上 9 點。

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

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

向受影響的開發人員傳送通知,告知他們有新的費率方案。系統會通知所有訂閱上層費率方案的開發人員,新的費率方案已生效。

此外:

  • 如果費率方案是標準方案,所有開發人員都會收到通知。
  • 如果是開發人員類別費率方案,只有該類別的開發人員會收到通知。
  • 如果是開發人員費率方案,只有該特定開發人員會收到通知。
在新的費率方案生效當天凌晨 4 點 30 分執行。 MINT.NEW_RATEPLAN_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
New Tnc 向受影響的開發人員傳送通知,告知他們新的或修訂的條款及細則已發布 (且開發人員尚未接受)。 在新的或修訂版《條款及細則》生效日期的前 30 天、前 7 天和前 1 天,於晚上 9 點執行。 MINT.TNC_ACCEPTANCE_NOTIFY@@@
management-server@@@DEFAULT@@@
management-server@@@DEFAULT
即將到期的費率方案 向受影響的開發人員傳送通知,預先警告費率方案即將到期。 在費率方案到期前 30 天、7 天和 1 天,於晚上 9 點執行。 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 觸發條件的 ID。
jobId 要執行的工作識別資訊。
name 用來識別觸發條件的專屬名稱。
priority 如果多個觸發條件預定在同一時間執行,則觸發條件的相對執行優先順序。值越低代表優先順序越高。舉例來說,如果兩個觸發程序排定在同一時間執行,且其中一個觸發程序的優先順序為 1,另一個為 2,則優先順序為 1 的觸發程序會先執行。

只有在多個觸發條件的執行時間完全相同時,這項屬性才適用。

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

觸發條件排程生效的時間 (以紀元格式表示)。

附註:如果同時指定 cronExpressionstartTime/endTime,系統會優先採用 cronExpression

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

建構 Cron 運算式

Cron 運算式是由六或七個欄位組成的字串,並以空白字元分隔。這個運算式代表一組時間,通常是執行例行程序的排程。觸發條件 cronExpression 屬性中指定的 Cron 運算式,會用於排定該觸發條件的執行時間。

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 運算式值,您可以變更其他屬性,例如 startTimepriority

如要更新排定的工作,請對 /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 資料與營利功能同步處理」一文,瞭解如何操作。