2016-12-02 7 views

ответ

1

Да, вы можете создать файл правила на основе пользователя.

Я также сделал несколько R & D в этом генерации правил, основанных на пользователе, в моем сценарии я создал файл правил так же, как device_id, всякий раз, когда я получаю пакет с этим пользователем, я загружаю файл правила с этим именем в болте.

Болт:

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
       try { 
        kbuilder.add(ResourceFactory.newInputStreamResource(new FileInputStream(new File("C:/IotHub/conf/"+deviceID))), ResourceType.DRL); 
       } catch (FileNotFoundException e) { 
       } 
       KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); 
       kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); 
       // 
       StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); 

       ksession.execute(bean); 

В моем сценарии DeviceId это имя правила файла этого устройства

боб - это ваш Java Bean

+0

да я получил идею, но мой вопрос не нет device id.where Мне нужно вызвать файл правил в Storm в spout, болт или топологию? –

+0

Не имеется носик, есть два способа: 1. вы можете загрузить drl в конструкторе болтов 2. Вы можете загрузить в класс болтов, как я упомянул выше. – Mahabaleshwar

+0

благодарит много сэр за ответ, теперь у меня есть идея, я сделаю это. –