flowable学习-demo

前两篇文章已经讲了怎么创建DPMN文件,那么开始试着运行一个DEMO

提前我说下我学习过程遇到的一个问题,就是我按照网上的类型,自己编写的DPMN文件,命名为test.XML后,部署上去一直提示找不到。原来是activiti 的模版必须以  bpmn20.xml  或者 bpmn结尾,最终修改为 test.bpmn20.xml 才可以。这个问题要尤其注意

一  首先 ProcessEngines 由 ProcessEngineConfiguration 进行创建的

ProcessEngine是线程安全的

ProcessEngineConfiguration 可以数据库进行配置。如下

@Configuration
@Slf4j
public class ProcessConfig {

    @Autowired
    private DataSourceProperties dataSourceProperties;

    @Bean
    @Primary
    protected ProcessEngineConfiguration configuration() {
        //setAsyncExecutorActivate
        List<FlowableEventListener> list = new ArrayList<>();
        list.add(new JobListener());
        Map<String,List<FlowableEventListener>> map = new HashMap<>();
        map.put("JOB_EXECUTION_SUCCESS",list);
        map.put("JOB_EXECUTION_FAILURE",list);

        ProcessEngineConfiguration processEngineConfiguration = StandaloneProcessEngineConfiguration
                .createStandaloneProcessEngineConfiguration()
                .setJdbcUrl(dataSourceProperties.getUrl())
                .setJdbcDriver(dataSourceProperties.getDriverClassName())
                .setJdbcUsername(dataSourceProperties.getUsername())
                .setJdbcPassword(dataSourceProperties.getPassword())
                .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
                .setAsyncExecutorActivate(true)
                .setCreateDiagramOnDeploy(true)
                .setProcessDiagramGenerator(new DefaultProcessDiagramGenerator())
                .setActivityFontName("幼圆")
                .setAnnotationFontName("幼圆")
                .setLabelFontName("幼圆");

        processEngineConfiguration.setTypedEventListeners(map);
        return processEngineConfiguration;
    }

    @Bean
    protected ProcessEngine engine() {
        //创建流程引擎
        return ProcessEngines.getDefaultProcessEngine();
    }
}

以上摘抄网上

二 部署流程定义

    需要用到 RepositoryService

   

//流程部署
Deployment deployment = repositoryService.createDeployment()
        .addClasspathResource("processes/MyProcess2.bpmn20.xml")
        .name("myProcess")
        .deploy();

部署流程 会把流程持久化到数据库中,并且该对象,可以通过API进行调用

 

三 开始一个流程实例

 通过 RuntimeService  即 processEngine.getRuntimeService()

ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess",variables);

或runtimeService.startProcessInstanceById 根据流程部署的ID

四 查询和完成任务

    通过 taskService

1 完成任务

Map<String, Object> variables = task.getProcessVariables();

variables.put("productID",productID);

taskService.complete(taskID, variables);

variables 为变量

2 查询任务

List<Task> tasks = taskService.createTaskQuery().list();

for (Task task : tasks) {
    System.out.println(task.toString());
}

我们可以查看这个任务的 taskId、taskDefinitionKey、 taskName、taskProcessInstanceId 等信息

3 查询任务所有的变量(分解任务编号)

Map<String, Object> processVariables = taskService.getVariables(taskid);

五 删除Deployment

 通过repositoryService

 1 查询目前有几个Deployment

DeploymentQuery deploymentQuery=repositoryService.createDeploymentQuery();
List<Deployment> deployments =deploymentQuery.list();
deployments.forEach(deployment -> {
    System.out.println(":"+deployment.getId()+deployment.getName());
});

2 删除Deployment

repositoryService.deleteDeployment(deployment.getId(),true);

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值