wf提供了一種用於對所有支援資料輸入的活動的、基於角色的訪問機制。工作流建立者可以完全控制如何建立角色和角色集合。這樣將使建立者能夠提供必
要的授權機制,在執行活動之前驗證呼叫者的角色。比如wf中的webserviceinputactivity 和 handleexternaleventactivity活動。
wf中提供來兩種方式:activedirectoryrole(通過活動目錄使用者)和webworkflowrole(asp.net role)。下面舉例說明:
1.我們使用handleexternaleventactivity活動來提供圖書檢索功能,當有人檢索的時候會觸發檢索事件,只有會員才可以使用該功能。首先來定義事件引數:
using system;2.事件介面如下:using system.collections.generic;
using system.linq;
using system.text;
using system.workflow.activities;
namespace carywfrole
public string name
public string author
public bookeventargs()
: base(guid.newguid())
public bookeventargs(guid instanceid, string id, string name, string author)
: base(instanceid)}}
using system;3.實現該介面,**如下:using system.collections.generic;
using system.linq;
using system.text;
using system.workflow.activities;
namespace carywfrole
}
using system;4.工作流設計如下:using system.collections.generic;
using system.linq;
using system.text;
using system.security.principal;
namespace carywfrole
", identity.name);
if (searchbook != null)
searchbook(null, args);}}
}
通過設定檢索事件(handleexternaleventactivity)活動的的roles屬性來控制,只有該角色集合的使用者才有許可權。在工作流中我們只允許會員才可以做
檢索,**如下:
using system;using system.componentmodel;
using system.componentmodel.design;
using system.collections;
using system.drawing;
using system.linq;
using system.workflow.componentmodel.compiler;
using system.workflow.componentmodel.serialization;
using system.workflow.componentmodel;
using system.workflow.componentmodel.design;
using system.workflow.runtime;
using system.workflow.activities;
using system.workflow.activities.rules;
namespace carywfrole
private
workflowrolecollection sallowroles = new
workflowrolecollection();
public
workflowrolecollection allowroles
}private void codeactivity1_executecode(object sender, eventargs e)
private void handleexternaleventactivity1_invoked(object sender, externaldataeventargs e)}}
5.通過如下函式來建立角色和使用者,**如下:
static void createroles(); string clerkrole = ;
system.web.security.roles.adduserstoroles(users, clerkrole);
}
}
6.假設以張三的身份來檢索,觸發事件的函式如下:
static void sendsearchrequest()7.宿主程式如下:catch (exception e)
", e.tostring());}}
using system;using system.collections.generic;
using system.linq;
using system.text;
using system.threading;
using system.workflow.runtime;
using system.workflow.runtime.hosting;
using system.security.principal;
using system.workflow.activities;
namespace carywfrole
}static void onworkflowcompleted(object sender, workflowcompletedeventargs e)
static void onworkflowterminated(object sender, workflowterminatedeventargs e)}}
xmlversion
="1.0" encoding
="utf-8" ?>
<
configuration
>
<
connectionstrings
>
<
add
name
="sqlserverconnection"
connectionstring
="integrated security = sspi;server=.;database=aspnetdb" />
connectionstrings
>
<
system.web
>
<
rolemanager
enabled
="true" defaultprovider
="sqlprovider">
<
providers
>
<
add
name
="sqlprovider" connectionstringname
="sqlserverconnection"
="system.web.security.sqlroleprovider,
system.web, version=2.0.3600.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" />
providers
>
rolemanager
>
system.web
>
configuration
>
9.執行結果如下:
在中使用SQLDMO
曾幾何時,夥伴們為的公升級傷透了腦筋.往往程式的公升級趕不上資料庫的公升級 版本控制的好,這也許不是什麼問題,但對於很大一部分中國公司來說這是無法避免的 而有些n久以前的資料庫要使用新程式的時候,資料庫的公升級簡直就是無從下手.所以對比資料庫公升級的緊要性就逐漸的凸現出來.對於表和字段的公升級按道理...
在ClanLib中使用blend func
本文是對blend func完全沒有認識的人寫的,就好象一天前的我一樣。廢話我就留到後面才說吧。在clanlib庫中的cl su ce與cl sprite中都會有 這個函式 void set blend func cl blendfunc src,cl blendfunc dest 其cl blen...
在MFC中使用Tab Control
說實話,我剛開始看見tab control的時候,覺得很簡單。哪知道用了一下,才發現自己錯了。要用好它,還是需要一些技巧的。經過網上搜尋資料,以及我自己的摸索,把一些要點記錄在這裡。tab control的執行效果有點像property sheet,但兩者還是有一些區別。我的理解就是property...