春节回乡游:黎明千龟山风景一日游
1:02 pm in 生活点滴/Enjoy Life by aronezhang
在丽江古城的同一个客栈中,刚好有从杭州驾车到丽江旅游的一对夫妇,也想到黎明去感受一下还未被深度开发的风景区,因此我和LP就和她们合伙,一早从丽江古城驾车前往丽江市玉龙县的黎明乡。
1:02 pm in 生活点滴/Enjoy Life by aronezhang
在丽江古城的同一个客栈中,刚好有从杭州驾车到丽江旅游的一对夫妇,也想到黎明去感受一下还未被深度开发的风景区,因此我和LP就和她们合伙,一早从丽江古城驾车前往丽江市玉龙县的黎明乡。
9:44 am in 生活点滴/Enjoy Life by aronezhang
已经好几次带着LP回老家过年的时候准备顺便在云南几个有名的景点去偷闲一下,可是很多次都是由于各种原因而导致我们的旅游计划流产,刚过的春节终于和领导请了年假,LP也是在扣工资的情况下请到了几天假。在老家过完初五后,通过转机昆明我们踏上了丽江旅游的旅途。
下面是记录这次古城游的几个小故事。
3:08 am in Java开源 by aronezhang
2:37 pm in Java开源 by aronezhang
上一篇文章中我们实现了一个简单的审批流程,但是对于流程中涉及的元素没有做任何的解释,本文主要针对的流程的主要组成元素进行描述。
内容根据 jBPM的用户手册进行描述,主要描述一下后面将要实现的一个实际例子中所涉及的元素。
一,基本概念和名次解释
流程定义(Process Definition)是基于定向图表示的一个业务流程的声明,由节点和转换组成,图中的每个节点都有一个特定的类型,节点类型定义了运行时的行为,流程定义有且只有一个开始状态。
令牌(Token)是执行的一个路线,令牌是运行的时间概念,用来维护图中指向节点的指针。
流程实例(Process Instance)是一个流程定义执行的实例,当一个流程实例被建立后,一个令牌也为主要执行路线建立了,这个令牌称为这个流程实例的根令牌,它的位置处于流程定义的开始状态。
一个信号(Signal)指示令牌继续流程图的执行,当接受到无名的信号时,令牌将用缺省的离开转换离开节点,当转换名字在信号中明确指定,令牌将使用指定的转换离开节点。
在令牌进入节点后,节点被执行,节点负责继续图的执行。图执行的连续是通过让令牌离开节点来完成的,每个节点类型为了连续图执行实现了不同的行为,一个节点如果不能传播执行将被认为是一个状态。
动作(Action)是在流程执行中在事件上执行的一段Java代码。动作是一种在图形表示之外增加更多技术细节的机制,一旦图放在某个地方,它可以使用动作来修饰。
二,节点的职责
流程图由节点(Node)和转换(Transition)组成。每个接点有一个指定的类型,节点类型定义了当执行到达这个节点的时候将发生什么,jBPM 预定义了一套节点类型,开发人员可以编写自己的代码实现节点的行为。
节点有2个主要责任:
首先是执行Java代码,Java代码和节点的功能相关,如建立一个新的任务实例、发送一个通知、更新数据库等等;
其次,节点负责传播流程的执行,节点有下列可选的传播流程执行的选项:
三,常用的节点类型
基于实用的原则,本节只介绍一些常用的节点类型,并没有覆盖全部的类型。
当有一个流程需要来做一个决策的时候就要使用一个决策节点。有两个方式来指定决策的标准,最简单的方式是给转换增加一个条件,条件是一个返回结果为boolean的EL表达是或beanshell脚本表达。
在运行时决策代码会被转换反复调用(按照XML指定的顺序)来评估每个条件,但条件值为“true”的时候就会发生转换,如果所有的条件都返回“false”的话,默认的转换将被执行(XML定义中的第一个)。
另外一种方式是使用一个表达式来返回转换的名称,使用属性“expression”,可以为决策节点来指定一个表达式来决定如何转换。
还有一种方式是指定一个“handler”属性,它需要是DecisionHandler接口的实现,在Java类中决策的转换由DecisionHandler实现中的决策方法(decide-method)来返回。
当决策是由外部合作者来决定(含义:不是流程定义的一部分),可以用多个转换离开状态或等待状态节点,然后转换可以提供外部的触发在等待状态完成后继续执行。比如 Token.signal(String transitionName) and TaskInstance.end(String transitionName).
四, 转换
转换有一个来源节点和一个目标节点,来源节点通过一个from属性来指定,目标节点通过一个to属性来指定
一个转换有一个可选的名称,很多jBPM都依赖于唯一的转换名称,如果有多个转换都拥有同样的名称,那第一个转换将会被选中执行,重复的转换名称将会导致Map getLeavingTransitionsMap() 方法返回的元素数量少于 List getLeavingTransitions() ,列表中默认的转换是第一个转换。
五,动作(Actions)
动作其实就是一段 Java 代码,在有事件发生时执行流程,流程的图在软件需求社区是一个很重要的指令,但是图只是将要实现软件的一个视觉(投射),它隐藏了技术的实现细节。动作是在图形化表示之外加入技术细节的机制,当一个图被创建,它可以用加入动作来进行装饰,这样通过 Java 代码在不修改图结构的情况下可以和图关联起来了,主要的事件类型是:进入节点、离开节点和执行转换。
下一篇文章将描述变量的上下文。
–
2:51 pm in 探索者故事 by aronezhang
自从申请Oracle Seeker之后开始记录日志以来,探索者已经过半岁多了,开始创建本站的目的仅仅是为了记录一些在
项目中使用的技术以及经验,还有平时不断瞎折腾摆弄的一些知识点,以备有需之时进行查询,同时也为自己
不断学习、不断累积知识提供了一个督促的理由,使自己不在那么“懒惰”。
由此对本站的主题也没有特意去关注,只是觉得自己看起来过得去就可以了,但是几个原因致使我们现在决定更换探索者的主体:
基于以上各点原因,我们认为是有必要进行主题更换,将内容以新的方式展现给大家的时候了,但是基于几个博主对美术设计
都是比较陌生,因此也只能找一个我们认为比较满意的主题来使用了,基于以下几点:
因此很快就看上了mg12的设计的 iNove 主题,这款主题在wordpress主题库中排名也在很前面,同时也有很多站点在使用它。
在 Hailuo.liu 的帮助下,进行了主题一些细节的调整,终于有了目前的探索者,恭喜一下!!!
希望大家能够喜欢,同时感谢各位一如既往地支持以及给我们建议。
–