|
|
@@ -40,83 +40,83 @@ public class RuleSceneModelParser implements RuleModelParserStrategy {
|
|
|
|
|
|
@Override
|
|
|
public RuleModel parse(String modelDefineString) {
|
|
|
- DeviceAlarmRule rule= JSONUtil.toBean(modelDefineString, DeviceAlarmRule.class);
|
|
|
+ RuleSceneEntity rule= JSONUtil.toBean(modelDefineString, RuleSceneEntity.class);
|
|
|
RuleModel model = new RuleModel();
|
|
|
model.setId(format+":"+rule.getId());
|
|
|
model.setName(rule.getName());
|
|
|
- List<DeviceAlarmRule.Trigger> triggers = rule.getTriggers();
|
|
|
- //执行动作
|
|
|
- List<Action> actions = rule.getActions();
|
|
|
- //处理定时触发
|
|
|
- {
|
|
|
- List<DeviceAlarmRule.Trigger> timerTriggers = triggers.stream()
|
|
|
- .filter(trigger -> trigger.getTrigger() == DeviceAlarmRule.TriggerType.timer)
|
|
|
- .collect(Collectors.toList());
|
|
|
- int index = 0;
|
|
|
- for (DeviceAlarmRule.Trigger trigger : timerTriggers) {
|
|
|
- DeviceMessage msg = trigger.getType().createMessage(trigger).orElse(null);
|
|
|
- if (msg == null) {
|
|
|
- throw new UnsupportedOperationException("不支持定时条件类型:" + trigger.getType());
|
|
|
- }
|
|
|
- RuleNodeModel timer = new RuleNodeModel();
|
|
|
- timer.setId("timer:" + (++index));
|
|
|
- timer.setName("定时发送设备消息");
|
|
|
- timer.setExecutor("timer");
|
|
|
- timer.setConfiguration(Collections.singletonMap("cron", trigger.getCron()));
|
|
|
-
|
|
|
- DeviceMessageSendTaskExecutorProvider.Config senderConfig = new DeviceMessageSendTaskExecutorProvider.Config();
|
|
|
- senderConfig.setAsync(true);
|
|
|
- senderConfig.setDeviceId(trigger.getDeviceId());
|
|
|
- senderConfig.setProductId(trigger.getProductId());
|
|
|
- senderConfig.setMessage(msg.toJson());
|
|
|
-
|
|
|
- RuleNodeModel messageSender = new RuleNodeModel();
|
|
|
- messageSender.setId("message-sender:" + (++index));
|
|
|
- messageSender.setName("定时发送设备消息");
|
|
|
- messageSender.setExecutor("device-message-sender");
|
|
|
- messageSender.setConfiguration(FastBeanCopier.copy(senderConfig, new HashMap<>()));
|
|
|
-
|
|
|
- RuleLink link = new RuleLink();
|
|
|
- link.setId(timer.getId().concat(":").concat(messageSender.getId()));
|
|
|
- link.setName("执行动作:" + index);
|
|
|
- link.setSource(timer);
|
|
|
- link.setTarget(messageSender);
|
|
|
- timer.getOutputs().add(link);
|
|
|
- messageSender.getInputs().add(link);
|
|
|
- model.getNodes().add(timer);
|
|
|
- model.getNodes().add(messageSender);
|
|
|
- }
|
|
|
- }
|
|
|
- RuleNodeModel conditionNode = new RuleNodeModel();
|
|
|
- conditionNode.setId("conditions");
|
|
|
- conditionNode.setName("预警条件");
|
|
|
- conditionNode.setExecutor("device-message-sender");
|
|
|
- conditionNode.addConfiguration("rule", rule.getTriggers());
|
|
|
-// conditionNode.setConfiguration(Collections.singletonMap("rule", rule.getTriggers()));
|
|
|
- model.getNodes().add(conditionNode);
|
|
|
- if (CollectionUtils.isNotEmpty(actions)) {
|
|
|
- int index = 0;
|
|
|
- for (Action operation : actions) {
|
|
|
- if (!StringUtils.hasText(operation.getExecutor())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- index++;
|
|
|
- RuleNodeModel action = new RuleNodeModel();
|
|
|
- action.setId("device-message-sender:" + index);
|
|
|
- action.setName("执行动作:" + index);
|
|
|
- action.setExecutor(operation.getExecutor());
|
|
|
- action.setConfiguration(operation.getConfiguration());
|
|
|
-
|
|
|
- RuleLink link = new RuleLink();
|
|
|
- link.setId(action.getId().concat(":").concat(conditionNode.getId()));
|
|
|
- link.setName("执行动作:" + index);
|
|
|
- link.setSource(conditionNode);
|
|
|
- link.setTarget(action);
|
|
|
- model.getNodes().add(action);
|
|
|
- action.getInputs().add(link);
|
|
|
- conditionNode.getOutputs().add(link);
|
|
|
- }
|
|
|
- }
|
|
|
+ List<RuleSceneEntity.Trigger> triggers = rule.getTriggers();
|
|
|
+// //执行动作
|
|
|
+// List<Action> actions = rule.getActions();
|
|
|
+// //处理定时触发
|
|
|
+// {
|
|
|
+// List<DeviceAlarmRule.Trigger> timerTriggers = triggers.stream()
|
|
|
+// .filter(trigger -> trigger.getTrigger() == DeviceAlarmRule.TriggerType.timer)
|
|
|
+// .collect(Collectors.toList());
|
|
|
+// int index = 0;
|
|
|
+// for (DeviceAlarmRule.Trigger trigger : timerTriggers) {
|
|
|
+// DeviceMessage msg = trigger.getType().createMessage(trigger).orElse(null);
|
|
|
+// if (msg == null) {
|
|
|
+// throw new UnsupportedOperationException("不支持定时条件类型:" + trigger.getType());
|
|
|
+// }
|
|
|
+// RuleNodeModel timer = new RuleNodeModel();
|
|
|
+// timer.setId("timer:" + (++index));
|
|
|
+// timer.setName("定时发送设备消息");
|
|
|
+// timer.setExecutor("timer");
|
|
|
+// timer.setConfiguration(Collections.singletonMap("cron", trigger.getCron()));
|
|
|
+//
|
|
|
+// DeviceMessageSendTaskExecutorProvider.Config senderConfig = new DeviceMessageSendTaskExecutorProvider.Config();
|
|
|
+// senderConfig.setAsync(true);
|
|
|
+// senderConfig.setDeviceId(trigger.getDeviceId());
|
|
|
+// senderConfig.setProductId(trigger.getProductId());
|
|
|
+// senderConfig.setMessage(msg.toJson());
|
|
|
+//
|
|
|
+// RuleNodeModel messageSender = new RuleNodeModel();
|
|
|
+// messageSender.setId("message-sender:" + (++index));
|
|
|
+// messageSender.setName("定时发送设备消息");
|
|
|
+// messageSender.setExecutor("device-message-sender");
|
|
|
+// messageSender.setConfiguration(FastBeanCopier.copy(senderConfig, new HashMap<>()));
|
|
|
+//
|
|
|
+// RuleLink link = new RuleLink();
|
|
|
+// link.setId(timer.getId().concat(":").concat(messageSender.getId()));
|
|
|
+// link.setName("执行动作:" + index);
|
|
|
+// link.setSource(timer);
|
|
|
+// link.setTarget(messageSender);
|
|
|
+// timer.getOutputs().add(link);
|
|
|
+// messageSender.getInputs().add(link);
|
|
|
+// model.getNodes().add(timer);
|
|
|
+// model.getNodes().add(messageSender);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// RuleNodeModel conditionNode = new RuleNodeModel();
|
|
|
+// conditionNode.setId("conditions");
|
|
|
+// conditionNode.setName("预警条件");
|
|
|
+// conditionNode.setExecutor("device-message-sender");
|
|
|
+// conditionNode.addConfiguration("rule", rule.getTriggers());
|
|
|
+//// conditionNode.setConfiguration(Collections.singletonMap("rule", rule.getTriggers()));
|
|
|
+// model.getNodes().add(conditionNode);
|
|
|
+// if (CollectionUtils.isNotEmpty(actions)) {
|
|
|
+// int index = 0;
|
|
|
+// for (Action operation : actions) {
|
|
|
+// if (!StringUtils.hasText(operation.getExecutor())) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// index++;
|
|
|
+// RuleNodeModel action = new RuleNodeModel();
|
|
|
+// action.setId("device-message-sender:" + index);
|
|
|
+// action.setName("执行动作:" + index);
|
|
|
+// action.setExecutor(operation.getExecutor());
|
|
|
+// action.setConfiguration(operation.getConfiguration());
|
|
|
+//
|
|
|
+// RuleLink link = new RuleLink();
|
|
|
+// link.setId(action.getId().concat(":").concat(conditionNode.getId()));
|
|
|
+// link.setName("执行动作:" + index);
|
|
|
+// link.setSource(conditionNode);
|
|
|
+// link.setTarget(action);
|
|
|
+// model.getNodes().add(action);
|
|
|
+// action.getInputs().add(link);
|
|
|
+// conditionNode.getOutputs().add(link);
|
|
|
+// }
|
|
|
+// }
|
|
|
return model;
|
|
|
}
|
|
|
|