您的位置:首页 > 产品设计 > 产品经理

Jbpm 常用基础方法 相关编程接口

2010-11-15 09:12 411 查看
一 :JbpmContext类负责了对所有功能模块的管理

在Jbpm应用中,只需要:
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
两条语句就可以配置好一切。

二:查找所有ProcessInstances

public void findAllProcessInstance() throws Exception {
List processDefinitions = jbpmContext.getGraphSession().findAllProcessDefinitions();
for(int i = 0 ; i < processDefinitions.size();i++){
ProcessDefinition processDefinition = (ProcessDefinition)processDefinitions.get(i);
long processDefinitionId = processDefinition.getId();
List processInstances = jbpmContext.getGraphSession().findProcessInstances(processDefinitionId);
for(int j =0;j<processInstances.size();j++){
ProcessInstance processInstance = (ProcessInstance)processInstances.get(i);
Collection taskInstances = processInstance.getTaskMgmtInstance().getTaskInstances();
TaskInstance taskInstance =(TaskInstance) taskInstances.iterator().next();
Map tvs = taskInstance.getVariableInstances();
if(tvs==null){
System.out.println("==task tvs is null==");
return;
}
Iterator it =tvs.entrySet().iterator() ;
while(it.hasNext() ){
Map.Entry entry = (Map.Entry)it.next() ;
System.out.println("==key is:"+entry.getKey().toString() +"==");
System.out.println("==value is:"+entry.getValue().toString() +"==");
}
}
}
}


三:查找特定用户得任务列表

ublic void findByActorId(String actorId){
List processDefinitions = jbpmContext.getGraphSession().findAllProcessDefinitions();
for(int i = 0;i<processDefinitions.size();i++){
ProcessDefinition processDefinition = (ProcessDefinition)processDefinitions.get(i);
long processDefinitionId = processDefinition.getId();
List processInstances =jbpmContext.getGraphSession().findProcessInstances(processDefinitionId);
for(int j = 0;j<processInstances.size();j++){
ProcessInstance processIntance  = (ProcessInstance)processInstances.get(j);
System.out.println("processInstance is create in : " +processIntance.getStart().toString());
TaskMgmtSession taskMgmeSession = jbpmContext.getTaskMgmtSession();
List taskInstances = taskMgmeSession.findPooledTaskInstances(actorId);
for(int m = 0;m<taskInstances.size();m++){
TaskInstance taskInstance = (TaskInstance)taskInstances.get(i);
Map tvs = taskInstance.getVariableInstances();
if(tvs==null){
System.out.println("==task tvs is null==");
return;
}
Iterator it =tvs.entrySet().iterator() ;
while(it.hasNext() ){
Map.Entry entry = (Map.Entry)it.next() ;
System.out.println("==key is:"+entry.getKey().toString() +"==");
System.out.println("==value is:"+entry.getValue().toString() +"==");
}
}
}
}
}


四:删除一个processInstance

public void deleteProcessInstance(long processInstanceId){
//boolean flag = false;
jbpmContext.getGraphSession().deleteProcessInstance(processInstanceId);
System.out.println("delete processInstance Id is : " + processInstanceId);
//return flag;

}


五:判定用户登陆

public boolean checkUserValidate(String userName,String password) throws Exception{
boolean flag  = false;
Connection conn = jbpmContext.getConnection();
Statement stmt = conn.createStatement();
String sql = "select name_,password_ from jbpm_id_user where name_='"+userName+"'";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
if(rs.getObject("password_").equals("password")){
flag = true;

}else{
flag = false;

}

}
rs.close();
stmt.close();
conn.close();
return flag;
}


六:挂起一个实例processInstance

public void userCancleProcessInstance(long processDefinitionId ) throws Exception {
ProcessDefinition processDefinition = jbpmContext.getGraphSession().loadProcessDefinition(processDefinitionId);
ProcessInstance processInstance = new ProcessInstance(processDefinition);
/*
* 挂起一个实例
*/
processInstance.suspend();
Date end = new Date();
processInstance.setEnd(end);

}


七 : 使用TaskController 原理介绍



实现方式:

public Map useTaskController(long processDefinitionId){
Map parameters  = new HashMap();
ProcessDefinition processDefinition = jbpmContext.getGraphSession().loadProcessDefinition(processDefinitionId);
ProcessInstance processInstance = new ProcessInstance(processDefinition);
TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance();
TaskController taskController = taskInstance.getTask().getTaskController();
if (taskController!=null) {
List variableAccesses = taskController.getVariableAccesses();
Iterator iter = variableAccesses.iterator();
while (iter.hasNext()) {
VariableAccess variableAccess = (VariableAccess) iter.next();
String mappedName = variableAccess.getMappedName();
Object value = taskInstance.getVariable(mappedName);
parameters.put(mappedName, value);
}

}
return parameters;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: