更新 Power App 所使用的流程時的最佳做法
本文說明在 Power Apps 中執行 Microsoft 流程時,減輕常見錯誤的最佳做法和步驟。
適用於: Power Apps
原始 KB 編號: 4477072
Flow 執行時的錯誤碼 “InvokerConnectionOverrideFailed”
某些流程無法在Power Apps 中執行。 在 Flow 執行歷程記錄或 Power Apps 遙測中,您可能會收到類似下列的錯誤:
{
"code": "InvokerConnectionOverrideFailed",
"message": "Failed to parse invoker connections from trigger 'manual' outputs. Exception: Could not find any valid connection for connection reference name '<some_connection>' in APIM tokens header."
}
注意事項
當您在 Common Data Service 上呼叫 install
API (CDS) ,但回應是一般錯誤「安裝流程失敗」時,也會發生此錯誤。
原因
發生此問題的原因是流程已更新為使用新的連線,但應用程式仍然使用舊的流程元數據。 更新流程不會更新使用流程的應用程式。 若要解決此問題,您必須手動更新應用程式,變更才會反映在應用程式中,且流程才能運作。
風險降低步驟
注意事項
請務必在來源或開發環境中執行下列步驟,並更新解決方案。 更新解決方案之後,請將它匯入所有目標或生產環境。
- 使用 最新版的 Power Apps Studio 開啟要編輯的應用程式。
- 從應用程式移除流程 (從 Power Automate 索引標籤移除流程) 。
- 將流程重新新增至應用程式。
- 儲存並重新發佈應用程式。
Flow 執行時的錯誤碼 “ConnectionAuthorizationFailed”
{
"code": "ConnectionAuthorizationFailed",
"message": "The caller with object id '{user_id}' does not have the minimum required permission to perform the requested operation on connection '{some_connection_id}' under API '{some_connection_api}'."
}
原因
此錯誤表示,雖然製作者具有流程的許可權,但製作者沒有流程動作中所使用之相依聯機的許可權。 這是 Power Apps 和 Flow 整合的限制。
風險降低步驟
注意事項
請務必在來源或開發環境中執行下列步驟,並更新解決方案。 更新解決方案之後,請將它匯入所有目標或生產環境。
此緩和措施是讓流程中的所有連線都由單一使用者擁有,然後讓該使用者將流程新增至應用程式。
Flow 執行時的錯誤碼 “WorkflowTriggerIsNotEnabled”
{
"code": "WorkflowTriggerIsNotEnabled",
"message": "Could not execute workflow '<GUID>' trigger 'manual' with state 'Disabled': trigger is not enabled."
}
原因
此錯誤表示流程已關閉。
風險降低步驟
注意事項
請務必在來源或開發環境中執行下列步驟,並更新解決方案。 更新解決方案之後,請將它匯入所有目標或生產環境。
緩和措施是 開啟流程。
Flow 執行上的內部錯誤碼 “ResponseTimeout”
{
"error": {
"code": 504,
"source": "<api hub source>",
"clientRequestId": "<GUID>",
"message": "BadGateway",
"innerError": {
"error": {
"code": "ResponseTimeout",
"message": "The server did not receive a timely response from the upstream server. Request tracking id '<some_tracking_id>'."
}
}
}
}
原因
此錯誤表示同步流程需要超過 120 秒的時間, (2 分鐘) 完成,導致其逾時。 深入了解輸出同步要求的逾時限制。
風險降低步驟
注意事項
請務必在來源或開發環境中執行下列步驟,並更新解決方案。 更新解決方案之後,請將它匯入所有目標或生產環境。
緩和措施是 找出哪個流程執行花費的時間太長 ,並使用 針對執行緩慢的流程進行疑難解答中提供的解決方法,在兩分鐘內將其優化以執行。
Flow 執行時的錯誤碼 “0x80040265” 或 “0x80048d0b”
{
"code": " 0x80040265",
"message": "Failed to install the flow."
}
{
"code": " 0x80048d0b",
"message": "Failed to install the flow."
}
風險降低步驟
注意事項
請務必在來源或開發環境中執行下列步驟,並更新解決方案。 更新解決方案之後,請將它匯入所有目標或生產環境。
請嘗試下列其中一個錯誤碼所提及的解決方案:
Flow 執行時的錯誤碼 “MissingConnectionReference”
{
"code": " MissingConnectionReference' ",
"message": " Connection reference '<connection name>' was not given by invoker."
}
範例錯誤:
叫用者未提供連線參考 『<connection name>』。
原因
基本上,應用程式和流程元數據必須同步處理。 對流程所做的任何變更都需要應用程式製作者使用流程編輯應用程式,並移除或重新新增已變更的流程。
針對解決方案應用程式或流程,應用程式可能會在來源環境中成功叫用流程,然後在目標環境中失敗,並出現此錯誤訊息:
未為此服務設定連線。
原因是目標環境中的流程可能會有所變更,但該流程不存在於來源環境中。
風險降低步驟
注意事項
請務必在來源或開發環境中執行下列步驟,並更新解決方案。 更新解決方案之後,請將它匯入所有目標或生產環境。
在來源環境中,編輯應用程式。 拿掉流程,然後將流程重新新增至應用程式。 儲存併發佈變更。
在目標環境中,移除應用程式和流程上的所有非受控層。
匯出解決方案,並將其匯入目標環境。
注意事項
流程或應用程式上不能有非受控層,因為這可能會導致與流程的連線發生問題。
Flow 執行時的錯誤碼 “NotAllowedConnectionReferenceon”
{
"code": " NotAllowedConnectionReference",
"message": "Connection reference '<connection name>' was not given by invoker."
}
範例錯誤:
叫用者未提供連線參考 『<connection name>』。
原因
此錯誤表示應用程式具有流程元數據,指定安裝時需要 SQL 連線,但實際的流程元數據不同。
風險降低步驟
注意事項
請務必在來源或開發環境中執行下列步驟,並更新解決方案。 更新解決方案之後,請將它匯入所有目標或生產環境。
風險降低選項 1
在來源環境中,編輯應用程式。 拿掉流程,然後將流程重新新增至應用程式。 儲存併發佈變更。
在目標環境中,移除應用程式和流程上的所有非受控層。
匯出解決方案,並將其匯入目標環境。
注意事項
流程或應用程式上不能有非受控層,因為這可能會導致與流程的連線發生問題。
風險降低選項 2
- 將連接從 Embedded 變更為 Invoker。
- 流覽至流程入口網站以編輯和更新流程設定。
- 在流程詳細數據頁面的 [ 僅執行使用者] 區段中,選取 [ 編輯]。
- 若要將流量連線來源更新為 Invoker,請選取 [僅由執行使用者提供 ],然後儲存。
- 若要將流程連線來源更新為 Embedded,請選取 [使用此連線 並儲存]。
- 藉由觸發流程來驗證。 您會看到「安裝流程網路」呼叫現在成功。
其他徵兆
更新流程之後,從 Power Apps 對該流程的呼叫會開始失敗。
如果在未更新 Power App 的情況下將新的輸入新增至流程,流程將會失敗,並出現類似下列的錯誤訊息:
無法在行 '1' 和數據行 '1900' 處理動作 'Send_me_a_mobile_notification' 輸入中的範本語言表達式:無法評估範本語言表達式 'triggerBody () ['Sendmeamobilenotification_Text']',因為無法選取屬性 'Sendmeamobilenotification_Text'。 如需使用量詳細數據,請參閱
https://aka.ms/logicexpressions
。」如果執行流程所需的連線變更,應該會出現關於連線的錯誤:
在 Power Apps 中,看起來可能像這樣:
或者,在 Flow 中,看起來可能像這樣:
無法在行 '1' 和數據行 '1899' 處理動作 'Send_an_email' 輸入中的範本語言表達式:'模板語言表達式 'json (decodeBase64 (triggerOutputs () .. 無法評估 headers['X-MS-APIM-Tokens']) ) ['$connections']['shared_office365']['connectionId']'',因為屬性 'shared_office365' 不存在,可用的屬性為 'shared_flowpush'。 如需使用量詳細數據,請參閱
https://aka.ms/logicexpressions
。」如果移除響應輸出,Power Apps 會將值視為空白,而 Power App 的行為會非預期。
原因
若要從Power Apps叫用流程,Power Apps 必須知道流程需要哪些輸入、要提供給流程的連線,以及流程將傳回的輸出。 Power Apps 會將這項資訊儲存在 Power App 的定義中,這會在 Power App 的版本和其中使用的流程之間建立系結。 變更流程的這三個層面中的任何一個,可能會中斷與該流程整合的所有舊版 Power Apps。 若要修正受影響的Power App或使用其中一個流程變更,必須更新Power App。
最有可能中斷 Power Apps 呼叫流程能力的變更類型包括:
在 Power Apps 中新增 Ask 令牌。
新增連線。 例如,從先前未像 SharePoint 連接器一樣使用的連接器新增動作。
變更現有的連接。 例如,將現有的連接變更為新的連接。
從回應Power Apps 動作移除輸出。
輸入或輸出的其他變更不會中斷 Power Apps 與 Flow 之間的整合,但需要更新 Power App 才能使用它們。
解決方案
變更即時 Power App
發佈 Power App 之後,一律建議您製作 Power Apps 用來進行任何更新的流程複本。 即時 Power App 所參考流程的任何更新,都有可能中斷現有的使用者。 請勿刪除或關閉現有的流程,直到所有用戶都升級至新發行的Power App 版本。
在新版的 Power App 中,參考新的流程。 發佈新版本的Power App時,用戶會開始使用具有正確輸入、輸出和連線的新流程。 這會防止新版 Power Apps 的流程更新影響現有版本的使用者。
變更Power App 開發版本
開發 Power App 時,輕鬆變更 Power App 即時版本未使用的流程。 對未發佈流程的輸入、輸出或連線進行變更之後,請從 [流程] 窗格重新選取 流程 。
它會更新Power App 中流程的定義,以驗證Power App 中是否使用正確的輸入、輸出和連線。
在 Power App 發佈之前,Power App 的使用者將不會開始使用新的流程。 因此,在 Power App 的即時版本使用現有流程之前,更新現有流程是正常的。