谈谈各大框架/产品的流程应用

原创 2008年01月07日 21:17:00
1  长子:业务流
   业务流程了解得比较多,这里就不废话了。举几个例子用做广告:) EOS工作流/jBPM/其他的BPEL产品 等,我的博客上写了不少其他的产品(blog.csdn.net/hongbo781202/)。业务流程可能横跨多个用户的多次对话,流程的状态被保存在数据库中,所以流程被认为是长时间运行的。

2   老二:无状态的页面流

   无状态的页面流早已经存在,大家也都非常熟悉。就比如webwork框架等。无状态的页面流定义了一种映射,把事件的的逻辑结果用命名规则直接映射到视图的结果页面。新近的两个无状态的页面流是JSF和Seam框架。
    JSF举例如下:
<navigation-rule>
    <from-view-id>/numberGuess.jsp</from-view-id>
       
    <navigation-case>
        <from-outcome>guess</from-outcome>
        <to-view-id>/numberGuess.jsp</to-view-id>
        <redirect/>
    </navigation-case>

    <navigation-case>
        <from-outcome>win</from-outcome>
        <to-view-id>/win.jsp</to-view-id>
        <redirect/>
    </navigation-case>
       
    <navigation-case>
        <from-outcome>lose</from-outcome>
        <to-view-id>/lose.jsp</to-view-id>
        <redirect/>
    </navigation-case>

</navigation-rule>
     Seam举例如下:
<page view-id="/numberGuess.jsp">
       
    <navigation>
        <rule if-outcome="guess">
            <redirect view-id="/numberGuess.jsp"/>
        </rule>
        <rule if-outcome="win">
            <redirect view-id="/win.jsp"/>
        </rule>
        <rule if-outcome="lose">
            <redirect view-id="/lose.jsp"/>
        </rule>
    </navigation>

</page>(说明:这两个example是从seam的userguide中抄过来的)。

3  老三:有状态的页面流
  用过业务流程和无状态的页面流的同学大都有过心痒痒的感觉,是不是这两个东西可以合起来用啊?因为我以前一直是做业务流程的,所以我在05年就做过一套“自认为创世纪的东东”,其实就是把业务流程用到页面上来。后来终于有一天,知道了这个东西的名字是“页面流”,也知道那个“自认为创世纪的东东”早就在业界有了产品了。  我最早是用BEA workshop试验的页面流,当时挺撼动的,毕竟比自己捣鼓
的那个东东强多了。现在想来也就很一般的功能。
  BEA的jpf毕竟不是标准,(应该不是吧?呵呵)为了推广市场,BEA的Beehive包含了一个jpf框架:Pollinate的NetUI。NetUI Page Flow(页面流)是一个基于Apache Sruts的Web应用程序框架,基于JSR-175元数据,它构建在模型/视图/控制器元素的核心Struts分离的基础之上。
  如果说NetUI Page Flow更偏重于无状态的页面流(使用简单),那么Spring WebFlow更偏重于业务流程(功能强大)。Spring WebFlow以有限自动机(Finite State machine)的概念为基础。Web应用内部的用户交互行为和事务被建模为一般的状态机。
  EOS的页面流更是同时吸收了BEA JPF的优点(eclipse插件方便用户开发)和Spring WebFlow的优点(功能全面),大家可以下载EOS6.0试试用用。
  页面流领域给我最大振撼的还是是jBPM。(注意,我认为seam的页面流功能是jBPM的功劳,不是Seam自己的)。因为我05年做的那套“自认为创世纪的东东”,开始是想过要用这个思路的(我当时就已经用了好久的jBPM了),可惜当时我们团队掌握jBPM的人太少,没有用这个方案。
 下面是一个使用jPDL定义页面流的例子(摘自Seam2.0 userguide):

<pageflow-definition name="numberGuess">
   
   <start-page name="displayGuess" view-id="/numberGuess.jsp">
      <redirect/>
      <transition name="guess" to="evaluateGuess">
          <action expression="#{numberGuess.guess}" />
      </transition>
   </start-page>
  
   <decision name="evaluateGuess" expression="#{numberGuess.correctGuess}">
      <transition name="true" to="win"/>
      <transition name="false" to="evaluateRemainingGuesses"/>
   </decision>
  
   <decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}">
      <transition name="true" to="lose"/>
      <transition name="false" to="displayGuess"/>
   </decision>
  
   <page name="win" view-id="/win.jsp">
      <redirect/>
      <end-conversation />
   </page>
  
   <page name="lose" view-id="/lose.jsp">
      <redirect/>
      <end-conversation />
   </page>
  
</pageflow-definition>
    用过jBPM的同学们,看到这个感觉怎么样?亲切吧?一个简单的页面流定义看起来跟业务流程定义非常相似(是同一种类型的东西),不同的是用 <page>节点替换了<task-node> 节点。

4.老四:逻辑流
   逻辑流应该是EOS首创(应该是吧?),在EOS中他们是.bizx文件,基本上等同一个java 方法,内部可以调用服务/运算逻辑和另外一个逻辑流。

不要把这些个事情弄混了!逻辑流/页面流/业务流 它们运行在非常不同的层面或粒度中。逻辑流来自于一次与单一用户的单一交互; 页面流来自于与单一用户的多次同一上下文的交互;而业务流则横跨许多用户和交互。从另外一个角度看,他们三个是完全正交的,可以在一起使用或是分开单独使用,或者都不用。
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS应用发布流程详解

这篇博客将会以一个完整的过程来实现一个iOS App提交审核的过程。在这个过程中,我们会涉及到证书、代码签名、授权文件、真机调试、开发者账号等一些概念,我也会有所解释。推荐大家先去看《iOS应用分发与...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2016年05月28日 17:05
  • 11131

谈谈你对SSH框架的理解——来自IBM的一道面试题

1. 介绍SSH,谈谈自己的观点。 SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装! ...
  • u012441545
  • u012441545
  • 2016年08月20日 11:34
  • 3237

深刻理解三大框架----SSH

在SSH框假中spring充当了管理容器的角色。其中Hibernate用来做持久层,因  为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语 句。Str...
  • stc89cxx
  • stc89cxx
  • 2015年12月30日 10:06
  • 213

各大框架运行原理

各框架运行原理Struts 在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析,当用户在jsp页面发送请求被struts1的核心控制器ActionSe...
  • Celebrity_Senior
  • Celebrity_Senior
  • 2016年10月08日 19:14
  • 391

新产品开发之C流程 (C-flow)

关于新产品开发的C流程(C-flow),是世界上大公司采用的标准开发流程,十分基本也十分重要,但是网上关于C流程介绍相关的资料很少,所以花点时间整理一下相关的资料。 下面以软件BSP开发为例,来说明C...
  • jgw2008
  • jgw2008
  • 2016年10月10日 15:44
  • 919

直播概念和流程框架

一、了解直播 热门直播产品 映客,斗鱼,熊猫,虎牙,花椒等等 1.一个完整直播app功能(来自落影loyinglin分享) 1、聊天 私聊、聊天室、点亮、推送、黑名单等; 2、礼物 ...
  • lipengshiwo
  • lipengshiwo
  • 2016年08月27日 22:46
  • 5294

产品上线流程

以我的理解,产品从规划到上线大概会经理如下几个阶段: 1,【boss】有了一个产品意向,召集【大家】开会讨论 2,【产品经理】明确boss意图,结合技术部,做出切实可行的产品原型图,这一步比较重要...
  • qq947289507
  • qq947289507
  • 2017年05月25日 09:27
  • 236

产品(功能)上线前需要做什么?整个产品流程是怎样的?

今天去面试,面试官问了个挺常见却容易被新人忽略掉的问题:产品上线前,产品经理要做的流程是什么? 当时回答得也比较笼统。现在做一个深入点的分析。 产品经理,一般分有产品运营和产品策划两个放向,而且也不是...
  • u010806600
  • u010806600
  • 2015年07月28日 20:50
  • 904

深度学习框架Tensorflow介绍与各大DL框架对比(还在犹豫用什么框架的同学们快看过来!)

本文主要介绍了TensorFlow这一大热的深度学习框架,包括产生背景,与其他框架的对比以及编程原理等,旨在为还在犹豫用哪个框架实现深度学习的同学提供参考。...
  • u013345707
  • u013345707
  • 2017年07月21日 09:16
  • 455

各大主流编程语言比较,运用场景

摘要一个星期没写博客了,晚上看了别人写的博客及各大编程语言,突然发现自己尽管了解大部分编程语言,但对各个语言的运用场景及发展前景并不明晰,我想很多人也跟我一样,做一行,只了解本行的发展,但真正的市场趋...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年06月26日 00:16
  • 9434
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:谈谈各大框架/产品的流程应用
举报原因:
原因补充:

(最多只允许输入30个字)