

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 頁面和自動化參數
<a name="paramters"></a>

參數是 AWS App Studio 中的強大功能，用於在應用程式中的不同元件、頁面和自動化之間傳遞動態值。使用參數，您可以提供靈活且內容感知的體驗，讓您的應用程式更具回應性和個人化性。本文涵蓋兩種類型的參數：頁面參數和自動化參數。

**Topics**
+ [頁面參數](parameters-page.md)
+ [自動化參數](parameters-automation.md)

# 頁面參數
<a name="parameters-page"></a>

頁面參數是一種在頁面之間傳送資訊的方式，通常用於在 App Studio 應用程式中從一個頁面導覽至另一個頁面，以維護內容或傳遞資料。頁面參數通常由名稱和值組成。

## 頁面參數使用案例
<a name="parameters-pages-use-cases"></a>

頁面參數用於在 App Studio 應用程式的不同頁面和元件之間傳遞資料。對於下列使用案例特別有用：

1. **搜尋和篩選**：當使用者在您的應用程式首頁上搜尋時，搜尋詞彙可以做為參數傳遞至結果頁面，使其僅顯示相關的篩選項目。例如，如果使用者搜尋*降噪耳機*，則具有*降噪耳機*值的 參數可以傳遞至產品清單頁面。

1. **檢視項目詳細資訊**：如果使用者按一下清單，例如產品，則該項目的唯一識別符可以做為參數傳遞至詳細資訊頁面。這可讓詳細資訊頁面顯示特定項目的所有資訊。例如，當使用者按一下耳機產品時，產品的唯一 ID 會做為參數傳遞至產品詳細資訊頁面。

1. **在頁面導覽中傳遞使用者內容**：當使用者在頁面之間導覽時，參數可以傳遞重要的內容，例如使用者的位置、偏好的產品類別、購物車內容和其他設定。例如，當使用者瀏覽應用程式上的不同產品類別時，其位置和偏好的類別會保留為參數，以提供個人化且一致的體驗。

1. **深層連結**：使用頁面參數來共用或將應用程式中特定頁面的連結加入書籤。

1. **資料動作**：您可以建立接受參數值的資料動作，以根據傳遞的參數篩選和查詢資料來源。例如，在產品清單頁面上，您可以建立接受`category`參數的資料動作來擷取相關產品。

## 頁面參數安全性考量事項
<a name="parameters-pages-security"></a>

雖然頁面參數提供了在頁面之間傳遞資料的強大方式，但您必須謹慎使用它們，因為如果未正確使用，它們可能會公開敏感資訊。以下是需要記住的重要安全考量：

1. **避免在 URLs中公開敏感資料**

   1. **風險**：URLs，包括資料動作參數，通常可見於伺服器日誌、瀏覽器歷史記錄和其他位置。因此，請務必避免在頁面參數值中公開敏感資料，例如使用者登入資料、個人身分識別資訊 (PII) 或任何其他機密資料。

   1. **緩解**：考慮使用可以安全地映射到敏感資料的識別符。例如，您可以傳遞隨機的唯一識別符，用來擷取使用者名稱或電子郵件，而不是傳遞使用者名稱或電子郵件地址做為參數。

# 自動化參數
<a name="parameters-automation"></a>

自動化參數是 App Studio 中強大的功能，可透過傳遞各種來源的動態值，例如 UI、其他自動化或資料動作，來建立靈活且可重複使用的自動化。它們可做為預留位置，在執行自動化時以實際值取代，讓您每次使用相同的自動化搭配不同的輸入。

在自動化中，參數具有唯一的名稱，您可以使用參數變數來參考參數的值，後面接著參數的名稱，例如 `{{params.customerId}}`。

本文提供對自動化參數的深入了解，包括基本概念、用量和最佳實務。

## 自動化參數優點
<a name="parameters-automation-benefits"></a>

自動化參數提供多種優點，包括下列清單：

1. **可重複使用性**：透過使用參數，您可以建立可重複使用的自動化，這些自動化可以使用不同的輸入值進行自訂，讓您可以使用不同的輸入重複使用相同的自動化邏輯。

1. **彈性**：您可以視需要定義參數並提供不同的值，讓您的自動化更具動態性和適應性，而不是硬式編碼的自動化值。

1. **問題分離**：參數有助於將自動化邏輯與使用的特定值分開，進而提升程式碼組織和可維護性。

1. **驗證**：每個參數都有資料類型，例如字串、數字或布林值，並在執行時間進行驗證。這可確保拒絕具有不正確資料類型的請求，而不需要自訂驗證碼。

1. **選用和必要參數**：您可以將自動化參數指定為選用或必要。執行自動化時必須提供必要的參數，而選用參數可以有預設值或省略。此彈性可讓您建立更多樣化的自動化，以根據提供的參數處理不同的案例。

## 案例和使用案例
<a name="parameters-automation-scenarios"></a>

### 案例：擷取產品詳細資訊
<a name="parameters-automation-scenario-product-details"></a>



假設您有一個自動化，可根據產品 ID 從資料庫擷取產品詳細資訊。此自動化可以有一個名為 的參數`productId`。

`productId` 參數充當預留位置，您可以在執行自動化時填入實際的產品 ID 值。您可以定義 `productId` 參數，並在每次執行自動化時傳入不同的產品 ID 值，而不是將特定產品 ID 硬式編碼到自動化中。

您可以從元件的資料來源呼叫此自動化，並使用雙大括號語法傳遞所選產品的 ID 做為 `productId` 參數：`{{ui.productsTable.selectedRow.id}}`。如此一來，當使用者從資料表選取產品 (`ui.productsTable`) 時，自動化將透過傳遞所選列的 ID 做為 `productId` 參數來擷取所選產品的詳細資訊。

或者，您可以從另一個自動化叫用此自動化，循環瀏覽產品清單，並透過傳遞產品的 ID 做為 `productId` 參數來擷取每個產品的詳細資訊。在此案例中，`productId`參數值會從迴圈的每個反覆運算中的`{{product.id}}`表達式動態提供。

透過使用 `productId` 參數和雙大括號語法，您可以讓此自動化更具彈性且可重複使用。您可以只提供適當的產品 ID 做為來自不同來源的參數值，例如 UI 元件或其他自動化，讓單一自動化能夠擷取任何產品的詳細資訊，而不是為每個產品建立個別的自動化。

### 案例：使用備用值處理選用參數
<a name="parameters-automation-scenario-optional-parameters"></a>

假設您有一個具有必要「擁有者」欄的「任務」實體，但您希望此欄位在自動化中是選用的，並在未選取擁有者時提供備用值。

1. 使用名為 的參數建立自動化`Owner`，該參數會映射到`Task`實體的 `Owner` 欄位。

1. 由於 實體中需要 `Owner` 欄位，因此 `Owner` 參數會與所需的設定同步。

1. 若要在自動化中將 `Owner` 參數設為選用，請關閉此參數`required`的設定。

1. 在自動化邏輯中，您可以使用類似 的表達式`{{params.Owner || currentUser.userId}}`。此表達式會檢查是否提供 `Owner` 參數。如果未提供，則會回復到目前使用者的 ID 做為擁有者。

1. 如此一來，如果使用者未在表單或元件中選取擁有者，自動化會自動將目前的使用者指派為任務的擁有者。

透過切換`Owner`參數`required`的設定並使用備用表達式，您可以將其與實體欄位需求分離，使其在自動化中為選用，並在未提供參數時提供預設值。

## 定義自動化參數類型
<a name="parameters-automation-create"></a>

透過使用參數類型來指定資料類型和設定需求，您可以控制自動化的輸入。這有助於確保您的自動化使用預期的輸入可靠地執行。

### 從實體同步類型
<a name="parameters-automation-synchronize-entity"></a>

從實體欄位定義動態同步參數類型和需求，可簡化與實體資料互動的建置自動化，確保 參數一律反映最新的實體欄位類型和需求。

下列程序詳細說明從 實體同步參數類型的一般步驟：

1. 建立具有輸入欄位 （例如布林值、數字等） 的實體，並視需要標記欄位。

1. 建立新的自動化。

1. 將參數新增至自動化，並在選擇**類型**時，選擇您要同步的實體欄位。資料類型和必要設定會自動從映射的實體欄位同步

1. 如有需要，您可以透過切換每個參數的開啟/關閉來覆寫「必要」設定。這表示所需的狀態不會與實體欄位保持同步，否則會保持同步。

### 手動定義類型
<a name="parameters-automation-custom-types"></a>

您也可以手動定義參數類型，而無需從實體同步

透過定義自訂參數類型，您可以建立接受特定輸入類型的自動化，並視需要處理選用或必要的參數，而無需依賴實體欄位映射。

1. 建立具有輸入欄位 （例如布林值、數字等） 的實體，並視需要標記欄位。

1. 建立新的自動化。

1. 將參數新增至自動化，並在選擇**類型**時，選擇所需的類型。

## 設定要傳遞至自動化參數的動態值
<a name="parameters-automation-pass-values"></a>

定義自動化的參數之後，您可以在叫用自動化時將值傳遞給它們。您可以透過兩種方式傳遞參數值：

1. **元件觸發**：如果您要從元件觸發叫用自動化，例如按一下按鈕，您可以使用 JavaScript 表達式從元件內容傳遞值。例如，如果您有名為 的文字輸入欄位`emailInput`，您可以使用下列表達式將其值傳遞至電子郵件參數：`ui.emailInput.value`。

1. **其他自動化**：如果您要從另一個自動化叫用自動化，您可以使用 JavaScript 表達式從自動化內容傳遞值。例如，您可以傳遞另一個參數的值或上一個動作步驟的結果。

## 類型安全
<a name="parameters-automation-type-safety"></a>

透過定義具有字串、數字或布林等特定資料類型的參數，您可以確保傳遞至自動化的值為預期類型。

**注意**  
在 App Studio 中，date(s) 是 ISO 字串日期，也會驗證這些日期。

這種類型的安全有助於防止類型不相符，這可能會導致自動化邏輯中的錯誤或意外行為。例如，如果您將參數定義為 `Number`，您可以確信傳遞給該參數的任何值都會是數字，而且您不需要在自動化內執行額外的類型檢查或轉換。

## 驗證
<a name="parameters-automation-validation"></a>

您可以將驗證規則新增至參數，確保傳遞至自動化的值符合特定條件。

雖然 App Studio 不提供參數的內建驗證設定，但您可以將 JavaScript 動作新增至自動化，以便在違反特定限制條件時擲出錯誤，以實作自訂驗證。

對於實體欄位，支援驗證規則的子集，例如最小值/最大值。不過，執行Create/Update/Delete記錄動作時，這些項目不會在自動化層級進行驗證，只會在資料層進行。

## 自動化參數的最佳實務
<a name="parameters-automation-best-practices"></a>

為了確保您的自動化參數設計良好、可維護且易於使用，請遵循下列最佳實務：

1. **使用描述性參數名稱**：選擇可清楚描述參數目的或內容的參數名稱。

1. **提供參數描述**：定義參數以解釋其目的、限制條件和期望時，請利用**描述**欄位。在參考 參數時，這些描述會出現在 JSDoc 註解中，以及在使用者調用自動化時需要為參數提供值的任何使用者介面中。

1. **使用適當的資料類型**：根據預期的輸入值仔細考慮每個參數的資料類型，例如：字串、數字、布林值、物件。

1. **驗證參數值**：在自動化中實作適當的驗證檢查，以確保參數值符合特定需求，然後再繼續進行進一步的動作。

1. **使用備用或預設值**：雖然 App Studio 目前不支援設定參數的預設值，但您可以在使用自動化邏輯中的參數時實作備用或預設值。例如，如果未`{{ params.param1 || "default value" }}`提供 `param1` 參數或具有 false 值，您可以使用 等表達式來提供預設值。

1. **維持參數一致性**：如果您有多個自動化需要類似的參數，請嘗試維持這些自動化中參數名稱和資料類型的一致性。

1. **文件參數用量**：維護自動化的明確文件，包括每個參數的說明、其用途、預期值，以及任何相關的範例或邊緣案例。

1. **經常檢閱和重構**：定期檢閱自動化及其參數，視需要重構或合併參數，以提高清晰度、可維護性和可重複使用性。

1. **限制參數數量**：雖然參數提供彈性，但太多參數會使自動化複雜且難以使用。旨在透過將參數數量限制為僅必要項目，在靈活性和簡單性之間取得平衡。

1. **考慮參數分組**：如果您發現自己定義了多個相關參數，請考慮將它們分組為單一*物件*參數。

1. **個別考量**：避免將單一參數用於多個用途，或將不相關的值合併為單一參數。每個參數都應該代表不同的考量或資料片段。

1. **使用參數別名**：如果您有名稱較長或複雜的參數，請考慮在自動化邏輯中使用別名或速記版本，以提高可讀性和可維護性。

透過遵循這些最佳實務，您可以確保自動化參數設計良好、可維護且易於使用，最終改善自動化的整體品質和效率。