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.9974.实例在引擎中创建后,还没开始执行前,如调用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 instance7.没有加载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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月25日 13时04分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Unity3D 摇一摇功能
2019-04-27
unity3D 在屏幕边框创建碰撞框
2019-04-27
unity3D 音频播放
2019-04-27
xml中常用的转义符
2019-04-27
腾讯MSDK手Q微信授权登录
2019-04-27
腾讯MSDK for Unity
2019-04-27
关于MSDK的几个难点
2019-04-27
使用UnityEditor做工具
2019-04-27
Visual Studio我常用的快捷键
2019-04-27
写C# dll供Unity调用
2019-04-27
Linux制作run安装包
2019-04-27
一分钟学会C#解析XML
2019-04-27
unity AssetBundle的资源管理
2019-04-27
【转】Unity中HideInInspector和SerializeField一起使用
2019-04-27
单例模板类
2019-04-27
Unity与java相互调用
2019-04-27
android截屏代码
2019-04-27
unity NGUI图文混排
2019-04-27
Unity项目优化
2019-04-27
Unity3D Shader 入门
2019-04-27