RepositoryService
包含了用来管理发布资源的所有方法。
Deploying a process部署流程
String deploymentid = repositoryService.createDeployment()
.addResourceFromClasspath("org/jbpm/examples/services/Order.jpdl.xml")
.deploy();
- 通过上面的
addResourceFromClass
方法, 流程定义XML的内容可以从文件, 网址,字符串,输入流或zip输入流 中获得。 - 每次部署都包含了一系列资源。每个资源的内容都是一个字节数组。 jPDL流程文件都是以
.jpdl.xml
作为扩展名的。 其他资源是任务表单和java类 。 - 部署时要用到一系列资源, 默认会获得多种流程定义和其他的归档类型。 jPDL发布器会自动识别后缀名是
.jpdl.xml
的流程文件。 - 在部署过程中,会把一个
id
分配给流程定义。 这个id
的格式为{key}-{version}
, key和version之间使用连字符连接。 - 如果没有提供key(指在流程定义文件中,对流程的定义), 会在名字的基础自动生成。 生成的key会把所有不是字母和数字的字符替换成下划线 。
- 同一个名称只能关联到一个key, 反之亦然 。
- 如果没有为流程文件提供版本号, jBPM会自动为它分配一个版本号。 请特别注意那些已经部署了的名字 相同的流程文件的版本号。 它会比已经部署的同一个key的流程定义 里最大的版本号还大。 没有部署相同key的流程定义的版本号会分配为1。
删除流程定义
删除一个流程定义会把它从数据库中删除。
repositoryService.deleteDeployment(deploymentId);
如果在发布中的流程定义还存在活动的流程实例, 这个方法就会抛出异常。
如果希望级联删除一个发布中流程定义的所有流程实例, 可以使用deleteDeploymentCascade
。