在某种特定的情况下,可能会出现选中列表项,然后根据列表项启动流程的情况.

APP_j_api_showcase-1-20200221181147.jwa

简单介绍

  1. 导入APP
  2. 点开List的设计
  3. 查看左下角批量启动流程按钮的配置
import org.joget.workflow.model.WorkflowProcessResult;
import org.joget.apps.app.service.AppUtil;
import org.joget.workflow.model.service.WorkflowManager;
import org.joget.workflow.model.WorkflowProcessResult;

import org.joget.commons.util.LogUtil;

String processDefId = "j_api_showcase#latest#process1";
String processId = null;
String startProcUsername = "admin";
Boolean startManually = false;

for (String key : rowKeys) {
    
    Map variables = new HashMap();
    //自定义工作流变量
    variables.put("status","open");
	variables.put("id",key);
    WorkflowManager workflowManager = (WorkflowManager) AppUtil.getApplicationContext().getBean("workflowManager");
	//已经存在的记录ID
	String recordId = key;
	WorkflowProcessResult workflowProcessResult = workflowManager.processStart(processDefId,processId,variables,startProcUsername,recordId,startManually);
	LogUtil.info("start process ", workflowProcessResult.toString()+" >>>> row key :"+ key);
}

实现原理

  1. 在列表的BeanShell Action中,注入参数包含被选择的每一条记录的ID: rowKeys
  2. 循环每一条记录,依次启动流程.
  3. 启动流程时,关键参数是 processDefId (流程定义ID,在流程设计页面可以看到), variables
  4. 在本例,工作流变量存储了每一条记录的ID值.并且把记录的ID值作为流程关联ID( recordId )

请根据实际情况修改其中的参数. 比如流程定义的ID,工作流变量等等

相关的文章