Activiti 外置表单的一种简单部署方式

来源:互联网 发布:京津冀生态环境数据 编辑:程序博客网 时间:2024/05/22 07:09

1 前言

    前些天在研究Activiti,外置表单这个坎倒是把我难住了,通过formKey来联结*.form文件总是提示该*.form不存在,后来在验证了多种方式之后只成功了一种方法,即通过将*.bpmn和*.form文件打包成.zip压缩包的方式一次部署。

2 准备

    请配置好Activiti运行所需的基本依赖与环境。
    请提前创建好流程所需的*.bpmn流程定义文件和*.form外置表单文件并在*.bpmn文件中设置某一Task的formKey为*.form(外置表单文件的文件名)。

3 开始

3.1 准备

    常用的代码,在不使用Spring配置的情况下:

// 装载引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

// 获取服务
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
FormService formService = processEngine.getFormService();

// 装载查询
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery();
TaskQuery taskQuery = taskService.createTaskQuery();
3.2 部署

    若想用*.form之类的外置表单,必须将*.bpmn和*.form文件均进行部署。目前唯一成功的途径就是将*.bpmn文件与*.form文件打包成一个zip压缩包,然后部署此zip压缩包。
    部署代码为:

// 获取本地文件
ZipInputStream zipInputStream =
    new ZipInputStream(
        new FileInputStream(
             new File("*.zip"))); // 填写你的zip压缩包绝对路径

// 进行部署
Deployment deployment = repositoryService
     .createDeployment()
     .addZipInputStream(zipInputStream)
     .deploy();

System.out.println(" - deployment: " + deployment);

    成功后的输出为:

 - deployment: DeploymentEntity[id=1, name=null] 

    其中name可以用.name(“foo”)的方式添加。

3.3 实例

    部署之后可以创建流程实例来看看效果了。
    流程实例的创建代码为:

runtimeService.startProcessInstanceByKey("YourProcess"); 
// 填写你的processDefinitionKey,通常默认为myProcess
3.4 测试

    创建一个流程实例之后,可以来测试一下*.form是否部署成功,代码如下:

Task task = taskQuery.singleResult(); // 注意,请使用关联了外置表单的Task来测试
TaskFormData formData = formService.getTaskFormData(task.getId());
Object renderedTaskForm = formService.getRenderedTaskForm(task.getId());
System.out.println(" - renderedTaskForm: " + renderedTaskForm);

    成功后的输出为:

 - renderedTaskForm: foobar // (*.form文件里面的内容)

    至此,外置表单成功部署。

原创粉丝点击