zoukankan      html  css  js  c++  java
  • 天很蓝,应该不会下雨

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

    昨天朋友让我概括一个工作流状态机模式的开发应用,我想.............想........想..........
    对他说"大富翁,用工作流的状态机模式开发大富翁游戏应该不错"
    最后,我得出一个结论,MS发布WCF,WPF,WF,一定是为他下一代的网络版,界面漂亮的大富翁游戏做准备

    昨天发了一个例子入门篇(1):介绍WWF,调试时注意引擎加载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  .以前做的那些项目竞然还没崩,真是奇怪

    十一到了,祝大家新年快乐

  • 相关阅读:
    宏队列与微队列
    async 与 await
    promise关键点
    promiseAPI
    promise基本使用
    JS中的错误(Error)即错误处理
    两种类型的回调函数(同步回调与异步回调)
    区别实例对象与函数对象
    在二叉树中查找指定值结点的所有祖先
    关于js点击事件出现 xx is not defined at HTMLAnchorElement.onclick 的问题
  • 原文地址:https://www.cnblogs.com/foundation/p/517842.html
Copyright © 2011-2022 走看看