溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

activiti 5.16 businessKey如何為null處理。

發(fā)布時(shí)間:2021-10-20 10:40:39 來源:億速云 閱讀:168 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了activiti 5.16 businessKey如何為null處理。,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

activiti版本 5.16

產(chǎn)生原因:創(chuàng)建子流程時(shí),businesskey 不傳遞。

解決如下:

1、創(chuàng)建監(jiān)聽類:

import org.activiti.engine.delegate.event.ActivitiEntityEvent;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BusinessKeyInjectionActivitiEventListener implements ActivitiEventListener {
    private Logger log = LoggerFactory.getLogger(getClass());
    @Override
    public void onEvent(ActivitiEvent event) {
        switch (event.getType()) {
            case TASK_CREATED:
                if (event instanceof ActivitiEntityEvent) {
                    ActivitiEntityEvent activityEntityEvent = (ActivitiEntityEvent) event;

                    TaskEntity taskEntity = (TaskEntity) activityEntityEvent.getEntity();
                    ExecutionEntity exEntity = taskEntity.getExecution();
                    String key = exEntity.getBusinessKey();
                    log.info("獲取當(dāng)前任務(wù)的流程實(shí)例的businessKey:{}",key);
                    if(StringUtils.isEmpty(key)){
                        ExecutionEntity superExecEntity = exEntity.getSuperExecution();
                        key=superExecEntity.getBusinessKey();
                        if(StringUtils.isEmpty(key)){
                            key=superExecEntity.getProcessInstance().getBusinessKey();
                        }
                        log.info("獲取當(dāng)前任務(wù) 上一個(gè)流程實(shí)例的businessKey:{}",key);
                        log.info("設(shè)置當(dāng)前流程實(shí)例的businessKey:{}",key);
                        exEntity.setBusinessKey(key);
                        //讓businessKey生效 此處非常關(guān)鍵。
                        exEntity.updateProcessBusinessKey(key);
                    }
                    break;
                }
            default:
                break;
        }
    }

    @Override
    public boolean isFailOnException() {
        // TODO Auto-generated method stub
        return false;
    }
}

2、配置監(jiān)聽:

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
		<property name="dataSource"          ref="dataSourceTech" />
		<property name="jobExecutorActivate" value="true" />
	<!-- 其間的配置見官方demo -->

		<property name="eventListeners">
			<list>
<!--				businessKey空值處理監(jiān)聽 -->
				<bean class="com.cdel.activiti.listener.BusinessKeyInjectionActivitiEventListener"/>
			</list>
		</property>
		
	</bean>

上述內(nèi)容就是activiti 5.16 businessKey如何為null處理。,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI