/**
* 通过xml部署新流程定义
* @param resourceName
* @return 返回流程定义标识
*/
public String deployProcessEngine(String resourceName) {
return processEngine.getRepositoryService().createDeployment()
.addResourceFromClasspath(resourceName).deploy();
}
/**
* 通过zip文件部署流程
* @param zipname
* @return 返回流程部署标识
*/
public String deployProcessEngineWithZip(String zipName) {
// 将文件输入流作为参数构造一个ZipInputStream对象
ZipInputStream zis = null;
try {
zis = new ZipInputStream(new FileInputStream(new File(
zipName)));
} catch (FileNotFoundException e) {
throw new BusinessException("部署新流程失败,流程定义文件找不到");
}
return repositoryService.createDeployment()
.addResourcesFromZipInputStream(zis).deploy();
}
/**
* 启动一个流程实例
* @param key
*/
public ProcessInstance startPIByKey(String key){
return executionService.startProcessInstanceByKey(key);
}
/**
* 启动一个流程实例
* @param id
* @param map
* @return
*/
public ProcessInstance startProcessInstance(String id, Map<String, ?> map) {
return executionService.startProcessInstanceById(id, map);
}
/**
* 删除一个流程实例
* @param processInstanceId 流程实例id
* @return
*/
public void deleteProcessInstance(String processInstanceId) {
executionService.deleteProcessInstance(processInstanceId);
}
/**
*通过流程实例比标识 获取流程实例
* @param processInstanceId 流程实例标识
* @return 流程实例
*/
public ProcessInstance getProcessInstance(String processInstanceId) {
return executionService.findProcessInstanceById(processInstanceId);
}
/**
* 通过任务标识 获取流程实例
* @param taskId 任务id
* @return
*/
public ProcessInstance getProcessInstanceByTankId(String taskId) {
Task task = taskService.getTask(taskId);
Execution execution = executionService.findExecutionById(task.getExecutionId());
Execution processInstance = execution.getProcessInstance();
return (ProcessInstance) processInstance;
}
/**
* 完成任务
* @param taskId
* @param map
*/
public void completeTask(String taskId, Map map) {
taskService.completeTask(taskId, map);
}
/**
* 完成任务
* @param taskId
*/
public void completeTask(String taskId) {
taskService.completeTask(taskId);
}
/**
* 将任务流转到指定名字的流程中的下一个节点
* @param taskId
* @param outcome
*/
public void completeTask(String taskId, String outcome) {
taskService.completeTask(taskId, outcome);
}
/**
* 根据任务标识 获得 可以留出的所有节点
* @param taskId
* @return 集合
*/
public Set<String> getOutcomes(String taskId) {
return taskService.getOutcomes(taskId);
}
/**
* 获得所有发布了的流程定义
* @return list
*/
public List<ProcessDefinition> getAllPdList() {
return repositoryService.createProcessDefinitionQuery().list();
}
/**
* 根据流程定义ID获取流程定义实例
* @param id 流程定义ID
* @return 流程定义实例
*/
public ProcessDefinition getSinglePD(String id) {
return repositoryService.createProcessDefinitionQuery()
.processDefinitionId(id).uniqueResult();
}
/**
* 根据流程部署ID获取流程定义实例
* @param id 流程部署ID
* @return 流程定义实例
*/
public ProcessDefinition getSingleDPD(String deploymentId) {
return repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).uniqueResult();
}
/**
* 获得所有流程实例
* @return
*/
public List<ProcessInstance> getAllPiList() {
return executionService.createProcessInstanceQuery().list();
}
/**
* 根据流程部署ID 获取流程部署实例
* @param deploymentId 流程部署ID
* @return 流程部署实例
*/
public Deployment getSingleD(String deploymentId){
return repositoryService.createDeploymentQuery().deploymentId(deploymentId).uniqueResult();
}
/**
* 根据部署id,获取图片名称和xml名称
* @param deploymentId 部署id
* @return
*/
public Set<String> getResourceNames(String deploymentId){
return repositoryService.getResourceNames(deploymentId);
}
/**
* 根据流程实例Id,即executionId获取指定的变量值
*
* @param executionId
* @param variableName
* @return
*/
public Object getVariableByexecutionId(String executionId,
String variableName) {
return executionService.getVariable(executionId, variableName);
}
/**
* 根据任务id,即taskId获取指定变量值
*
* @param taskId
* @param variableName
* @return
*/
public Object getVariableByTaskId(String taskId, String variableName) {
return taskService.getVariable(taskId, variableName);
}
/**
* 获取指定用户名字的任务
*
* @param userName
* @return
*/
public List<Task> findPersonalTasks(String userName) {
return taskService.findPersonalTasks(userName);
}
/**
* 获取流程实例
* @param taskId 任务id
* @return
*/
public ProcessInstance getTaskProcessInstance(String taskId) {
Task task = taskService.getTask(taskId);
Execution execution = executionService.findExecutionById(task.getExecutionId());
Execution processInstance = execution.getProcessInstance();
return (ProcessInstance) processInstance;
}
/**
* 根据任务id获取任务
*
* @param taskId
* @return
*/
public Task getTask(String taskId) {
return taskService.getTask(taskId);
}
/**
* 根据节点名取一流程实例下的任务
* @param processInstanceId 流程实例id
* @param activityName 节点名称
* @return
*
* 例如:<task assignee="ls" g="118,126,94,55" name="ls审批">
* name: activityName
* assignee:assignee
*/
public Task getTaskByActivityName(String processInstanceId,String activityName){
return taskService.createTaskQuery().processInstanceId(processInstanceId).activityName(activityName).uniqueResult();
}
/**
* 根据任务分配者assignee取一流程实例下的任务
* @param processInstanceId 流程实例id
* @param assignee 参与者
* @return
*/
public Task getTaskByAssignee(String processInstanceId,String assignee){
return taskService.createTaskQuery().processInstanceId(processInstanceId).assignee(assignee).uniqueResult();
}
/**
* 级联删除流程定义,直接删除该流程定义下的所有实例
*
* @param deploymentId 流程部署id
*/
public void deleteDeploymentCascade(String deploymentId) {
repositoryService.deleteDeploymentCascade(deploymentId);
}
/**
* 根据流程的名称 级联删除此流程定义的所有版本及其下所有实例
* (注意:这里写key似乎有问题,没太论证,第一次写key出错,第二次写processKey通过)
* @param name
*/
public void deleteDeploymentVersions(String processKey) {
List<ProcessDefinition> pds = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processKey).list();
for(ProcessDefinition pd : pds){
repositoryService.deleteDeploymentCascade(pd.getDeploymentId());
}
}
/**
* 根据留出实例标识得到 当前活跃节点集合
* @param processInstanceId 流程实例id
* @return
*/
public Set<String> findActiveActivityNames(String processInstanceId){
ProcessInstance pi = executionService.findProcessInstanceById(processInstanceId);
// 获取所有活跃的节点:
Set<String> activitySet = pi.findActiveActivityNames();
return activitySet;
}
分享到:
相关推荐
4. **持久化框架**:持久化框架是处理对象到数据库之间映射的工具,使得开发者无需编写大量的SQL代码就能实现数据的存储和检索。JBMP是Java中的一种持久化实现,类似于Hibernate,但JBMP是JBoss公司的产品,而...
其中“含丰富的文档”暗示了这个压缩包可能包括了开发过程中的各种文档,如设计文档、用户手册、开发指南等,这些对于理解系统的架构、功能以及使用方法都极其重要。 从标签"oa文档 ssh_jbmp jbmp_oa oa oa_ssh"来...
53 第4章 把流程部署到服务器上去 54 4.1 部署流程定义和资源文件 54 4.2 部署流程Java类的3个方法 57 4.3 例程:部署业务流程定义 58 4.4 小结 61 第5章 使用jBPM4 Service API控制流程 62 5.1 流程定义、流程实例...
并掌握监控和分析流程执行情况的方法,以便持续优化流程性能。 总之,工作流初学者可以通过这些资料深入理解工作流的核心概念,掌握EOS和JBPM的使用,为今后的企业流程自动化打下坚实的基础。不断实践和探索,你将...
4. **检查流程状态**:使用`processInstance.hasEnded()`方法检查流程是否已经结束。 #### 总结 本文详细介绍了JBPM开发的基本步骤,包括环境搭建、流程定义、部署与执行等多个方面。JBPM是一个非常强大的工作流...
4. **规则集成**:jbpm与Drools规则引擎紧密集成,允许在流程中嵌入业务规则。这使得流程可以根据动态条件进行调整,提高了流程的灵活性。 5. **监控和管理**:jbpm提供了管理控制台,可以实时监控流程实例的状态,...
1. **流程建模**:jbpm使用BPMN(Business Process Model and Notation)标准进行流程建模,这是一种图形化的表示方法,可以清晰地展示业务流程的逻辑。通过BPMN工具(如Eclipse的jBPM Process Modeler),开发者...
【标签】中的"源码"意味着我们将接触到jBPM的源代码层面,了解其内部工作机制,这对于深入理解jBMP和进行定制化开发至关重要。"工具"可能指的是与jBPM相关的开发工具和环境,如Eclipse BPMN2插件,用于图形化建模,...
4. 使用`@PostConstruct`注解的方法来初始化和加载规则到`KnowledgeSession`。 此外,为了确保代码质量,我们还会使用Maven作为构建工具,并通过jUnit进行单元测试。Maven可以帮助管理项目依赖,构建和打包应用,而...
工作流是一种组织和自动化业务流程的方法,旨在提高效率和降低成本。这一概念起源于生产组织和办公自动化领域,目的是通过将工作分解成可管理的任务,并按照预定义的规则和过程进行执行,来改善业务流程。WfMC...
- **流程创建**:介绍了几种创建流程的方法,包括使用图形编辑器、XML定义或API。 - **不同流程构造细节**:深入探讨了流程的各种元素,如活动、网关、事件等。 - **活动类型**:例如脚本任务、服务任务、用户任务...