aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-api/pom.xml
blob: d8a440c907160db6c47a9d72dfc2b36388143fa4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<!--
  ~ Copyright © 2016-2018 European Support Limited
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <name>openecomp-sdc-translator-api</name>
    <artifactId>openecomp-sdc-translator-api</artifactId>


    <parent>
        <groupId>org.openecomp.sdc</groupId>
        <artifactId>openecomp-sdc-translator-lib</artifactId>
        <version>1.9.5-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.openecomp.sdc.core</groupId>
            <artifactId>openecomp-facade-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc</groupId>
            <artifactId>openecomp-sdc-validation-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc</groupId>
            <artifactId>openecomp-sdc-validation-core</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc.core</groupId>
            <artifactId>openecomp-heat-lib</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc.core</groupId>
            <artifactId>openecomp-tosca-lib</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.onap.sdc.common</groupId>
            <artifactId>onap-configuration-management-core</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.sdc.common</groupId>
            <artifactId>onap-configuration-management-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>
class="nn">org.onap.holmes.engine.request.DeployRuleRequest; import org.onap.holmes.common.api.entity.CorrelationRule; import org.onap.holmes.common.exception.CorrelationException; import org.onap.holmes.common.utils.ExceptionUtil; import org.onap.holmes.engine.wrapper.RuleMgtWrapper; @Slf4j @Service public class DroolsEngine { private final static int ENABLE = 1; private final Set<String> packageNames = new HashSet<String>(); @Inject private RuleMgtWrapper ruleMgtWrapper; private KnowledgeBase kbase; private KnowledgeBaseConfiguration kconf; private StatefulKnowledgeSession ksession; @PostConstruct private void init() { try { // start engine start(); } catch (Exception e) { log.error("Failed to start the service: " + e.getMessage(), e); throw ExceptionUtil.buildExceptionResponse("Failed to start the drools engine!"); } } private void start() throws CorrelationException { log.info("Drools Engine Initialize Beginning..."); initEngineParameter(); initDeployRule(); log.info("Business Rule Engine Initialize Successfully."); } public void stop() { this.ksession.dispose(); } private void initEngineParameter() { this.kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); this.kconf.setOption(EventProcessingOption.STREAM); this.kconf.setProperty("drools.assertBehaviour", "equality"); this.kbase = KnowledgeBaseFactory.newKnowledgeBase("D-ENGINE", this.kconf); this.ksession = kbase.newStatefulKnowledgeSession(); } private void initDeployRule() throws CorrelationException { List<CorrelationRule> rules = ruleMgtWrapper.queryRuleByEnable(ENABLE); if (rules.isEmpty()) { return; } for (CorrelationRule rule : rules) { if (rule.getContent() != null) { deployRuleFromDB(rule.getContent()); DmaapService.loopControlNames.put(rule.getPackageName(), rule.getClosedControlLoopName()); } } } private void deployRuleFromDB(String ruleContent) throws CorrelationException { StringReader reader = new StringReader(ruleContent); Resource res = ResourceFactory.newReaderResource(reader); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(res, ResourceType.DRL); try { kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); } catch (Exception e) { throw new CorrelationException(e.getMessage(), e); } ksession.fireAllRules(); } public synchronized String deployRule(DeployRuleRequest rule, Locale locale) throws CorrelationException { StringReader reader = new StringReader(rule.getContent()); Resource res = ResourceFactory.newReaderResource(reader); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(res, ResourceType.DRL); judgeRuleContent(locale, kbuilder, true); String packageName = kbuilder.getKnowledgePackages().iterator().next().getName(); try { packageNames.add(packageName); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); } catch (Exception e) { throw new CorrelationException("Failed to deploy the rule.", e); } ksession.fireAllRules(); return packageName; } public synchronized void undeployRule(String packageName, Locale locale) throws CorrelationException { KnowledgePackage pkg = kbase.getKnowledgePackage(packageName); if (null == pkg) { throw new CorrelationException("The rule " + packageName + " does not exist!"); } try { kbase.removeKnowledgePackage(pkg.getName()); } catch (Exception e) { throw new CorrelationException("Failed to delete the rule: " + packageName, e); } packageNames.remove(pkg.getName()); } public void compileRule(String content, Locale locale) throws CorrelationException { StringReader reader = new StringReader(content); Resource res = ResourceFactory.newReaderResource(reader); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(res, ResourceType.DRL); judgeRuleContent(locale, kbuilder, false); } private void judgeRuleContent(Locale locale, KnowledgeBuilder kbuilder, boolean judgePackageName) throws CorrelationException { if (kbuilder.hasErrors()) { String errorMsg = "There are errors in the rule: " + kbuilder.getErrors().toString(); log.error(errorMsg); throw new CorrelationException(errorMsg); } String packageName = kbuilder.getKnowledgePackages().iterator().next().getName(); if (packageNames.contains(packageName) && judgePackageName) { throw new CorrelationException("The rule " + packageName + " already exists in the drools engine."); } } public void putRaisedIntoStream(VesAlarm raiseAlarm) { FactHandle factHandle = this.ksession.getFactHandle(raiseAlarm); if (factHandle != null) { Object obj = this.ksession.getObject(factHandle); if (obj != null && obj instanceof VesAlarm) { raiseAlarm.setRootFlag(((VesAlarm) obj).getRootFlag()); } this.ksession.retract(factHandle); } this.ksession.insert(raiseAlarm); this.ksession.fireAllRules(); } }