以下是Java代码示例,用于根据输入的XML文件部署流程定义:
import java.io.File;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.w3c.dom.Document;
public class DeployProcessDefinition {
public static void main(String[] args) {
// 创建Activiti引擎
ProcessEngine processEngine = createProcessEngine();
// 获取流程定义存储服务
RepositoryService repositoryService = processEngine.getRepositoryService();
// 读取XML文件并转换为Document对象
Document xmlDocument = readXmlFile("process-definition.xml");
// 部署流程定义
Deployment deployment = repositoryService.createDeployment()
.addDocument("process-definition.bpmn20.xml", xmlDocument)
.deploy();
System.out.println("Successfully deployed process definition with id " + deployment.getId());
}
/** 创建Activiti引擎 */
private static ProcessEngine createProcessEngine() {
ProcessEngineConfiguration config = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration()
.setJdbcDriver("com.mysql.jdbc.Driver")
.setJdbcUrl("jdbc:mysql://localhost:3306/activiti")
.setJdbcUsername("root")
.setJdbcPassword("password");
return config.buildProcessEngine();
}
/** 读取XML文件并返回Document对象 */
private static Document readXmlFile(String fileName) {
try {
File inputFile = new File(fileName);
if (!inputFile.exists()) {
throw new RuntimeException("File not found: " + fileName);
}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(inputFile);
doc.getDocumentElement().normalize();
return doc;
} catch (Exception e) {
throw new RuntimeException("Failed to read XML file: " + fileName, e);
}
}
}
在此示例中,我们首先创建了一个Activiti引擎,并从该引擎获取了流程定义存储服务。然后,我们使用DOM解析器读取XML文件并将其转换为Document对象。最后,我们使用流程定义存储服务部署流程定义,并返回部署对象。




