ThingWorx Flow > 建立及管理自訂動作 > 在 ThingWorx Flow 中建立自訂動作
在 ThingWorx Flow 中建立自訂動作
完成下列步驟來建立自訂動作:
1. 欲將自訂動作新增至 ThingWorx Flow,請執行下列其中一項操作:
ThingWorx Flow 儀表板,轉至「自訂動作」,然後按一下
在「工作流程編輯器」中,從「動作」面板轉至「自訂」標籤,然後按一下
使用下列其中一種方法來在自訂動作中建立程式碼結構:
編輯預先填入的預設範本,以編寫您自己的程式碼。
繼承或複製現有動作。如需詳細資訊,請參閱繼承與複製之間的差異
2. 欲繼承或複製現有動作,請執行下列操作:
a. 「從現有動作中選取動作」清單中,搜尋要繼承或複製其動作的協力廠商服務。
b. 按一下 以展開服務下的動作清單。
c. 選取您要繼承或複製的動作。
d. 「將現有動作用於」欄位中,選取「繼承」「複製」
如果您不想繼承或複製現有動作,可編輯預設預先填入的範本,來為自訂動作編寫程式碼。
3. 「包括下列內容下的動作」欄位中,選取下列其中一項:
「自訂動作」- 將您的自訂動作新增至工作流程編輯器中「自訂」標籤的「自訂動作」群組下。
「自訂群組」- 將自訂動作新增到您自己的自訂群組。在此選項旁邊的欄位中輸入自訂群組的名稱。「自訂群組」名稱可在工作流程編輯器的「服務」標籤中找到。
* 
您可將不需要任何驗證的已繼承或已複製自訂動作新增到任何自訂群組下。
您無法在相同的自訂群組中擁有多個具有不同連接器類型的動作。
如果您已複製或繼承現有動作,預設會將自訂動作新增到相同服務下。例如,如果您選取了 Azure 下的「異常偵測器」動作,依預設,會針對「包括下列內容下的動作」欄位選取 Azure
* 
只有當您複製或繼承現有動作時,此選項才會顯示。
4. 「選擇圖示」欄位中,按一下「瀏覽」來選取自訂動作的圖示。請確保您選擇的是 128 x 128 的 JPEG 或 PNG 圖像。
* 
如果您未提供圖示,會使用預設自訂動作圖示。
如果您繼承或複製現有動作,則依預設,會將動作圖示作為自訂動作圖示使用。
5. 在程式碼編輯器中,編輯預先填入的範本,為動作撰寫程式碼。如需如何定義動作各個部份的詳細資訊,請參閱定義自訂動作部份。
6. 按一下「編譯」。如果程式碼有錯誤,這些錯誤會在程式碼編輯器中反白顯示。成功編譯之後,在自訂動作輸入部份定義的所有輸入欄位都會顯示在右窗格中。
7. 按一下「儲存」,儲存您的自訂動作。
定義自訂動作
自訂動作就是定義動作的 Node.js JavaScript 函數。當建立自訂動作時,會在程式碼編輯器中預先填入範例範本。可使用此範本作為建構自訂動作的起點。
下表提供有關預先填入程式碼各區段的資訊:
圖例
描述
1
使用 require() 函數可匯入要在自訂動作中使用的 node.js 模組。在範例程式碼中,動作會匯入 request 模組以對協力廠商系統發出簡單 HTTP 呼叫。
* 
您可以在自訂動作中使用的節點模組清單位於此處
如需有關如何在自訂動作中使用這些節點模組的資訊,請參閱自訂自訂動作
2
this.localization.namespace:label - 指定自訂動作名稱的屬性。在 this.localization 下的特定地區設定下,label 變數的值定義該地區設定的自訂動作名稱。
* 
如果不需要當地語系化支援,可在此指定自訂動作名稱。
3
this.input - 定義當在工作流程中配置動作時所顯示之輸入欄位的屬性。這是 JSON 結構描述,必須有效。指派以下參數的值:
title (必要) - 在內部作為識別元使用。
在範例程式碼中,title 欄位的值為 this.localization.namespace:sample_input。在 this.localization 下的特定地區設定下,sample_input 變數的值可設定該地區設定的 title 值。
type (必要) - 在內部使用。請務必將此值設定為 object。請勿變更此值。
properties (必要) - 定義動作的多個輸入欄位與驗證條件 (若有)。針對每個輸入欄位定義一個唯一金鑰,例如 first_name,並為每個輸入欄位定義下列值:
title - 輸入欄位的名稱。
在範例程式碼中,title 欄位的值為 this.localization.namespace:Custom_Action_First_Name。在 this.localization 下的特定地區設定下,Custom_Action_First_Name 變數的值可設定該地區設定的 title 值。
* 
如果不需要當地語系化支援,可在此指定標籤值。
type - 欄位的類型。例如:字串、整數、數值等。
description - 顯示為工具提示的訊息。
在範例程式碼中,description 欄位的值為 this.localization.namespace:Enter_Custom_Action_First_Name。在 this.localization 下的特定地區設定下,Enter_Custom_Action_First_Name 變數的值可設定該地區設定的 description 值。
minLength - 只有當您要將輸入欄位設定為必填欄位時,才應將此欄位的值設定為 1。如果您不想將輸入欄位設為必填,請移除該輸入欄位的屬性。
4
this.output - 定義動作會傳回之輸出欄位並使其可供工作流程中的其他動作使用的屬性。這是 JSON 結構描述,必須有效。指派以下參數的值:
title (必要) - 在內部作為識別元使用。
在範例程式碼中,title 欄位的值為 this.localization.namespace:output。在 this.localization 下的特定地區設定下,output 變數的值可設定該地區設定的 title 值。
type (必要) - 在內部使用。請務必將此值設定為 object。請勿變更此值。
properties (必要) - 定義動作的多個輸出欄位。針對每個輸出欄位定義一個唯一金鑰,例如 status,並為每個輸出欄位定義下列值:
title - 輸出欄位的名稱。
在範例程式碼中,title 欄位的值為 this.localization.namespace:status。在 this.localization 下的特定地區設定下,status 變數的值可設定該地區設定的 title 值。
* 
如果不需要當地語系化支援,可在此指定標籤值。
type - 欄位的類型。例如:字串、整數、數值等。
5
this.localization - 為您的自訂動作以及英文與本地化輸入與輸出欄位定義唯一權杖的屬性。指派以下參數的值:
namespace (必要) - 針對自訂動作自動產生的權杖。在所有自訂動作中,namespace 參數的值都必須具唯一性。
* 
請「勿」變更此值。
en (必要) - 欄位名稱與在內部使用的識別元名稱。下圖顯示了欄位名稱及其英文值:
de - 語言的欄位名稱與在內部使用的識別元名稱。範例程式碼提供了對等的德文值。您可新增多種語言及其對等值。
* 
如果您從 ThingWorx Flow 8.4.x 移轉至 ThingWorx Flow 8.5,在 ThingWorx Flow 8.4.x 中建立的自訂動作在 ThingWorx Flow 8.5 中可繼續使用。您可為自訂動作的輸入與輸出欄位新增當地語系化支援。不過,您無法當地語系化在 ThingWorx Flow 8.4.x 中建立之自訂動作的標籤。
6
this.execute - 定義當在工作流程中執行動作時所執行之程式邏輯的屬性。此函數必須定義下列兩個函數參數:
input - 在工作流程執行時包含輸入參數值的 JSON 物件。請使用輸入欄位金鑰參考這些值,如動作的 this.input 屬性中所定義。
output - 必須呼叫以將輸出值傳遞至工作流程的反呼叫函數。其表示動作已完成。請確保程式碼必須產生與 this.output JSON 結構描述相符的輸出 JSON。此函數的格式為 callback(err,output)
err - 報告工作流程中可能發生的任何錯誤。如果未發生錯誤,則指定 null
output - 具有在動作 this.output 屬性中定義之每個金鑰值的 JSON 物件。
這是否有幫助?