2013年7月15日星期一

工作流_JBPM之Helloword - 林℃度尒钬

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
工作流_JBPM之Helloword - 林℃度�钬  阅读原文»

环境:Eclipse 3.5 + java 6 + MySQL 5.5 + jBPM 4.4
1、建立 Java Project;
2、拷贝 XML配置文件放进工程目录;
3、 建立 JPDL文件,画流程图;
4、编写测试类;
完成的项目目录:
jBPM 流程图:
helloword.jpdl.xml:
<?xml version="1.0" encoding="UTF-8"?>

<process name="helloword" xmlns="http://jbpm.org/4.4/jpdl">
<start g="132,24,48,48" name="start1">
<transition g="-52,-22" name="to task1" to="提交申请"/>
</start>
<end g="132,456,48,48" name="end1"/>
<task g="108,108,92,52" name="提交申请" assignee="员工">
<transition g="-49,-13" name="to task2" to="部门经理审批"/>
</task>
<task g="108,228,92,52" name="部门经理审批" assignee="部门经理">
<transition g="-48,-12" name="to task3" to="总经理审批"/>
</task>
<task g="108,348,92,52" name="总经理审批" assignee="总经理">
<transition g="-48,-11" name="to end1" to="end1"/>
</task>
</process>

测试类:Helloword.java
package com.guilin.jbpm;

import java.util.List;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.task.Task;
import org.junit.Test;

public class Helloword {

private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();

// 部署流程定义
@Test
public void deployProcessDefinition() {
processEngine.getRepositoryService().createDeployment()
.addResourceFromClasspath(
"com/guilin/jbpm/helloword.jpdl.xml")
.addResourceFromClasspath(
"com/guilin/jbpm/helloword.png")
.deploy();
System.out.println(
"部署流程完毕!");
}

// 启动流程实例
@Test
public void startProcessInstance() {
processEngine.getExecutionService().startProcessInstanceByKey(
"helloword");
System.out.println(
"启动流程实例成功!");
}

// 查询我的任务列表
@Test
public void findMyTaskList() {
String[] userIds
= { "员工", "部门经理", "总经理" };

for (int i = 0; i < userIds.length; i++) {
// 查询任务
List<Task> tasks = processEngine.getTaskService()
.findPersonalTasks(userIds);

// 显示任务信息
for (Task task : tasks) {
System.out.println(
"-------------------------------------------------");
System.out.println(
"任务ID=" + task.getId() + ", 任务名称="
+ task.getName() + ", 任务办理人=" + task.getAssignee()
+ ", 任务创建时间=" + task.getCreateTime());
}
}
}

// 办理任务
@Test
public void completeTask() {
// 任务 ID
JDBC小结 - DM张朋飞  阅读原文»

  有一个规律永远不变,就是量变引起质变,什么时候你吃的盐比我吃的米多,那你就可以教我了……

1.JDBC是一个标准,是J2EE的一部分;讲tcp时就提到了分层思想,jdbc也是分层,即上层只需要和紧挨着的下层通讯,方便扩展。不管开奥拓车还是开奥迪车方向盘都在屁股前边,档都在右边。不过jdbc还需要写select语句等,而hibernate完全实现了数据库底层,而且屏蔽了细小差别;现在的EJB也实现了某些功能。

2.TestJDBC

  若是连接字符串或者某些方法忘了(但是有些东西不能忘,比如System.out.println),就注明平时用多了Eclipse,若是查查还能知道……

1 import java.sql.*;
2
3 public class TestJDBC {
4
5 public static void main(String[] args) {
6 ResultSet rs = null;
7 Statement stmt = null;
8 Connection conn = null;
9 /*
10 * 一定要加上try catch finally,不要throws
11 * 因为若在遍历过程中出问题,那么下面的关闭就一直执行不了
12 * 服务器会越来越卡,最后死掉
13 */
14 try {
15 Class.forName("oracle.jdbc.driver.OracleDriver");
16 //new oracle.jdbc.driver.OracleDriver();
17 conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");
18 stmt = conn.createStatement();
19 //结果集就像游标,不过不像数据库,第一条没指向第一条,像iterator
20 rs = stmt.executeQuery("select * from dept");
21 while(rs.next()) {
22 System.out.println(rs.getString("deptno"));
23 //和实际字段类型无关,只要能转换为int就可以
24 System.out.println(rs.getInt("deptno"));
25 }
26 } catch (ClassNotFoundException e) {
27 e.printStackTrace();
28 /*
29 * 实际上要用log4j把异常记录在日志里
30 */
31 } catch (SQLException e) {
32 e.printStackTrace();
33 } finally {
34 /*
35 * 要把rs,stmt,conn声明在大try外边
36 * 否则在这就不认识了
37 */
38 try {
39 /*
40 * 不加try catch会出错,因为close也会出错.
41 * 如果rs没有初始化,这直接close那么一定会报错
42 */
43 if(rs != null) {
44 rs.close();
45 /*
46 * 查过api后会发现close后会直接设置为null
47 * 方便gc回收
48 * 写下面的是为了展现良好的编程风格
49 */
50 rs = null;
51 }
52 if(stmt != null) {
53 stmt.close();
54 stmt = null;
55 }
56 if(conn != null) {
57 conn.close();
58 conn = null;
59 }
60 } catch (SQLException e) {
61 e.printStackTrace();
62 }
63 }
64 }
65
66 }

3.JDBC操作DML语句

1 import java.sql.Connection;
2 import java.sql.DriverManager;
3 import java.sql.

阅读更多内容

没有评论:

发表评论