org.activiti.engine.repository.DeploymentBuilder Java Examples
The following examples show how to use
org.activiti.engine.repository.DeploymentBuilder.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SingleResourceAutoDeploymentStrategy.java From flowable-engine with Apache License 2.0 | 6 votes |
@Override public void deployResources(final String deploymentNameHint, final Resource[] resources, final RepositoryService repositoryService) { // Create a separate deployment for each resource using the resource // name for (final Resource resource : resources) { final String resourceName = determineResourceName(resource); final DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().enableDuplicateFiltering().name(resourceName); try { if (resourceName.endsWith(".bar") || resourceName.endsWith(".zip") || resourceName.endsWith(".jar")) { deploymentBuilder.addZipInputStream(new ZipInputStream(resource.getInputStream())); } else { deploymentBuilder.addInputStream(resourceName, resource.getInputStream()); } } catch (IOException e) { throw new ActivitiException("couldn't auto deploy resource '" + resource + "': " + e.getMessage(), e); } deploymentBuilder.deploy(); } }
Example #2
Source File: AddBpmnModelTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) throws Exception { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); String resourceName = "My Process"; BpmnModel bpmnModel = createProcessModel(); // 发布部署构造器 deploymentBuilder.addBpmnModel(resourceName, bpmnModel); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #3
Source File: AddBpmnModelTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) throws Exception { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); String resourceName = "My Process"; BpmnModel bpmnModel = createProcessModel(); // 发布部署构造器 deploymentBuilder.addBpmnModel(resourceName, bpmnModel); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #4
Source File: BpmnErrorTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); // 增加错误的schema文件(包括无效的标签)<test>test</test> // 报错信息:[Validation set: 'activiti-executable-process' | //Problem: 'activiti-start-event-multiple-found'] : //Multiple none start events are not supported - //[Extra info : processDefinitionId = myProcess | // processDefinitionName = My process | | id = startevent1 | //| activityName = Start | ] ( line: 4, column: 47) deploymentBuilder.addClasspathResource("error/bpmn_error.bpmn"); // 禁用Bpmn验证 deploymentBuilder.disableBpmnValidation(); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #5
Source File: SchemaErrorTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); // 增加错误的schema文件(包括无效的标签)<test>test</test> // 校验报错:发现了以元素 'test' 开头的无效内容。 deploymentBuilder.addClasspathResource("error/schema_error.bpmn"); // 禁用Schema验证 deploymentBuilder.disableSchemaValidation(); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #6
Source File: AddZipInputStreamTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) throws Exception { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); // 新建文件输入流 FileInputStream fileInputStream = new FileInputStream(new File("resources/datas.zip")); // 新建Zip输入流 ZipInputStream zipInputStream = new ZipInputStream(fileInputStream); // 将Zip输入流添加到部署构造器中 deploymentBuilder.addZipInputStream(zipInputStream); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #7
Source File: SchemaErrorTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); // 增加错误的schema文件(包括无效的标签)<test>test</test> // 校验报错:发现了以元素 'test' 开头的无效内容。 deploymentBuilder.addClasspathResource("error/schema_error.bpmn"); // 禁用Schema验证 deploymentBuilder.disableSchemaValidation(); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #8
Source File: TextQueryTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) throws Exception { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService .createDeployment(); deploymentBuilder.addClasspathResource("my_text.txt"); Deployment deployment = deploymentBuilder.deploy(); // 数据查询 InputStream inputStream = repositoryService.getResourceAsStream( deployment.getId(), "my_text.txt"); int count = inputStream.available(); byte[] contents = new byte[count]; inputStream.read(contents); String result = new String(contents); // 输入结果 System.out.println(result); // 关闭流程引擎 engine.close(); }
Example #9
Source File: AddZipInputStreamTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) throws Exception { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); // 新建文件输入流 FileInputStream fileInputStream = new FileInputStream(new File("resources/datas.zip")); // 新建Zip输入流 ZipInputStream zipInputStream = new ZipInputStream(fileInputStream); // 将Zip输入流添加到部署构造器中 deploymentBuilder.addZipInputStream(zipInputStream); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #10
Source File: BpmnErrorTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); // 增加错误的schema文件(包括无效的标签)<test>test</test> // 报错信息:[Validation set: 'activiti-executable-process' | //Problem: 'activiti-start-event-multiple-found'] : //Multiple none start events are not supported - //[Extra info : processDefinitionId = myProcess | // processDefinitionName = My process | | id = startevent1 | //| activityName = Start | ] ( line: 4, column: 47) deploymentBuilder.addClasspathResource("error/bpmn_error.bpmn"); // 禁用Bpmn验证 deploymentBuilder.disableBpmnValidation(); // 发布部署构造器 deploymentBuilder.deploy(); // 关闭流程引擎 engine.close(); }
Example #11
Source File: SingleResourceAutoDeploymentStrategy.java From activiti6-boot2 with Apache License 2.0 | 6 votes |
@Override public void deployResources(final String deploymentNameHint, final Resource[] resources, final RepositoryService repositoryService) { // Create a separate deployment for each resource using the resource // name for (final Resource resource : resources) { final String resourceName = determineResourceName(resource); final DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().enableDuplicateFiltering().name(resourceName); try { if (resourceName.endsWith(".bar") || resourceName.endsWith(".zip") || resourceName.endsWith(".jar")) { deploymentBuilder.addZipInputStream(new ZipInputStream(resource.getInputStream())); } else { deploymentBuilder.addInputStream(resourceName, resource.getInputStream()); } } catch (IOException e) { throw new ActivitiException("couldn't auto deploy resource '" + resource + "': " + e.getMessage(), e); } deploymentBuilder.deploy(); } }
Example #12
Source File: DefaultAutoDeploymentStrategy.java From activiti6-boot2 with Apache License 2.0 | 6 votes |
@Override public void deployResources(final String deploymentNameHint, final Resource[] resources, final RepositoryService repositoryService) { // Create a single deployment for all resources using the name hint as // the // literal name final DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().enableDuplicateFiltering().name(deploymentNameHint); for (final Resource resource : resources) { final String resourceName = determineResourceName(resource); try { if (resourceName.endsWith(".bar") || resourceName.endsWith(".zip") || resourceName.endsWith(".jar")) { deploymentBuilder.addZipInputStream(new ZipInputStream(resource.getInputStream())); } else { deploymentBuilder.addInputStream(resourceName, resource.getInputStream()); } } catch (IOException e) { throw new ActivitiException("couldn't auto deploy resource '" + resource + "': " + e.getMessage(), e); } } deploymentBuilder.deploy(); }
Example #13
Source File: DeploymentBuilderImpl.java From activiti6-boot2 with Apache License 2.0 | 6 votes |
public DeploymentBuilder addZipInputStream(ZipInputStream zipInputStream) { try { ZipEntry entry = zipInputStream.getNextEntry(); while (entry != null) { if (!entry.isDirectory()) { String entryName = entry.getName(); byte[] bytes = IoUtil.readInputStream(zipInputStream, entryName); ResourceEntity resource = resourceEntityManager.create(); resource.setName(entryName); resource.setBytes(bytes); deployment.addResource(resource); } entry = zipInputStream.getNextEntry(); } } catch (Exception e) { throw new ActivitiException("problem reading zip input stream", e); } return this; }
Example #14
Source File: DeploymentBuilderImpl.java From flowable-engine with Apache License 2.0 | 6 votes |
@Override public DeploymentBuilder addZipInputStream(ZipInputStream zipInputStream) { try { ZipEntry entry = zipInputStream.getNextEntry(); while (entry != null) { if (!entry.isDirectory()) { String entryName = entry.getName(); byte[] bytes = IoUtil.readInputStream(zipInputStream, entryName); ResourceEntity resource = new ResourceEntity(); resource.setName(entryName); resource.setBytes(bytes); deployment.addResource(resource); } entry = zipInputStream.getNextEntry(); } } catch (Exception e) { throw new ActivitiException("problem reading zip input stream", e); } return this; }
Example #15
Source File: ProcessDeployer.java From activiti6-boot2 with Apache License 2.0 | 6 votes |
/** * Deploys all processes listed in the {@link #PROCESSES_FILE_NAME}-file. */ public void deployProcesses() { // build a single deployment containing all discovered processes Set<String> resourceNames = getResourceNames(); if (resourceNames.isEmpty()) { logger.debug("Not creating a deployment"); return; } logger.debug("Start deploying processes."); DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment(); for (String string : resourceNames) { logger.info("Adding '" + string + "' to deployment."); deploymentBuilder.addClasspathResource(string); } // deploy the processes deploymentBuilder.deploy(); logger.debug("Done deploying processes."); }
Example #16
Source File: EnterpriseWorkflowTestApi.java From alfresco-remote-api with GNU Lesser General Public License v3.0 | 6 votes |
protected String deployProcessDefinition(String... artifacts) { DeploymentBuilder deploymentBuilder = activitiProcessEngine.getRepositoryService().createDeployment(); boolean firstArtifact = true; for (String artifact : artifacts) { InputStream bpmnInputStream = getClass().getClassLoader().getResourceAsStream(artifact); String name = artifact.substring(artifact.lastIndexOf("/") + 1); if (firstArtifact) { deploymentBuilder.name(name); } deploymentBuilder.addInputStream(name, bpmnInputStream); } String deploymentId = deploymentBuilder.deploy().getId(); return deploymentId; }
Example #17
Source File: DefaultAutoDeploymentStrategy.java From flowable-engine with Apache License 2.0 | 6 votes |
@Override public void deployResources(final String deploymentNameHint, final Resource[] resources, final RepositoryService repositoryService) { // Create a single deployment for all resources using the name hint as // the literal name final DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().enableDuplicateFiltering().name(deploymentNameHint); for (final Resource resource : resources) { final String resourceName = determineResourceName(resource); try { if (resourceName.endsWith(".bar") || resourceName.endsWith(".zip") || resourceName.endsWith(".jar")) { deploymentBuilder.addZipInputStream(new ZipInputStream(resource.getInputStream())); } else { deploymentBuilder.addInputStream(resourceName, resource.getInputStream()); } } catch (IOException e) { throw new ActivitiException("couldn't auto deploy resource '" + resource + "': " + e.getMessage(), e); } } deploymentBuilder.deploy(); }
Example #18
Source File: TextQueryTest.java From CrazyWorkflowHandoutsActiviti6 with MIT License | 6 votes |
public static void main(String[] args) throws Exception { // 新建流程引擎 ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); // 存储服务 RepositoryService repositoryService = engine.getRepositoryService(); // 新建部署构造器 DeploymentBuilder deploymentBuilder = repositoryService .createDeployment(); deploymentBuilder.addClasspathResource("my_text.txt"); Deployment deployment = deploymentBuilder.deploy(); // 数据查询 InputStream inputStream = repositoryService.getResourceAsStream( deployment.getId(), "my_text.txt"); int count = inputStream.available(); byte[] contents = new byte[count]; inputStream.read(contents); String result = new String(contents); // 输入结果 System.out.println(result); // 关闭流程引擎 engine.close(); }
Example #19
Source File: DeploymentController.java From activiti-in-action-codes with Apache License 2.0 | 5 votes |
/** * 部署流程资源 */ @RequestMapping(value = "/deploy") public String deploy(@RequestParam(value = "file", required = true) MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); try { // 得到输入流(字节流)对象 InputStream fileInputStream = file.getInputStream(); // 文件的扩展名 String extension = FilenameUtils.getExtension(fileName); // zip或者bar类型的文件用ZipInputStream方式部署 DeploymentBuilder deployment = repositoryService.createDeployment(); if (extension.equals("zip") || extension.equals("bar")) { ZipInputStream zip = new ZipInputStream(fileInputStream); deployment.addZipInputStream(zip); } else { // 其他类型的文件直接部署 deployment.addInputStream(fileName, fileInputStream); } deployment.deploy(); } catch (Exception e) { logger.error("error on deploy process, because of file input stream"); } return "redirect:process-list"; }
Example #20
Source File: DeploymentController.java From activiti-in-action-codes with Apache License 2.0 | 5 votes |
/** * 部署流程资源 */ @RequestMapping(value = "/deploy") public String deploy(@RequestParam(value = "file", required = true) MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); try { // 得到输入流(字节流)对象 InputStream fileInputStream = file.getInputStream(); // 文件的扩展名 String extension = FilenameUtils.getExtension(fileName); // zip或者bar类型的文件用ZipInputStream方式部署 DeploymentBuilder deployment = repositoryService.createDeployment(); if (extension.equals("zip") || extension.equals("bar")) { ZipInputStream zip = new ZipInputStream(fileInputStream); deployment.addZipInputStream(zip); } else { // 其他类型的文件直接部署 deployment.addInputStream(fileName, fileInputStream); } deployment.deploy(); } catch (Exception e) { logger.error("error on deploy process, because of file input stream"); } return "redirect:process-list"; }
Example #21
Source File: DeploymentController.java From activiti-in-action-codes with Apache License 2.0 | 5 votes |
/** * 部署流程资源 */ @RequestMapping(value = "/deploy") public String deploy(@RequestParam(value = "file", required = true) MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); try { // 得到输入流(字节流)对象 InputStream fileInputStream = file.getInputStream(); // 文件的扩展名 String extension = FilenameUtils.getExtension(fileName); // zip或者bar类型的文件用ZipInputStream方式部署 DeploymentBuilder deployment = repositoryService.createDeployment(); if (extension.equals("zip") || extension.equals("bar")) { ZipInputStream zip = new ZipInputStream(fileInputStream); deployment.addZipInputStream(zip); } else { // 其他类型的文件直接部署 deployment.addInputStream(fileName, fileInputStream); } deployment.deploy(); } catch (Exception e) { logger.error("error on deploy process, because of file input stream"); } return "redirect:process-list"; }
Example #22
Source File: DeploymentController.java From activiti-in-action-codes with Apache License 2.0 | 5 votes |
/** * 部署流程资源 */ @RequestMapping(value = "/deploy") public String deploy(@RequestParam(value = "file", required = true) MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); try { // 得到输入流(字节流)对象 InputStream fileInputStream = file.getInputStream(); // 文件的扩展名 String extension = FilenameUtils.getExtension(fileName); // zip或者bar类型的文件用ZipInputStream方式部署 DeploymentBuilder deployment = repositoryService.createDeployment(); if (extension.equals("zip") || extension.equals("bar")) { ZipInputStream zip = new ZipInputStream(fileInputStream); deployment.addZipInputStream(zip); } else { // 其他类型的文件直接部署 deployment.addInputStream(fileName, fileInputStream); } deployment.deploy(); } catch (Exception e) { logger.error("error on deploy process, because of file input stream"); } return "redirect:process-list"; }
Example #23
Source File: DeploymentController.java From activiti-in-action-codes with Apache License 2.0 | 5 votes |
/** * 部署流程资源 */ @RequestMapping(value = "/deploy") public String deploy(@RequestParam(value = "file", required = true) MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); try { // 得到输入流(字节流)对象 InputStream fileInputStream = file.getInputStream(); // 文件的扩展名 String extension = FilenameUtils.getExtension(fileName); // zip或者bar类型的文件用ZipInputStream方式部署 DeploymentBuilder deployment = repositoryService.createDeployment(); if (extension.equals("zip") || extension.equals("bar")) { ZipInputStream zip = new ZipInputStream(fileInputStream); deployment.addZipInputStream(zip); } else { // 其他类型的文件直接部署 deployment.addInputStream(fileName, fileInputStream); } deployment.deploy(); } catch (Exception e) { logger.error("error on deploy process, because of file input stream"); } return "redirect:process-list"; }
Example #24
Source File: DeploymentController.java From activiti-in-action-codes with Apache License 2.0 | 5 votes |
/** * 部署流程资源 */ @RequestMapping(value = "/deploy") public String deploy(@RequestParam(value = "file", required = true) MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); try { // 得到输入流(字节流)对象 InputStream fileInputStream = file.getInputStream(); // 文件的扩展名 String extension = FilenameUtils.getExtension(fileName); // zip或者bar类型的文件用ZipInputStream方式部署 DeploymentBuilder deployment = repositoryService.createDeployment(); if (extension.equals("zip") || extension.equals("bar")) { ZipInputStream zip = new ZipInputStream(fileInputStream); deployment.addZipInputStream(zip); } else { // 其他类型的文件直接部署 deployment.addInputStream(fileName, fileInputStream); } deployment.deploy(); } catch (Exception e) { logger.error("error on deploy process, because of file input stream"); } return "redirect:process-list"; }
Example #25
Source File: DeploymentBuilderImpl.java From flowable-engine with Apache License 2.0 | 5 votes |
@Override public DeploymentBuilder addBpmnModel(String resourceName, BpmnModel bpmnModel) { BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter(); String bpmn20Xml = new String(bpmnXMLConverter.convertToXML(bpmnModel), StandardCharsets.UTF_8); addString(resourceName, bpmn20Xml); return this; }
Example #26
Source File: DeploymentBuilderImpl.java From flowable-engine with Apache License 2.0 | 5 votes |
@Override public DeploymentBuilder addString(String resourceName, String text) { if (text == null) { throw new ActivitiIllegalArgumentException("text is null"); } ResourceEntity resource = new ResourceEntity(); resource.setName(resourceName); try { resource.setBytes(text.getBytes(DEFAULT_ENCODING)); } catch (UnsupportedEncodingException e) { throw new ActivitiException("Unable to get process bytes.", e); } deployment.addResource(resource); return this; }
Example #27
Source File: DeploymentBuilderImpl.java From flowable-engine with Apache License 2.0 | 5 votes |
@Override public DeploymentBuilder addClasspathResource(String resource) { InputStream inputStream = ReflectUtil.getResourceAsStream(resource); if (inputStream == null) { throw new ActivitiIllegalArgumentException("resource '" + resource + "' not found"); } return addInputStream(resource, inputStream); }
Example #28
Source File: DeploymentBuilderImpl.java From flowable-engine with Apache License 2.0 | 5 votes |
@Override public DeploymentBuilder addInputStream(String resourceName, InputStream inputStream) { if (inputStream == null) { throw new ActivitiIllegalArgumentException("inputStream for resource '" + resourceName + "' is null"); } byte[] bytes = IoUtil.readInputStream(inputStream, resourceName); ResourceEntity resource = new ResourceEntity(); resource.setName(resourceName); resource.setBytes(bytes); deployment.addResource(resource); return this; }
Example #29
Source File: ResourceParentFolderAutoDeploymentStrategy.java From flowable-engine with Apache License 2.0 | 5 votes |
@Override public void deployResources(final String deploymentNameHint, final Resource[] resources, final RepositoryService repositoryService) { // Create a deployment for each distinct parent folder using the name // hint // as a prefix final Map<String, Set<Resource>> resourcesMap = createMap(resources); for (final Entry<String, Set<Resource>> group : resourcesMap.entrySet()) { final String deploymentName = determineDeploymentName(deploymentNameHint, group.getKey()); final DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().enableDuplicateFiltering().name(deploymentName); for (final Resource resource : group.getValue()) { final String resourceName = determineResourceName(resource); try { if (resourceName.endsWith(".bar") || resourceName.endsWith(".zip") || resourceName.endsWith(".jar")) { deploymentBuilder.addZipInputStream(new ZipInputStream(resource.getInputStream())); } else { deploymentBuilder.addInputStream(resourceName, resource.getInputStream()); } } catch (IOException e) { throw new ActivitiException("couldn't auto deploy resource '" + resource + "': " + e.getMessage(), e); } } deploymentBuilder.deploy(); } }
Example #30
Source File: DeploymentController.java From activiti-in-action-codes with Apache License 2.0 | 5 votes |
/** * 部署流程资源 */ @RequestMapping(value = "/deploy") public String deploy(@RequestParam(value = "file", required = true) MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); try { // 得到输入流(字节流)对象 InputStream fileInputStream = file.getInputStream(); // 文件的扩展名 String extension = FilenameUtils.getExtension(fileName); // zip或者bar类型的文件用ZipInputStream方式部署 DeploymentBuilder deployment = repositoryService.createDeployment(); if (extension.equals("zip") || extension.equals("bar")) { ZipInputStream zip = new ZipInputStream(fileInputStream); deployment.addZipInputStream(zip); } else { // 其他类型的文件直接部署 deployment.addInputStream(fileName, fileInputStream); } deployment.deploy(); } catch (Exception e) { logger.error("error on deploy process, because of file input stream"); } return "redirect:process-list"; }