
cn.schoolwow.workflow.QuickWorkFlowBuilder Maven / Gradle / Ivy
package cn.schoolwow.workflow;
import cn.schoolwow.quickdao.QuickDAO;
import cn.schoolwow.quickdao.domain.DAO;
import cn.schoolwow.quickflow.QuickFlow;
import cn.schoolwow.quickflow.QuickFlowBuilder;
import cn.schoolwow.quickflow.dto.FlowContextDataRange;
import cn.schoolwow.workflow.domain.instance.WorkFlowInstanceListener;
import cn.schoolwow.workflow.domain.task.WorkFlowTaskListener;
import cn.schoolwow.workflow.module.common.domain.QuickWorkFlowConfig;
import cn.schoolwow.workflow.module.common.domain.QuickWorkFlowOption;
import cn.schoolwow.workflow.module.common.kit.WorkFlowInvocationHandler;
import cn.schoolwow.workflow.module.initial.flow.InitialDatabaseFlow;
import cn.schoolwow.workflow.module.initial.handler.WorkFlowTryCatchFinallyHandler;
import javax.sql.DataSource;
import java.lang.reflect.Proxy;
public class QuickWorkFlowBuilder {
private DAO dao;
private QuickWorkFlowOption quickWorkFlowOption = new QuickWorkFlowOption();
public static QuickWorkFlowBuilder newInstance() {
return new QuickWorkFlowBuilder();
}
public QuickWorkFlowBuilder dataSource(DataSource dataSource){
QuickDAO quickDAO = QuickDAO.newInstance()
.dataSource(dataSource)
.packageName("cn.schoolwow.workflow.entity","workflow");
QuickFlowBuilder.startFlow(new InitialDatabaseFlow())
.putInstanceData(quickDAO, QuickDAO.class)
.execute();
DAO dao = quickDAO.build();
this.dao = dao;
return this;
}
public QuickWorkFlowBuilder workFlowInstanceListener(WorkFlowInstanceListener workFlowInstanceListener){
quickWorkFlowOption.workFlowInstanceListener = workFlowInstanceListener;
return this;
}
public QuickWorkFlowBuilder workFlowTaskListener(WorkFlowTaskListener workFlowTaskListener){
quickWorkFlowOption.workFlowTaskListener = workFlowTaskListener;
return this;
}
public QuickWorkFlow build(){
if(null==dao){
throw new IllegalArgumentException("请配置数据库连接池!");
}
QuickFlow workflow = QuickFlowBuilder.newInstance()
.putContextTemporaryInstanceData(dao, DAO.class)
.putContextTemporaryInstanceData(quickWorkFlowOption)
.tryCatchFinallyHandler(new WorkFlowTryCatchFinallyHandler());
QuickWorkFlowConfig quickWorkFlowConfig = new QuickWorkFlowConfig();
quickWorkFlowConfig.workflow = workflow;
WorkFlowInvocationHandler workFlowInvocationHandler = new WorkFlowInvocationHandler(quickWorkFlowConfig);
QuickWorkFlow quickWorkFlowProxy = (QuickWorkFlow) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class>[]{QuickWorkFlow.class}, workFlowInvocationHandler);
return quickWorkFlowProxy;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy