JAVA简易审批流-08

@Slf4j
@Component
public class ApprovalEventPublisher {
    @Autowired
    private ApplicationEventPublisher publisher;

    @Autowired
    private ProApprovalFlowNodeHandlerDomainService nodeHandlerService;

    @Autowired
    private ProApprovalFlowInstanceDomainService instanceService;

    @Autowired
    private ProApprovalFlowNodeDomainService nodeService;

    /**
     * 发布事件
     *
     * @param event 事件
     */
    public void publishEvent(BaseEvent event) {
        ProApprovalFlowInstanceDto flowInfo = event.getFlowInfo();
        List<ProApprovalFlowNodeHandlerDto> nodeHandlerList =
            nodeHandlerService.loadByInstanceAndNodeId(flowInfo.getFlowInstanceId(), flowInfo.getCurrentNode());
        event.setCurHandlers(nodeHandlerList);
        log.info("bizId : {} instance : {} preNode: {} CurNode: {}", flowInfo.getBizDataId(),
            flowInfo.getFlowInstanceId(), flowInfo.getPreNodeCode(), flowInfo.getCurrentNodeCode());
        publisher.publishEvent(event);
    }
}
@Data
public abstract class BaseEvent {
    private ProApprovalFlowInstanceDto flowInfo;

    private List<ProApprovalFlowNodeHandlerDto> curHandlers;

    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public BaseEvent(ProApprovalFlowInstanceDto flowInfo) {
        this.flowInfo = flowInfo;
    }
}
public class FinishedEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public FinishedEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class NodeFinishedEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public NodeFinishedEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class PendingEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public PendingEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
@Getter
@Setter
public class ReferralEvent extends BaseEvent {
    /** 转后审批人W3账号,当待办结果为转审时必填 */
    private String forwardUser;

    /** 转后审批人名称,当待办结果为转审时必填 */
    private String forwardUserName;

    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public ReferralEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class RejectEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public RejectEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class RevokeEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public RevokeEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。您可以使用Activiti或Camunda等流程引擎来实现Java审批Demo。这些流程引擎提供了丰富的API和工具,可以帮助您快速构建和部署审批流程。您可以在GitHub等代码托管平台上找到许多开源的审批Demo,可以作为您的参考。 ### 回答2: 审批是一种常见的业务流程,通过该流程可以实现对某些操作的审批和控制。下面是一个基于Java审批Demo的实现思路。 首先,需要定义一个审批节点的类,该类包含节点的属性,如节点类型、节点名称、审批人等。节点可以分为开始节点、普通节点和结束节点。开始节点标识流程的开始,结束节点标识流程的结束。普通节点代表实际的审批环节。 然后,需要定义一个审批流程类,该类包含一个节点列表,表示整个流程的各个节点。审批流程类还需要提供添加节点、删除节点和执行审批流程的方法。添加节点方法用于向节点列表中添加新的节点,删除节点方法用于删除节点列表中的某个节点,执行审批流程方法用于按照节点列表的顺序执行各个节点的审批动作。 接下来,需要定义一个审批记录的类,该类包含记录的属性,如审批人、审批时间、审批结果等。在执行审批流程时,每个节点都会生成一条审批记录,记录该节点的审批结果。 最后,编写一个主程序,用于创建一个审批流程对象,并添加各个节点,然后执行该审批流程。主程序需要模拟用户的操作,如输入审批意见并进行节点之间的跳转。在执行过程中,会不断地生成审批记录,直到流程结束。 通过以上步骤,我们可以完成一个简单的Java审批Demo。通过该Demo,我们可以清楚地了解审批的工作原理,以及如何使用Java实现一个审批流程。 ### 回答3: 审批可以理解为一个流程,涉及到多个环节的审批过程。生成一个Java审批Demo主要包括以下步骤: 1. 设计审批实体类:定义一个ApprovalFlow类,包含审批流程的属性,如流程编号、流程名称、创建人、创建时间等。可以使用注解指定数据库表名和字段名,便于持久化操作。 2. 设计审批节点实体类:定义一个ApprovalNode类,包含节点的属性,如节点编号、节点名称、审批人、审批结果等。节点需要与审批进行关联,可以使用外键关联审批的编号。 3. 设计审批服务接口:创建一个ApprovalFlowService接口,定义相关的方法,如创建审批、添加审批节点、获取审批流程信息等。可以使用注解声明该接口为Spring的服务组件。 4. 实现审批服务接口:创建一个ApprovalFlowServiceImpl类,实现ApprovalFlowService接口。在具体的方法中,通过调用相关的持久化操作,实现审批流程和节点的增删改查等功能。 5. 创建审批Demo:在主类中,实例化ApprovalFlowServiceImpl对象,并调用相关方法,模拟审批流程的操作,如创建审批流程、添加节点、获取审批流程信息等。 6. 运行Demo:将代码编译并运行,观察输出结果,验证审批Demo的功能是否符合预期。可以通过用户输入、数据库查询等方式动态操作审批流程。 通过以上步骤,就可以生成一个简单的Java审批Demo。可以根据实际需求进行扩展,如增加权限控制、审批通知等功能,提升Demo的实用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值