少说多做

时间:2024.4.30

少说多做

梦想只有在脚踏实地的工作中才能得以实现。积极主动地去找事做,一步一个脚印得去完成任务,要没有任何怨言,会主动包揽其他任务。只有实干,只有付诸行动,离线的风帆才会鼓足力量,人生的帆船才能驶向成功的彼岸。

实干才是最真,行动胜于空谈。少空谈,多做事,能实干,能行动,是一个人品行、修养的体现。


第二篇:JBMP入门 少说谢漂亮的话,多做些平凡的事


少说谢漂亮的话,多做些平凡的事

JBMP 入门

(1)定义如下工作流程:

<?xml version="1.0" encoding="UTF-8"?>

<process name="event" xmlns="http://jbpm.org/4.3/jpdl">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<start g="156,56,48,48" name="start1">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<transition g="-49,-18" name="to state1" to="state1"/> </start>

<state g="133,160,92,52" name="state1">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<transition g="-42,-18" name="to end1" to="end1"/> </state>

<end g="155,275,48,48" name="end1">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

</end>

</process>

即简单的流程:start ---> state1 ---> end

(2)流程测试:

package com.family168;

import junit.framework.TestCase;

import org.jbpm.api.*;

import java.util.*;

public class HelloTest extends TestCase {

ProcessEngine processEngine;

public HelloTest() {

processEngine = Configuration.getProcessEngine(); }

public void testDeploy() {

//定义repositoryService主要是对为了查看流程管理流程用的

RepositoryService repositoryService = processEngine .getRepositoryService();

String deploymentId =

repositoryService.createDeployment()

.addResourceFromClasspath("helloworld.jpdl.xml").deploy();//将流程定义(就是工作的流程写成的XML文件)发布到流程引擎中去

//下面是获取所有已发布的流程定义

List<ProcessDefinition> list =

repositoryService.createProcessDefinitionQuery().list();

for (ProcessDefinition pd : list) {

System.out.println(pd.getId());//打印流程定义的ID

}

//删除不需要的流程定义,即将发布到工作引擎中的流程定义删除掉

repositoryService.deleteDeploymentCascade(deploymentId);//使用Cascade表示级联删除

System.out.println(repositoryService.createProcessDefinitionQuery().list().size());

}

}

package com.family168;

import junit.framework.TestCase;

import org.jbpm.api.*;

import java.util.*;

public class ProcessInstanceTest extends TestCase {

//要先启用工作流引擎,所有操作都是从processEngine开始的。 ProcessEngine processEngine;

public ProcessInstanceTest() {

//下面的默认方式会到类路径下去找jbpm.cfg.xml加载这个配置文件信息,再生成工作引擎

processEngine = Configuration.getProcessEngine();//这样就可以获取到流程引擎

}

protected void setUp() {

//在操作之前我们得先发布一个流程定义,这样才能发起流程的操作

processEngine.getRepositoryService().createDeployment()

.addResourceFromClasspath("helloworld.jpdl.xml").deploy();//jpdl流程文件都是以.jpdl.xml作为扩展名的

}

//下面是测试流程实例

public void testProcessInstance() {

//首先是获取一个ExecutionService的实例,这是用来控制流程实例的。

ExecutionService executionService =

processEngine.getExecutionService();

//启动一个新的流程实例

ProcessInstance pi =

executionService.startProcessInstanceByKey("helloworld");//一发布一个流程,那么系统会分配一个id给这个流,具体的过程见jBPM4.1使用指南23页讲得很清楚

//

System.out.println(pi);//运行后会返回:

execution[helloworld.7]它是发布的流程的一个实例

/*

* pi就是流程实例了,那么它开启后,就会往下执行,这里设置打印它的运行状态,看这个实例结束了没有,这里的结果为false,可以看出实例并没有结束

* 实例没有结束的原因:我们发布的helloworld.jpdl.xml文件就设置了是从start1---->task------>end1的流程,所以在开启流程实例后,它会运行到task

* 后会处于等待状态,工作流主要就是要等待人来审判嘛,所以到一个结点后就停下来,处理后才能往下执行。

*/

System.out.println(pi.isEnded());

//为了让等待状态的实例继续进行下去,这里可以 用signal来将等待中的实例唤醒,然后进入下一个工作结点,这里下从task到下一个工作结点就到end1了,就结束了,所以下面的打印实例ended的情况是true pi = executionService.signalExecutionById(pi.getId()); System.out.println(pi.isEnded());

}

//下面是将一个工作实例取消掉,即到中途就让它结束,有两种方式,一是下面的取消方式,一是再下面的删除方式。

public void testProcessInstanceEnd() {

ExecutionService executionService =

processEngine.getExecutionService();

ProcessInstance pi =

executionService.startProcessInstanceByKey("helloworld");

executionService.endProcessInstance(pi.getId(), "cancel");//发送取消命令,会取消掉在等待中的队列

}

public void testProcessInstanceDelete() {

ExecutionService executionService =

processEngine.getExecutionService();

ProcessInstance pi =

executionService.startProcessInstanceByKey("helloworld");

executionService.deleteProcessInstanceCascade(pi.getId());//直接将流程实例删除掉

}

//下面方法是获取所有的流程实例,用

executionService.createProcessInstanceQuery().list()方法可以获取到所有开启的流程实例的信息

public void testProcessInstanceList() {

ExecutionService executionService =

processEngine.getExecutionService();

ProcessInstance pi =

executionService.startProcessInstanceByKey("helloworld");

ProcessInstance pi2 =

executionService.startProcessInstanceByKey("helloworld");

List<ProcessInstance> list =

executionService.createProcessInstanceQuery().list();

for (ProcessInstance processInstance : list) {

System.out.println(processInstance.getId());//可以查看自动生成的流程实例ID

}

}

}

(3)定义task的流程定义(task.jpdl.xml),还是简单的流程:start ---> state1 ---> end,只是加入了工作组,在下面的测试中会用到组任务的分派及处理:

<?xml version="1.0" encoding="UTF-8"?>

<process name="task" xmlns="http://jbpm.org/4.3/jpdl">

<start g="153,82,48,48" name="start1">

<transition g="-44,-18" name="to task1" to="task1"/>

</start>

<end g="155,315,48,48" name="end1"/>

<task candidate-groups="dev" g="131,188,92,52" name="task1"> <transition g="-42,-18" name="to end1" to="end1"/>

</task>

</process>

package com.family168;

import junit.framework.TestCase;

import org.jbpm.api.*;

import org.jbpm.api.task.*;

import java.util.*;

//task.jdpl.xml这个流程定义是想将一个组的任务给出来,用户可以进行竞争获取任务等的例子

public class TaskTest extends TestCase {

ProcessEngine processEngine;

public TaskTest() {

processEngine = Configuration.getProcessEngine(); //下面用了identity是身份验证,实际上它起来的就是组织机构的作用

IdentityService identityService =

processEngine.getIdentityService();

identityService.createGroup("dev");//这里创建一个组 //下面两行是添加用户

identityService.createUser("user1", "user1", "user1"); identityService.createUser("user2", "user2", "user3"); //下面两行是将用户添加入组里去

identityService.createMembership("user1", "dev"); identityService.createMembership("user2", "dev"); }

public void testTask() {

RepositoryService repositoryService = processEngine .getRepositoryService();

TaskService taskService =

processEngine.getTaskService();

ExecutionService executionService =

processEngine.getExecutionService();

String deploymentId =

repositoryService.createDeployment()

.addResourceFromClasspath("task.jpdl.xml").deploy(); //启动一个流程实例

ProcessInstance processInstance = executionService .startProcessInstanceByKey("task"); //用taskService.findGroupTasks()方法可以获得用户所在组的任务

assertEquals(1,

taskService.findGroupTasks("user1").size());

assertEquals(1,

taskService.findGroupTasks("user2").size());

//获取用户所有所在组的任务

List<Task> groupTaskList =

taskService.findGroupTasks("user1");

Task task = groupTaskList.get(0);//将第一个任务取出来 taskService.takeTask(task.getId(), "user1");//user1接收第一个task任务

taskService.completeTask(task.getId());//完成任务 }

}

(4)定义事件流程定义,还是简单的流程:start ---> state1 ---> end,只是增加了事件的标记,可以在事件产生后,触发相应操作:

<?xml version="1.0" encoding="UTF-8"?>

<process name="event" xmlns="http://jbpm.org/4.3/jpdl">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<start g="156,56,48,48" name="start1">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<transition g="-49,-18" name="to state1" to="state1"/> </start>

<state g="133,160,92,52" name="state1">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<transition g="-42,-18" name="to end1" to="end1"/> </state>

<end g="155,275,48,48" name="end1">

<on event="start">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

<on event="end">

<event-listener

class="com.family168.ProcessEventListener"/>

</on>

</end>

</process>

package com.family168;

import junit.framework.TestCase;

import org.jbpm.api.*;

public class EventTest extends TestCase {

ProcessEngine processEngine;

public EventTest() {

processEngine = Configuration.getProcessEngine(); }

/*

* 我们可以分析出按even.jpdl.xml的配置文件所配的事件监听,因为有流程事件监听,那么开始启动流程实例就会触发流程启动事件

* 流程实例开始后会从start1开始,由于start1没有入度,即没有不会触发活动start1的start事件,但会行下执行,会触发它的end事件 * 流程实例会运行到state1并停在那里,所以会触发state1的start事件,但没有触发它的end事件

* 因此,共会触发三次事件,打印的结果也是这样

*

*/

public void testDeploy() {

RepositoryService repositoryService =

processEngine.getRepositoryService();

String deploymentId =

repositoryService.createDeployment().addResourceFromClasspath("event.jpdl.xml").deploy();

ExecutionService executionService =

processEngine.getExecutionService();

executionService.startProcessInstanceByKey("event");

}

}

更多相关推荐:
关于说和做的名言

●行动并不一定能够体现一个人的本质;我们发现,做一件好未必就心地善良(蒲柏)●三十功名尘与土,八千里路云和月(宋·岳飞)●不能为良相,但得为良医●何不借风雷,一回天地颜●事在人为●路是人开的,树是人栽的●丈夫生…

20xx湖北省考申论备考:关于读书的名言 你积累了多少

20xx湖北省考申论备考关于读书的名言你积累了多少一常见名言警句1书籍是人类进步的阶梯2书到用时方恨少3少壮不努力老大徒伤悲4少年不知勤学苦老来方悔读书迟5书读百遍其义自见6旧书不厌百回读熟读深思子自知7书山有...

20xx山西公务员申论知识积累:关于读书的名言 你积累了多少

gtgtgt名师解析申论范文大全20xx山西公务员申论知识积累关于读书的名言你积累了多少通过最新山西公务员考试资讯大纲可以了解到公务员考试申论是测查从事机关工作应具备的基本能力的科目山西中公教育整理了山西省考资...

20xx湖北省考申论备考:关于读书的名言 你积累了多少

20xx湖北省考申论备考关于读书的名言你积累了多少湖北公务员考试申论是测查从事机关工作应具备的基本能力的科目更具体的我们来看看20xx湖北公务员考试课程是如何设置教学的点击这里可以gtgtgt在线咨询一常见名言...

做人做事的格言警句

做人做事的格言警句由俭如奢易由奢入俭难精打细算油盐不断历览前贤国与家成由勤俭败由奢李商隐静以修身俭以养德诸葛亮谁知盘中餐粒粒皆辛苦奢者狼藉俭者安一凶一吉在眼前白居易谁在平日节衣缩食在穷困时就容易度过难关谁在富足...

做人做事的名言格言警句

做人做事的名言格言警句1不要等待机会而要创造机会2说话的时候记得常用我们开头3有人在你面前说某人坏话时你只微笑4礼貌是人类共处的金钥匙朋友是天朋友是地朋友多了顶天立地朋友是风朋友是雨朋友多了呼风唤雨5一个篱笆三...

做人做事的个人名言

做人做事格言警句由俭如奢易由奢入俭难精打细算油盐不断历览前贤国与家成由勤俭败由奢李商隐静以修身俭以养德诸葛亮谁知盘中餐粒粒皆辛苦奢者狼藉俭者安一凶一吉在眼前白居易谁在平日节衣缩食在穷困时就容易度过难关谁在富足时...

为人处事经典名言

为人处事经典名言1长相不令人讨厌如果长得不好就让自己有才气如果才气也没有那就总是微笑2气质是关键如果时尚学不好宁愿纯朴3与人握手时可多握一会儿真诚是宝4不必什么都用我做主语5不要向朋友借钱6不要逼客人看你的家庭...

做人做事的名言

做人做事的名言警句精选1好好学习天天向上2书山有路勤为径学海无涯苦作舟3宝剑锋从磨砺出梅花香自苦寒来4风声雨声读书声声声入耳家事国事天下事事事关心5自学好学勤学学而自用无思厌思废思思而无功6学如黄鹤习如鹊勤如羽...

不看后悔!让你少奋斗10年的八句职场至理名言!?Word 文档 (4)

不看后悔让你少奋斗10年的八句职场至理名言第一和上级谈论工作的时候不要把好像有人会大概晚些时候或者说不定之类放在嘴边第二不要拖延工作很多人喜欢在学习和玩耍之间先选择后者然后在最后时间一次性赶工把考试要复习的东西...

[文章写作]申论知识积累:关于读书的名言 你积累了多少

文章写作申论知识积累关于读书的名言你积累了多少导读20xx年国家公务员考试预计在今年10月中旬正式启动考生可关注芜湖中公教育官网httpwww会在第一时间发布相关招录信息及专家解析20xx年国家公务员考试录用专...

能让你少些生气的5句名言

能让你少些生气的5句名言5QuotesThatMayMakeYouLessAngryManyofustrytolivealifeoftranquilitybutthatdoesntmeanwenevergeta...

少说多做的名言(1篇)