jbpm中的starttask,鸡肋?

本文探讨了JBPM中StartState配置Task的实际应用,通过实验发现StartState下的Task不会自动生成TaskInstance,并分析其可能主要用于设置流程变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jbpm的tasknode可谓功能强大,在实际中应该是用得最多的节点了,当程序运行到tasknode,会自动生成我们配置的taskinstance,不同的actionid找到自己的taskinstance就可以按单操作了,很是方便。

还有一种task很高调的出现在jbpm的websale例子中,就是startstate下配置task,起初我也是认为它和在tasknode下的task一样,会自动生成taskinstance,但是我错了。

如下是websale中的配置:

<start-state name="create new web sale order">
        
<task swimlane="salesman">
            
<controller>
                
<variable name="item"/>
                
<variable name="quantity"/>
                
<variable name="address"/>
            
</controller>
        
</task>
        
<transition to="evaluate web order"/>
    
</start-state>

我在程序中做了如下实验:

TaskInstance bankertaskInstance =(TaskInstance)context.getTaskMgmtSession().findTaskInstances("ernie").get(0);
//List中根本就没有值,因为jbpm_taskInstance表中没有这条数据。于是我决定自己创建taskInstance,虽然这不是我的本意,这些应该是jbpm自动完成的呀
Task startTasks = context.getGraphSession().findLatestProcessDefinition("jeffentask").getTaskMgmtDefinition().getStartTask();
TaskInstance taskInstance
=new TaskInstance(startTasks.getName());
taskInstance.create();
//context.save(taskInstance);//我以为需要自己进行持久化,结果空指针异常,taskInstance为null
taskInstance.start();
taskInstance.end();
//仍然没有保存到jbpm_taskinstance表
token.signal();//taskInstance.end没有像tasknode中的task代替token.signal()

难道startstate中的task的作用只是设置流程变量供后续流程使用,仅此而已那jbpm就太无聊了。不解。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值