经过前面几节的描述,我们基本上让第一个工作流运行起来了,但是很多人肯定都云里雾里的,配置文件为什么要这么些,doAction之流到底有什么用,有这些疑问在正常不过了,初次接触肯定会遇到诸如此类的问题,或许更有甚者,没关系,只要你有耐心阅读,那么我也会耐心的去写(谁怕谁啊!)

1、工作流程

我们为什么要定义helloworld.xml那样的文件,先来说说他所代表的意思吧,看看下面的这张活动图,然后我们在对照着进行解释。

2、详细解释

2.1、初始化节点

回顾一下helloworld.xml文件吧,再对照上面的状态图,其中initial-actions节点中的action代表需要初始化的动作,当一个工作流调用init方法的时候,其中inital-actions中的action将会被执行解析。

<initial-actions><action id="100" name="Start Workflow"><results><unconditional-result old-status="Finished"   status="Underway" step="1"/></results></action></initial-actions>

上面定义了一个action,并且是在initial时被执行的,在osworkflow中有一个规定,必须至少有一个action子节点在initial-actions中,因为每一个流程都必须进行初始化操作。初始化的时候或许会发生很多凄美的故事,再来说说action,我们定义了他的id是100,它代表action的序列号,而name属性则可以随便起,但是建议起一个能知其意的名字。

osworkflow工作流的流转是需要靠结果进行流转的,因此在action中我们定义了一个results节点,为什么是复数呢?意味着可以有多个result结果,但是必须有一个无条件的结果unconditional-result节点,当有条件的结果都不满足的时候或者没有有条件的结果的时候,无条件结果就会默认被执行(有条件结果集,我们会在后文中讲解),再来看看step属性(old-status和status属性,在后文中介绍),他表示执行完初始化之后,工作流流转到那个步骤,好了再来对照一下刚才的测试代码,其中是不是有一个init方法。

long id = wf.initialize("first", 100, Collections.EMPTY_MAP);

他就代表在workflow初始化的时候执行action中规定的动作。
2.2、步骤节点

步骤节点是osworkflow中最重要的概念之一,他是工作流的灵魂所在,对照着上面的状态图以及我们的配置文件,我们来看一下,在osworkflow中,步骤代表一下个流程的流转节点,在osworkflow中至少需要有一个step节点。

 <steps><step id="1" name="HELLOWORLD1"><actions><action id="1" name="helloWorld action1"><results><unconditional-result old-status="Finished"status="UnderWay" step="2" /></results></action></actions></step><step id="2" name="HELLOWORLD2"><actions><action id="2" name="helloWorld action2" finish="true"><results><unconditional-result old-status="Finished"status="UnderWay" step="-1" /></results></action></actions></step></steps>

当初始化完成之后,step指到了step=1这个位置,也就是说目前可执行的step只有1,因此我们运行了下面的代码

wf.doAction(id, 1, Collections.EMPTY_MAP);

当执行完step1的action1之后,result节点有指向了step2节点,我们显示的调用了

wf.doAction(id, 2, Collections.EMPTY_MAP);
这个时候step2的action2顺理成章的被执行了,但是在action2中多了一个属性那就是finish=true,表示执行到该步骤之后,整个工作流完全执行结束。
读者阅读到这里之后,想必osworkflow有了一个大体的认识,但是肯定存在很多疑问,没有关系,带着你的疑问,继续阅读接下来的文章,这也是为什么标题取名为“犹抱琵琶半遮面”的原因。

OSWorkFlow深入浅出(4)---犹抱琵琶半遮面相关推荐

  1. 【python 笔记/小白快速入门python】python浅谈(一)犹抱琵琶半遮面

    python浅谈(一)犹抱琵琶半遮面 继浅谈(零)初识庐山真面目[https://blog.csdn.net/HarryOtter/article/details/90519877 ] 之后,终于窥得 ...

  2. 【转载】MIMO技术杂谈(二):犹抱琵琶半遮面--MIMO信道中隐藏的秘密

    犹抱琵琶半遮面--MIMO信道中隐藏的秘密 无线通信中,最让人难以捉摸的,就是那看不见,摸不着的无线信道了.但是,正因为它的变化莫测,才让无线通信具有了独特的魅力.正如Tse在他的大作<无线通信 ...

  3. 犹抱琵琶半遮面--MIMO信道中隐藏的秘密

    [原创]MIMO技术杂谈(二):犹抱琵琶半遮面--MIMO信道中隐藏的秘密 - 通信原理与基础 - 通信人家园 - Powered by C114  无线通信中,最让人难以捉摸的,就是那看不见,摸不着 ...

  4. MIMO技术杂谈(二):犹抱琵琶半遮面--MIMO信道中隐藏的秘密

    犹抱琵琶半遮面--MIMO信道中隐藏的秘密          经典MIMO原理介绍,原文地址: http://bbs.c114.net/thread-668750-1-1.html         无 ...

  5. 犹抱琵琶半遮面--探究直播系统源码的真面目

    犹抱琵琶半遮面--探究直播系统源码的真面目 复制代码 随着各种直播平台的相继出现,直播系统源码也慢慢浮出水面.直播系统源码主要功能和技术难点在于视频流的推送和播放过程,下面我们就简单了解一下呆萌直播的 ...

  6. 对待开源 厂商为何“犹抱琵琶半遮面”

    软件设计天生就是可重用的,无论模块化设计,还是面向对象编程都体现了一个目标--减少不必要的重复开发.软件是人类共同的财富,软件的可继承性是软件迅速发展的基石.开源的目的也是最大程度地提高软件的复用性. ...

  7. Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)...

    ​简介 通过上一篇宏哥给各位小伙伴们的引荐,大家移动对这位美女有了深刻的认识,而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里,是不是这样呢???不要害羞直接告诉宏哥:是,就对了.宏哥要的就是这个 ...

  8. 深度解读Helm 3: 犹抱琵琶半遮面

    2019独角兽企业重金招聘Python工程师标准>>> 自去年年初开始放风Helm v3将要开始开发,到去年年底KubeConn 上海被一堆人追问到底啥时候发版本.今年五月份,Hel ...

  9. 千呼万唤始出来,犹抱琵琶半遮面-go语言初识

    文章目录 前言 go语言的简单介绍 go语言的历史 为什么要创建go这门语言 动态语言和静态语言的区 目前go语言的招聘 go的优势 有哪些公司在用go 有哪些go语言的优秀项目? go相关的资料及书 ...

最新文章

  1. 在docker中构建普通java程序_Docker入门-构建第一个Java程序
  2. python 类的知识点整理_Python opp知识整理
  3. 深度学习下的点击率预测:交互与建模
  4. 无人机飞控开发平台培训理论课程——飞行原理
  5. Valgrind动态分析工具
  6. 我从吴恩达课堂演讲中学到的一些建议
  7. linux与s7-300,Siemens SIMATIC S7-300硬编码凭证安全限制绕过漏洞
  8. Mac OS X Snow Leopard 10.6下载及安装
  9. 高精度ua级恒流源_UWB高精度室内定位系统案例--漫途科技
  10. 使用kubeadm安装kuberneters
  11. python怎么导入大小字母_python遍历小写英文字母的方法
  12. 5.接口参数过滤(phalapi框架总结)
  13. Java反射机制详解上篇
  14. 不可多得的MBA相关书籍推荐
  15. OpenGL圆柱面绘制贴图
  16. js数字输入的验证~
  17. 写给Krpano小白们的最最最入门级教程(一)
  18. 《JSP程序设计》手机销售网后台设计
  19. MySQL数据打标_易打标(标签条码打印软件)
  20. blinker点灯开关组件

热门文章

  1. 小白学流程引擎-FLowable(一) —FLowable是什么
  2. stp实验心得_STP实验报告
  3. Java大数字运算(BigInteger类和BigDecimal类)
  4. unity2D小游戏打地鼠
  5. 如何实时同步数据到StarRocks
  6. 如何将多页面pdf分割成一页一页的PDF文件
  7. python2.4无线模块_用Python实现喇叭天线设计小工具(二)
  8. 国防科技大学计算机原理真题答案,1996年国防科技大学计算机原理和系统结构试题...
  9. 我是一个新手小白,想学习C++编程,但是不知道该如何入手。请大神们给出一个简单的思路。
  10. 安装:Microsoft Project 2010