WorkflowRuntime与PersistenceService
发布日期:2022-02-13 21:45:55 浏览次数:26 分类:技术文章

本文共 1867 字,大约阅读时间需要 6 分钟。

(注:标题与文章内容无关)

昨天朋友让我概括一个工作流状态机模式的开发应用,我想.............想........想..........
对他说"大富翁,用工作流的状态机模式开发大富翁游戏应该不错"
最后,我得出一个结论,MS发布WCF,WPF,WF,一定是为他下一代的网络版,界面漂亮的大富翁游戏做准备
昨天发了一个例子,调试时注意引擎加载SqlWorkflowPersistenceService服务的以下特点
WorkflowRuntime与PersistenceService以一种松散藕合的方式工作。
SqlWorkflowPersistenceService作为一个PersistenceService的功能实现类加载到WorkflowRuntime中为引擎提供了一种使用SQLServer数据实现持久化的功能。
1.每当引擎起动时(StartRuntime),只要InstanceState表中有实例数据,就会将该实例载入引擎中,并将ownedUntil字段设为加载的时间
2.每当引擎停止时(StopRuntime),就会将引擎内的所有工作流实例存入InstanceState表,ownedUntil字段为空
 注:没加载SqlWorkflowPersistenceService服务时,引擎停止后,引擎并没有释放,引擎中的实例也存在,只是所有的执行都被系统级挂起,当重新启动引擎时,所有的实例还可继续运行
3. 实例在挂起状态时(如:实例.Suspend),如调用UnLoad方法,status值为2,unlocked值为1,blocked值为0,info 值为Suspend方法的参数,modified为操作的时间,nextTimer为9999-12-31 23:59:59.997
4.实例在引擎中创建后,还没开始执行前,如调用Unload方法,status值为4,info值为空其他同上。
5.实例在运行到Delay结点的idle状态时,如调用Unload方法,status值为0,unlocked值为1,blocked值为1,nextTimer值为实际Delay应苏醒的时间。
SqlWorkflowPersistenceService会不停的刷InstanceState表,发现有状态为Delay的实例,则nextTimer小于当前时间,就执行他。
所以,持久化Delay状态的实例,不用人为加载运行,SqlWorkflowPersistenceService服务会自动运行的。

6.引擎.GetWorkflow(GUID)方法可以返回一个引擎中存在的实例,

如果引擎中不存在,SqlWorkflowPersistenceService服务会到数据库中找该实例,并将其加载到引擎
如果引擎中没有指定GUID的实例,会报Workflow with id "GUID" not found in state persistence store.
如 没加载SqlWorkflowPersistenceService服务报的异常为The workflow hosting environment does not have a persistence service as required by an operation on the workflow instance
7.没有加载SqlWorkflowPersistenceService时, 实例的TryUnload方法会报异常。
8.没有经过持久化的实例,调用load方法不会出错,也不产生引擎的WorkflowLoaded事件
9.加载的持久化实例不用load方法也能直接操作,但这样不会产生引擎的WorkflowLoaded事件,调用load方法可以产生引擎的WorkflowLoaded事件,除此之外,我没跟出什么其他的
10.引擎没正常退出时,ownedUntil字段不会改为空,但不会响应下次的引擎的正常启动,仍按方式[1]启动
11.已被持久化的实例,Delay状态的实例,在到时后会被刷回引擎,其他状态的实例不会被刷回引擎
12.引擎运行时,InstanceState表并没有上锁,因此可以多个引擎同时作用于同一实例表
13. status的值在其他文提过,自已跟完猜一下也行

另外,为这几天的文章写一个目录 ,以我的智商能写出这东西真的不容易,我在自已电脑上找资料总是全盘查找 *.doc  .以前做的那些项目竞然还没崩,真是奇怪

转载地址:https://blog.csdn.net/glumtree/article/details/1810765 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Toad 使用快速入门
下一篇:WWF的一些注意点[新手向]

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月25日 13时04分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章