LINUX修改网卡MAC地址
2010-03-24 12:01
483 查看
这里使用的是mysql数据库
开发工具是eclipse
首先我们需要初始化话数据库
相关的配置文件 可以在jbpm的程序包中找到
hibernate.cfg.xml要与你的数据库配置相匹配。
接下来我们绘制一个工作流,这里基本上用到jbpm的一个工作流绘制的插件。
我们绘制了一个简单的流程:
大体过程如下
起始状态--》任务1--》任务2--》结束
这里的actor-id 是一个查看权限
现在我们将流程定义发布上去
发布之后我们在数据库中已经可以看到相关的配置了。
下面我们创建一个流程实例。
signal();方法是将状态进行转换,由于转至第二个状态,所以apply任务在结束完起始状态的时候会被同步创建创建。
由于apply任务是分配给actorId=1进行处理的,下面我们看看autorId=1的任务列表
我们可以看到该用户权限下的任务列表
ID :1
ActorId :1
任务名称 :apply
开始时间 :2009-06-25 16:59:05.0
开始时间 :null
结束时间 :null
下面我们开始任务该任务
我的id已经在之前获取到,这里就直接用了,实际应用中则应通过传参获取
ID :1
ActorId :1
任务名称 :apply
开始时间 :2009-06-25 16:59:05.0
开始时间 :2009-06-25 19:25:52.0
结束时间 :null
此时已经开始
下面我们进行任务的完成
完成之后在任务列表中已经没有任务了。
下面我们看一下数据库,第一个任务已经完成,第二个任务已经创建
接下来我们对ActorId=2的任务进行执行,等同上面的,这里不进行重复
当第二个任务执行完成之后,你会看到任务已经整个流程已经完成,db中流程的end字段已经赋值
之所以这样分步来说,就是希望可以深入了解jbpm的执行流程
在实际的项目中往往开始和结束都是同时进行的
比如已经请假(star--填单--审批--end):往往是请假表单的填写的提交的瞬间(创建实例,填写请假单),审批的成功与否也是瞬间而且同时结束流程
即只有两步操作。
开发工具是eclipse
首先我们需要初始化话数据库
package test.config; import org.jbpm.JbpmConfiguration; public class InitDB { public static void main(String[] args) { InitDB initDB = new InitDB(); initDB.createJbpmDB(); } //初始化JBPM的数据库表 public void createJbpmDB(){ JbpmConfiguration.getInstance().createSchema(); } //删除JBPM的数据库表 public void dropJbpmDB(){ JbpmConfiguration.getInstance().dropSchema(); } }
相关的配置文件 可以在jbpm的程序包中找到
hibernate.cfg.xml要与你的数据库配置相匹配。
接下来我们绘制一个工作流,这里基本上用到jbpm的一个工作流绘制的插件。
我们绘制了一个简单的流程:
大体过程如下
起始状态--》任务1--》任务2--》结束
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="" name="qj"> <start-state name="start-state1"> <transition to="apply"></transition> </start-state> <task-node name="apply"> <task name="apply"> <assignment actor-id="1"></assignment> </task> <transition to="approve"></transition> </task-node> <task-node name="approve"> <task name="approve"> <assignment actor-id="2"></assignment> </task> <transition to="end-state1"></transition> </task-node> <end-state name="end-state1"></end-state> </process-definition>
这里的actor-id 是一个查看权限
现在我们将流程定义发布上去
package test.config; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.graph.def.ProcessDefinition; /** * 部署流程 * */ public class Deploy { public static void main(String[] args) throws FileNotFoundException { JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); //取得流程定义 InputStream is = new FileInputStream("D:\\workspace\\fwk\\jbpm\\src\\test\\qj\\processdefinition.xml"); ProcessDefinition pd = ProcessDefinition.parseXmlInputStream(is); //部署流程 jbpmContext.deployProcessDefinition(pd); jbpmContext.close(); } }
发布之后我们在数据库中已经可以看到相关的配置了。
下面我们创建一个流程实例。
package test; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.db.GraphSession; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; public class CreatePDInstance { /** * @param args */ public static void main(String[] args) { JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); GraphSession graphSession = jbpmContext.getGraphSession(); //取得流程定义 ProcessDefinition pd = graphSession.findLatestProcessDefinition("qj"); //创造实例 ProcessInstance pi = pd.createProcessInstance(); //token下移 刚创建的实例token是指向start-state1,我们需要让token完整这里流程 去指向真正的任务节点 pi.signal(); //当前token指向apply节点的第一个任务 jbpmContext.close(); } }
signal();方法是将状态进行转换,由于转至第二个状态,所以apply任务在结束完起始状态的时候会被同步创建创建。
由于apply任务是分配给actorId=1进行处理的,下面我们看看autorId=1的任务列表
package test; import java.util.List; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.taskmgmt.exe.TaskInstance; public class TaskActor1 { /** * @param args */ public static void main(String[] args) { TaskActor1 ta1 = new TaskActor1(); ta1.showList(); } public void showList(){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); String autorId="1"; List<TaskInstance> list = jbpmContext.getTaskList(autorId); for(int i = 0 ;i<list.size();i++){ TaskInstance ti = list.get(i); System.out.println("ID :" + ti.getId()); System.out.println("ActorId :" + ti.getActorId()); System.out.println("任务名称 :" + ti.getName()); System.out.println("开始时间 :" + ti.getCreate()); System.out.println("开始时间 :" + ti.getStart()); System.out.println("结束时间 :" + ti.getEnd()); } } }
我们可以看到该用户权限下的任务列表
ID :1
ActorId :1
任务名称 :apply
开始时间 :2009-06-25 16:59:05.0
开始时间 :null
结束时间 :null
下面我们开始任务该任务
我的id已经在之前获取到,这里就直接用了,实际应用中则应通过传参获取
package test; import java.util.List; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.taskmgmt.exe.TaskInstance; public class TaskActor1 { /** * @param args */ public static void main(String[] args) { TaskActor1 ta1 = new TaskActor1(); //ta1.showList(); ta1.startTask(new Long(1)); } public void showList(){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); String autorId="1"; List<TaskInstance> list = jbpmContext.getTaskList(autorId); for(int i = 0 ;i<list.size();i++){ TaskInstance ti = list.get(i); System.out.println("ID :" + ti.getId()); System.out.println("ActorId :" + ti.getActorId()); System.out.println("任务名称 :" + ti.getName()); System.out.println("开始时间 :" + ti.getCreate()); System.out.println("开始时间 :" + ti.getStart()); System.out.println("结束时间 :" + ti.getEnd()); } jbpmContext.close(); } public void startTask(Long i){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jbpmContext.loadTaskInstance(i); //如果该任务没有启动就将他启动 if(ti.getStart() == null) ti.start(); jbpmContext.close(); showList(); } }
ID :1
ActorId :1
任务名称 :apply
开始时间 :2009-06-25 16:59:05.0
开始时间 :2009-06-25 19:25:52.0
结束时间 :null
此时已经开始
下面我们进行任务的完成
package test; import java.util.List; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.taskmgmt.exe.TaskInstance; public class TaskActor1 { /** * @param args */ public static void main(String[] args) { TaskActor1 ta1 = new TaskActor1(); //ta1.showList(); //ta1.startTask(new Long(1)); ta1.endTask(new Long(1)); } public void showList(){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); String autorId="1"; List<TaskInstance> list = jbpmContext.getTaskList(autorId); for(int i = 0 ;i<list.size();i++){ TaskInstance ti = list.get(i); System.out.println("ID :" + ti.getId()); System.out.println("ActorId :" + ti.getActorId()); System.out.println("任务名称 :" + ti.getName()); System.out.println("开始时间 :" + ti.getCreate()); System.out.println("开始时间 :" + ti.getStart()); System.out.println("结束时间 :" + ti.getEnd()); } jbpmContext.close(); } public void startTask(Long i){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jbpmContext.loadTaskInstance(i); //如果该任务没有启动就将他启动 if(ti.getStart() == null) ti.start(); jbpmContext.close(); showList(); } public void endTask(Long i){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jbpmContext.loadTaskInstance(i); //如果该任务没有完成启动就将他完成 if(ti.getEnd() == null) ti.end(); jbpmContext.close(); showList(); } }
完成之后在任务列表中已经没有任务了。
下面我们看一下数据库,第一个任务已经完成,第二个任务已经创建
接下来我们对ActorId=2的任务进行执行,等同上面的,这里不进行重复
package test; import java.util.List; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.taskmgmt.exe.TaskInstance; public class TaskActor2 { /** * @param args */ public static void main(String[] args) { TaskActor2 ta2 = new TaskActor2(); ta2.showList(); ta2.startTask(new Long(2)); ta2.endTask(new Long(2)); } public void showList(){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); String autorId="2"; List<TaskInstance> list = jbpmContext.getTaskList(autorId); for(int i = 0 ;i<list.size();i++){ TaskInstance ti = list.get(i); System.out.println("ID :" + ti.getId()); System.out.println("ActorId :" + ti.getActorId()); System.out.println("任务名称 :" + ti.getName()); System.out.println("开始时间 :" + ti.getCreate()); System.out.println("开始时间 :" + ti.getStart()); System.out.println("结束时间 :" + ti.getEnd()); } jbpmContext.close(); } public void startTask(Long i){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jbpmContext.loadTaskInstance(i); //如果该任务没有启动就将他启动 if(ti.getStart() == null) ti.start(); jbpmContext.close(); showList(); } public void endTask(Long i){ JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jbpmContext.loadTaskInstance(i); //如果该任务没有完成启动就将他完成 if(ti.getEnd() == null) ti.end(); jbpmContext.close(); showList(); } }
当第二个任务执行完成之后,你会看到任务已经整个流程已经完成,db中流程的end字段已经赋值
之所以这样分步来说,就是希望可以深入了解jbpm的执行流程
在实际的项目中往往开始和结束都是同时进行的
比如已经请假(star--填单--审批--end):往往是请假表单的填写的提交的瞬间(创建实例,填写请假单),审批的成功与否也是瞬间而且同时结束流程
即只有两步操作。
相关文章推荐
- Linux下修改网卡的MAC地址
- Linux网卡攻略,修改Mac物理地址
- 教你如何在linux上永久修改网卡mac地址
- linux操作系统修改网卡mac地址
- linux修改网卡MAC地址
- Linux下如何修改网卡MAC地址
- Linux下修改网卡的mac地址
- linux修改网卡的mac地址
- Linux下修改网卡的mac地址
- Linux下修改网卡的mac地址
- linux修改网卡MAC地址的方法
- linux下修改网卡的mac地址
- 修改网卡MAC地址
- Win 2K/XP下修改网卡MAC地址的方法
- 查看linux下网卡mac地址
- Linux 下修改网卡MAC
- [Linux_Daily]Linux网卡物理地址的修改-APT设置-fcitx的设置
- linux下获取多个网卡MAC地址
- 如何修改linux的MAC地址
- VMWARE修改网卡类型和网卡MAC地址的方法