class NotifierTaskExecutor extends FunctionTaskExecutor {
        private RuleNotifierProperties properties;

        public NotifierTaskExecutor(ExecutionContext context) {
            super("消息通知", context);
            this.properties = createProperties();
        }

        @Override
        protected Publisher<RuleData> apply(RuleData input) {
            return notifierManager
                .getNotifier(properties.getNotifyType(), properties.getNotifierId())
                .switchIfEmpty(Mono.fromRunnable(() -> {
                    context.getLogger().warn("通知配置[{}-{}]不存在", properties.getNotifyType(), properties.getNotifierId());
                }))
                .flatMap(notifier -> notifier.send(properties.getTemplateId(), Values.of(properties.createVariables(input))))
                .doOnError(err -> {
                    context.getLogger().error("发送[{}]通知[{}-{}]失败",
                                              properties.getNotifyType().getName(),
                                              properties.getNotifierId(),
                                              properties.getTemplateId(), err);
                })
                .doOnSuccess(ignore -> {
                    context.getLogger().info("发送[{}]通知[{}-{}]完成",
                                             properties.getNotifyType().getName(),
                                             properties.getNotifierId(),
                                             properties.getTemplateId());
                }).thenReturn(context.newRuleData(input));
        }

        @Override
        public void reload() {
            this.properties = createProperties();
        }

        RuleNotifierProperties createProperties() {<FILL_FUNCTION_BODY>}
    }

            RuleNotifierProperties properties = FastBeanCopier.copy(context
                                                                        .getJob()
                                                                        .getConfiguration(), RuleNotifierProperties.class);
            properties.initVariable();
            properties.validate();
            return properties;
        
<no_super_class>