feat - 新增一张加签记录表,用于 JVM 实例重启后的动态模型重载
This commit is contained in:
parent
565e6d320d
commit
4d1193d333
@ -193,7 +193,6 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand<Void> implemen
|
||||
|
||||
runtimeService.createChangeActivityStateBuilder()
|
||||
.processInstanceId(task.getProcessInstanceId())
|
||||
// .moveExecutionsToSingleActivityId(Collections.singletonList(task.getExecutionId()), newUserTask.getId())
|
||||
.moveActivityIdTo(task.getTaskDefinitionKey(), newUserTask.getId())
|
||||
.changeState();
|
||||
}
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
package cn.axzo.workflow.core.repository.entity;
|
||||
|
||||
import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
|
||||
import cn.axzo.workflow.common.enums.BpmnCountersignTypeEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.core.conf.handler.ListAssigneeTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 扩展动态前后加签记录,用于应用重启后的模型内容恢复
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-10-17 18:23
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName(value = "ext_ax_dynamic_sign_record", autoResultMap = true)
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
public class ExtAxDynamicSignRecord extends BaseEntity<ExtAxDynamicSignRecord> {
|
||||
/**
|
||||
* 流程实例 ID
|
||||
*/
|
||||
private String processInstanceId;
|
||||
/**
|
||||
* 流程实例对应的流程定义 ID
|
||||
*/
|
||||
private String processDefinitionId;
|
||||
/**
|
||||
* 加签次数
|
||||
*/
|
||||
private Integer counterSignCount;
|
||||
/**
|
||||
* 加签类型,前加签/后加签
|
||||
* {@link BpmnCountersignTypeEnum}
|
||||
*/
|
||||
private String counterSignType;
|
||||
/**
|
||||
* 被加签的审批人
|
||||
*/
|
||||
@TableField(value = "assigner_list", typeHandler = ListAssigneeTypeHandler.class)
|
||||
private List<BpmnTaskDelegateAssigner> assignerList;
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package cn.axzo.workflow.core.repository.mapper;
|
||||
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxDynamicSignRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 动态前后加签记录 Mapper
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-10-17 18:28
|
||||
*/
|
||||
@Mapper
|
||||
public interface ExtAxDynamicSignRecordMapper extends BaseMapperX<ExtAxDynamicSignRecord> {
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package cn.axzo.workflow.core.service;
|
||||
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxDynamicSignRecord;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* 动态前后加签记录服务接口
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-10-17 18:30
|
||||
*/
|
||||
public interface ExtAxDynamicSignRecordService extends IService<ExtAxDynamicSignRecord> {
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
package cn.axzo.workflow.core.service.impl;
|
||||
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxDynamicSignRecord;
|
||||
import cn.axzo.workflow.core.repository.mapper.ExtAxDynamicSignRecordMapper;
|
||||
import cn.axzo.workflow.core.service.ExtAxDynamicSignRecordService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 流程签署业务信息记录
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-04-02 10:06
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ExtAxDynamicSignRecordServiceImpl extends ServiceImpl<ExtAxDynamicSignRecordMapper, ExtAxDynamicSignRecord> implements ExtAxDynamicSignRecordService {
|
||||
|
||||
@Resource
|
||||
private ExtAxDynamicSignRecordMapper extAxDynamicSignRecordMapper;
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
package cn.axzo.workflow.server.initializer;
|
||||
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxDynamicSignRecord;
|
||||
import cn.axzo.workflow.core.service.ExtAxDynamicSignRecordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.SmartLifecycle;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 在框架提供 Web 服务前,恢复动态前后加签的流程实例的内存中的模型
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-10-17 17:43
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class RecoverDynamicCounterSignProcess implements SmartLifecycle {
|
||||
private final ExtAxDynamicSignRecordService extAxDynamicSignRecordService;
|
||||
private boolean isRunning = false;
|
||||
|
||||
public RecoverDynamicCounterSignProcess(ExtAxDynamicSignRecordService extAxDynamicSignRecordService) {
|
||||
this.extAxDynamicSignRecordService = extAxDynamicSignRecordService;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
// TODO 恢复动态会签中的流程实例
|
||||
log.info("executing before web server start");
|
||||
List<ExtAxDynamicSignRecord> list = extAxDynamicSignRecordService.list();
|
||||
|
||||
isRunning = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
isRunning = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRunning() {
|
||||
return isRunning;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPhase() {
|
||||
return Integer.MAX_VALUE - 2; // 确保在Web服务器启动前执行
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user