JBPM问题整理(持续更新。。。)

1.stask与state的区别

 

    如果在task活动中让流程等待,直接使用signal,流程就会继续向下执行,任务就会与流程不同步,完成任务时,要么找不到对应的流程,要么会让流程错误的继续执行。

因此,如果流程需要人工参与,就不要直接去调用signal,signal只适用于外部程序自动调用的情况。

    举一个场景,流程执行到某个state,向外部财务系统发送请求付款的消息,然后进入等待状态,当外部财务系统完成付款后,会根据流程id调用流程引擎的signal,让流程继续向下推进

 

    如果流程需要等待一个操作人员来处理事务,处理之后让流程继续执行,就用task给这个人发送一个任务,告诉这个操作员要做一些事情,操作员完成事务之后,点击completeTask,流程就继续向下运行。

    如果流程需要与外部系统交互,就是先使用自动活动向外发送消息,然后state等待,外部系统完成事务后调用signal,流程继续向下运行。

 

    task和state的等待,本质上没有区别。

    只是为了区分不同的应用场景而设置的两种概念,人用task,外部系统用state。

    如果你把人也看到外部系统的一种,那么你使用的就是剔除了task部分的工作流引擎,更纯粹。那样的话,所有与任务相关的功能都需要你来自己实现。jbpm4提出task的概念,主要是为了方便人工任务的处理

 

2.历史变量问题

   

    jbpm4.3以前不提供,4.4提供。具体api

createVariables

void createVariables(java.lang.String executionId,
                     java.util.Map variables,
                     boolean historyEnabled)
creates variable values in the referenced execution. optionally enables variable history tracking.

 

 

你可能感兴趣的:(JBPM问题整理(持续更新。。。))