使用 WorkflowIdentity 和版本控制

2021-09-06 20:17:37 字數 3423 閱讀 4241

.net framework 4.5

主題內容

公升級 .net framework 4 永續性資料庫以支援工作流版本控制

使用 workflowidentity

安全說明

workflowidentity 不應包含任何個人身份資訊 (pii)。 在幾個不同活動生命週期點,執行時將向任何已配置的跟蹤服務發出有關用於建立例項的workflowidentity 的資訊。 wf 跟蹤沒有任何隱藏 pii(敏感使用者資訊)的機制。 因此,workflowidentity 例項不應該包含任何 pii 資料,因為執行時將在跟蹤記錄中發出這些資料,任何有權檢視跟蹤記錄的人都能夠看到這些資料。

在以下示例中,建立了 workflowidentity 並將它與使用 mortgageworkflow 工作流定義建立的工作流例項相關聯。

c#

workflowidentity identityv1 = new workflowidentity

;// run the workflow.

c#

// load the workflow.

// resume the workflow...

c#

// attempt to load the workflow instance.

// resume the workflow...

執行前一段**時,引發了以下 versio****matchexception。

所載入例項的 workflowidentity ('mortgageworkflow v1; version=1.0.0.0') 與提供的工作流定義的 workflowidentity ('mortgageworkflow v2; version=2.0.0.0') 不匹配。可以使用不同的定義載入此例項,或使用動態更新更新此例項。

可使用 workflowidentity 幫助並行執行乙個工作流的多個版本。一種常見的情形是更改長期執行的工作流的業務需求。部署更新版本時,可能正在執行乙個工作流的多個例項。可對主機應用程式進行配置,使之在啟動新例項時使用更新過的工作流定義,並且該主機應用程式應負責在恢復例項時提供正確的工作流定義。workflowidentity 可用於在恢復工作流例項時確定和提供匹配的工作流定義。

說明

空 workflowidentity 是有效的,主機可以用它將沒有關聯 workflowidentity 的持久化例項對映到正確的工作流定義。如果最初編寫工作流應用程式時沒有採用工作流版本控制,或者應用程式從 .net framework 4 公升級而來,則可能發生這種情況。有關詳細資訊,請參閱 更新 .net framework 4 永續性資料庫以支援工作流版本控制。

在以下示例中,使用了乙個 dictionary將 workflowidentity 例項與其匹配的工作流定義相關聯,並使用了與identityv1 workflowidentity 相關聯的 mortgageworkflow 工作流定義來啟動乙個工作流。

c#

workflowidentity identityv1 = new workflowidentity

;workflowidentity identityv2 = new workflowidentity

;dictionaryworkflowversionmap = new dictionary();

workflowversionmap.add(identityv1, new mortgageworkflow());

workflowversionmap.add(identityv2, new mortgageworkflow_v2());

// run the workflow.

說明

c#// sqlworkflowinstancestore.

// use the persisted workflowidentity to retrieve the correct workflow

// definition from the dictionary.

activity definition = workflowversionmap[instance.definitionidentity];

// load the persisted workflow instance.

// resume the workflow...

公升級 .net framework 4 永續性資料庫以支援工作流版本控制

sqlworkflowinstancestoreschemaupgrade.sql 資料庫指令碼旨在用於公升級使用 .net framework 4 資料庫指令碼建立的永續性資料庫。 此指令碼會更新這些資料庫,使之支援 .net framework 4.5 中推出的全新版本控制功能。 資料庫中任何持久化工作流例項都將獲得預設的版本控制值,然後就可以參與並行執行和動態更新。

如果某個 .net framework 4.5 工作流應用程式嘗試執行任何永續性操作,而此類操作對尚未使用提供的指令碼公升級的永續性資料庫使用新的版本控制功能,則將引發 instancepersistencecommandexception,並顯示與以下訊息內容類似的訊息。

sqlworkflowinstancestore 的資料庫版本為「4.0.0.0」。

instancepersistencecommand 'system.activities.durableinstancing.createworkflowownerwithidentitycommand' 無法針對此資料庫版本執行。

請將此資料庫公升級為「4.5.0.0」。

開啟 sql server management studio 並連線到永續性資料庫伺服器,例如 .\sqlexpress。

從檔案」選單中依次選擇「開啟」和「檔案」。

瀏覽到以下資料夾:c:\windows\microsoft.net\framework\4.0.30319\sql\en

選擇「sqlworkflowinstancestoreschemaupgrade.sql」,然後單擊「開啟」。

在「可用資料庫」下拉列表中選擇永續性資料庫的名稱。

從「查詢」選單中選擇「執行」。

查詢完成時,資料庫架構將公升級,您可以根據需要檢視分配給持久化工作流例項的預設工作流標識。 在物件資源管理器中的「資料庫」節點中展開您的永續性資料庫,然後展開「檢視」節點。

右鍵單擊「system.activities.durableinstancing.instances」,然後選擇「選擇前 1000 行」。

滾動到列的末尾,可以看到檢視中另外新增了六列,它們是:「identityname」、「identitypackage」、「build」、「major」、「minor」以及「revision」。

任何持久化工作流的這些欄位都將為 null 值,這表示空工作流標識。

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...