WF4 0 Beta1之旅 6 自定義活動

2021-08-30 03:32:09 字數 3317 閱讀 6552

一:程式集,命名空間,活動變化

wf4並非是在原有wf3.x上的改進,而是全新的開發有新的命名空間,程式集,原wf3的部分會繼續保留這主要是為了相容,下面的**告訴你具體的變化:

1.程式集的變化

wf3.x程式集

wf4程式集

system.workflow.activities.dll

system.activities.dll

system.workflow.componentmodel.dll

system.activities.dll

system.workflowservices.dll

system.servicemodel.activities.dll

2.名空間的變化

wf3.x命名空間

wf4命名空間

system.workflow.activities

system.activities.statements

system.workflow.componentmodel

system.activities

system.workflowservices

system.servicemodel.activities

3.活動的變化

wf3.x活動

wf4活動

callexternalmethodactivity

send

cancellationhandleractivity

cancellationscope

codeactivity

codeactivity/nativeactivity

compensateactivity

compensate

compensatablesequenceactivity

compensableactivity

conditionedactivitygroup

可通過其他方式實現

delayactivity

delay

eventhandlingscopeactivity

暫無faulthandlersactivity

trycatch

handleexternaleventactivity

receive

ifelseactivity

ifinvokewebserviceactivity

send

invokeworkflowactivity

暫無listenactivity

pick

parallelactivity

parallel

policyactivity

暫無replicatoractivity

foreach, parallelforeach

sendactivity

send

receiveactivity

receive

sequenceactivity, sequentialworkflowactivity

sequence

statemachineworkflowactivity

暫無suspendactivity

無synchronizationscopeactivity

無terminateactivity

無throwactivity

throw

transactionscopeactivity

transactionscope

compensatabletransactionscopeactivity

transactionscope + compensableactivity

webservicefaultactivity

集成為工作流服務

webserviceinputactivity

集成為工作流服務

webserviceoutputactivity

集成為工作流服務

whileactivity

while

二:自定義活動

1.活動基類繼承關係:

2.workflowelement 是所有活動的基類,activity,codeactivity,dynamicactivity,nativeactivity活動均繼承於該類,dynamicactivity是sealed不能用於

自定義活動。

3.可以使用設計器方式來視覺化的設計自定義活動,如下圖:

4.使用**的方式建立自定義活動,我們需要繼承自codeactivity和nativeactivity活動,這兩個活動的區別是他們的execute方法所帶的上下文環境不同,

codeactivity為codeactivitycontext,它只是乙個簡化版的上下文環境,對runtime沒有完全的訪問許可權,而nativeactivity的上下文環境

activityexecutioncontext,activityexecutioncontext支援scheduling,取消子活動的執行,持久化的支援,書籤的支援等等對runtime有完全的訪問許可權。

5.codeactivity和nativeactivity都有泛型版的,一般我們在建立需要返回值的活動時使用泛型版本,泛型版本的已經有乙個outargument的變數,

這個我們可以通過反編譯workflowelement看出,如下:

[typeconverter(typeof(valueexpressionconverter)), valueserializer(typeof(valueexpressionvalueserializer))]

public abstract class

workflowelement

: workflowelement, iactivitywithresult

type iactivitywithresult.expressiontype

outargument iactivitywithresult.result

}

6.與wf3.x中開發自定義活動不同的是在wf3中我們使用依賴屬性來繫結資料,在wf4中我們使用in引數或out引數及變數代替。另外在wf3.x中我們重寫

execute方法時需要返回activityexecutionstate,wf4中不需要返回值,因為wf4的runtime會自動判斷,透明了。

WF 4 0 beta1中的跟蹤機制

簡單的說,跟蹤服務是用來檢視工作流的執 況的功能。wf跟蹤基礎結構會檢測工作流執行時發出的一些關鍵事件,並進行記錄。例如,工作流在啟動或完成時,就會發出跟蹤記錄。跟蹤也可以提取與工作流變數相關聯的業務相關資料。例如,如果工作流表示乙個訂單處理系統,那麼訂單id就可以隨同跟蹤記錄一起被提取出來。一般來...

WF4 0 Beta1 用表示式關聯變數與引數

有 in引數 的activity 工作流 宿主workflowinstance myinstance new workflowinstance new sequence1 myinstance.run system.console.read 結果 下面用乙個例子說明 1.定義乙個有 int引數 的a...

WF4 0實現自定義表示式編輯器

主要有兩種情況下,您會希望實現自己的表示式編輯器 1 離開visual studio環境,在宿主應用程式中表示式編輯器將受到了各種限制,在宿主應用程式中不支援智慧型感應了。2 為業務分析人員簡化表示式的編輯體驗,能讓他們不需要學習vb或處理vb的表示式。下面組建乙個小型應用程式,說明怎麼實現自定義的...