• WF本质论 读书心得 1 剖析WF (下)


    复合语句组件

    接下来要做的是把OpenSesame分成若干小单元
    第一次分割,将Read从OpenSesame中分离出来
    OpenSesame中,调用了Read
    这里的关键是,如何在Read完成执行后,通知调用者OpenSesame。
    处理方法:在Read的Start/Run方法中使用一个书签,从而暂停了程序;Read执行完毕,最后一步恢复书签,通知了书签管理器BookmarkManager,激活了调用者OpenSesame的异步方法ContinueAt,使之得到了通知。

    第二次分割,将剩余的OpenSesame割分为PrintKey和PrintGreeting
    *注:每个活动的mgr都是属于自己本身的,之间没有联系
    为此,建立活动的集合类ProgramStatementBlock:ProgramStatement,注意Run方法与ContinueAt方法的配合,使用了迭代技术; 以及通过runtime.RunProgram()方法,间接调用programStatement.Run(mgr)

    最后,作一点小修改。注意到,ProgramStatementBlock仅仅是一个像{}样子的顺序流,此外还有其他的控制流(if,switch,for,while,foreach)——统称为复合语句组件,于是我们建立CompositeProgramStatement类,派生于ProgramStatement;而所有的控制流包括ProgramStatementBlock,都派生于这个复合类CompositeProgramStatement

    接着创建了IfElse活动和While活动,以及Interleave活动。
        其中,InterLeave活动,并行的执行它所包含的语句组件,直至全部执行完毕。

    为了防止ProgramStatement的方法被外界随便调用,将其声明为protected internal,从而只能由书签管理器间接调用。

    * Done()方法,仅限于每个活动中都仅有一个Bookmark,而且没有参数;不然,要重载Done()方法,加上bookmarkName和payload这两个参数

    *注:为了让所有的OpenSesame()方法格式统一,现在一致使用Start()取代Run()方法,将所有的BookmarkLocation变量名统一为bookmarkLocation,由此在原书代码上有所修改,但是使整章风格一致。

  • 相关阅读:
    基于ffmpeg 直播推流和播放rtmp (IOS源码)
    Hadoop 安装指南
    机器学习算法( 七、AdaBoost元算法)
    机器学习算法( 五、Logistic回归算法)
    机器学习算法( 四、朴素贝叶斯算法)
    机器学习算法( 三、决策树)
    机器学习算法( 二、K
    Solr 多字段、打分规则、权重和实时索引同步
    Android Activity生命周期
    .net , java webSocket 连接 Socket.io (1.4.4版本) 问题
  • 原文地址:https://www.cnblogs.com/Jax/p/1079902.html
Copyright © 2020-2023  润新知