class TimerTriggerProvider implements SceneTriggerProvider<TimerTrigger> {
    public static final String PROVIDER = "timer";

    @Override
    public String getProvider() {
        return PROVIDER;
    }

    @Override
    public String getName() {
        return "手动触发";
    }

    @Override
    public TimerTrigger newConfig() {
        return new TimerTrigger();
    }

    @Override
    public SqlRequest createSql(TimerTrigger config, List<Term> terms, boolean hasWhere) {
        return EmptySqlRequest.INSTANCE;
    }

    @Override
    public SqlFragments createFilter(TimerTrigger config, List<Term> terms) {
        return EmptySqlFragments.INSTANCE;
    }

    @Override
    public List<Variable> createDefaultVariable(TimerTrigger config) {<FILL_FUNCTION_BODY>}

    @Override
    public Flux<TermColumn> parseTermColumns(TimerTrigger config) {
        return Flux.empty();
    }

    @Override
    public void applyRuleNode(TimerTrigger config, RuleModel model, RuleNodeModel sceneNode) {
        RuleNodeModel timerNode = new RuleNodeModel();
        timerNode.setId("scene:timer");
        timerNode.setName("定时触发场景");
        timerNode.setExecutor("timer");
        //使用最小负载节点来执行定时
        timerNode.setConfiguration(FastBeanCopier.copy(config, new HashMap<>()));
        model.getNodes().add(timerNode);
        //定时->场景
        model.link(timerNode, sceneNode);
    }
}

        return Collections.singletonList(
            Variable
                .of("_now",
                    LocaleUtils.resolveMessage(
                        "message.scene_term_column_now",
                        "服务器时间"))
                .withType(DateTimeType.ID)
                .withTermType(TermTypes.lookup(DateTimeType.GLOBAL))
                .withColumn("_now")
        );
    
<no_super_class>