`
lokepaqi
  • 浏览: 46042 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jbmp4常用的方法

    博客分类:
  • jbpm
XML 
阅读更多
	/**
	 * 通过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;
	}
	
分享到:
评论

相关推荐

    myeclipse6.0的jbmp插件

    4. **持久化框架**:持久化框架是处理对象到数据库之间映射的工具,使得开发者无需编写大量的SQL代码就能实现数据的存储和检索。JBMP是Java中的一种持久化实现,类似于Hibernate,但JBMP是JBoss公司的产品,而...

    oa.rar_OA文档_SSH JBMP_jbmp oa_oa_oa ssh

    其中“含丰富的文档”暗示了这个压缩包可能包括了开发过程中的各种文档,如设计文档、用户手册、开发指南等,这些对于理解系统的架构、功能以及使用方法都极其重要。 从标签"oa文档 ssh_jbmp jbmp_oa oa oa_ssh"来...

    JBPM4工作流应用开始指南.rar

    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+JBMP入门

    并掌握监控和分析流程执行情况的方法,以便持续优化流程性能。 总之,工作流初学者可以通过这些资料深入理解工作流的核心概念,掌握EOS和JBPM的使用,为今后的企业流程自动化打下坚实的基础。不断实践和探索,你将...

    J2EE OA 框架JBPM开发步骤

    4. **检查流程状态**:使用`processInstance.hasEnded()`方法检查流程是否已经结束。 #### 总结 本文详细介绍了JBPM开发的基本步骤,包括环境搭建、流程定义、部署与执行等多个方面。JBPM是一个非常强大的工作流...

    jbpm开发工具

    4. **规则集成**:jbpm与Drools规则引擎紧密集成,允许在流程中嵌入业务规则。这使得流程可以根据动态条件进行调整,提高了流程的灵活性。 5. **监控和管理**:jbpm提供了管理控制台,可以实时监控流程实例的状态,...

    jbpm开发工具2

    1. **流程建模**:jbpm使用BPMN(Business Process Model and Notation)标准进行流程建模,这是一种图形化的表示方法,可以清晰地展示业务流程的逻辑。通过BPMN工具(如Eclipse的jBPM Process Modeler),开发者...

    jBPM开发入门指南

    【标签】中的"源码"意味着我们将接触到jBPM的源代码层面,了解其内部工作机制,这对于深入理解jBMP和进行定制化开发至关重要。"工具"可能指的是与jBPM相关的开发工具和环境,如Eclipse BPMN2插件,用于图形化建模,...

    Drools+Spring环境构建

    4. 使用`@PostConstruct`注解的方法来初始化和加载规则到`KnowledgeSession`。 此外,为了确保代码质量,我们还会使用Maven作为构建工具,并通过jUnit进行单元测试。Maven可以帮助管理项目依赖,构建和打包应用,而...

    jBPM1-工作流与JBPM.ppt

    工作流是一种组织和自动化业务流程的方法,旨在提高效率和降低成本。这一概念起源于生产组织和办公自动化领域,目的是通过将工作分解成可管理的任务,并按照预定义的规则和过程进行执行,来改善业务流程。WfMC...

    jbpm文档,Jbpm 帮助

    - **流程创建**:介绍了几种创建流程的方法,包括使用图形编辑器、XML定义或API。 - **不同流程构造细节**:深入探讨了流程的各种元素,如活动、网关、事件等。 - **活动类型**:例如脚本任务、服务任务、用户任务...

Global site tag (gtag.js) - Google Analytics