All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.org.atool.fluentmachine.persistence.ContextRepository Maven / Gradle / Ivy

There is a newer version: 0.3.3
Show newest version
package cn.org.atool.fluentmachine.persistence;

import cn.org.atool.fluentmachine.saver.ContextSaver;

import javax.sql.DataSource;
import java.util.Map;

/**
 * 状态机上下文数据库操作实现
 *
 * @author darui.wu
 */
public interface ContextRepository extends ContextSaver {
    String ENV_DEFAULT = "default";
    /**
     * 上下文主表
     */
    String T_FLUENT_MACHINE_CTX = "fluent_machine_ctx";
    /**
     * 上下文操作历史表
     */
    String T_FLUENT_MACHINE_LOG = "fluent_machine_log";


    /**
     * 实例化数据库操作对象,部署环境 default, 表名称默认
     *
     * @param dataSource 状态机存储数据源
     * @return
     */
    static ContextRepository repository(DataSource dataSource) {
        return new ContextRepositoryImpl(ENV_DEFAULT, dataSource, T_FLUENT_MACHINE_CTX, T_FLUENT_MACHINE_LOG);
    }

    /**
     * 实例化数据库操作对象, 表名称默认
     *
     * @param env        部署环境
     * @param dataSource 状态机存储数据源
     * @return
     */
    static ContextRepository repository(String env, DataSource dataSource) {
        return new ContextRepositoryImpl(env, dataSource, T_FLUENT_MACHINE_CTX, T_FLUENT_MACHINE_LOG);
    }

    /**
     * 实例化数据库操作对象, 指定上下文和log的表名称
     *
     * @param env        部署环境
     * @param dataSource 状态机存储数据源
     * @param ctxTable   状态机上下文存储表名称
     * @param logTable   状态机流程log存储标名称
     * @return
     */
    static ContextRepository repository(String env, DataSource dataSource, String ctxTable, String logTable) {
        return new ContextRepositoryImpl(env, dataSource, ctxTable, logTable);
    }

    /**
     * 查询特定状态的上下文列表
     *
     * @param machineId 流程(状态机)标识
     * @param stateId   节点(状态)ID
     * @param id        查询起始id值
     * @param limit     列表大小
     * @return key: context上下文id, value: 对应的trade_no
     */
    Map findTradesByStatus(String machineId, String stateId, long id, int limit);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy