Skip to content

Commit dc79d52

Browse files
committed
solución de ejercicio y debugg
1 parent 4a13271 commit dc79d52

File tree

8 files changed

+257
-73
lines changed

8 files changed

+257
-73
lines changed

pom.xml

Lines changed: 76 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,87 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3-
<modelVersion>4.0.0</modelVersion>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
46

5-
<groupId>org.demo</groupId>
6-
<artifactId>drools-tutorial</artifactId>
7-
<version>1.0-SNAPSHOT</version>
8-
<packaging>kjar</packaging>
7+
<groupId>org.demo</groupId>
8+
<artifactId>drools-tutorial</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
<packaging>kjar</packaging>
911

10-
<name>drools-tutorial</name>
11-
<url>http://drools.org</url>
12+
<name>drools-tutorial</name>
13+
<url>http://drools.org</url>
1214

13-
<properties>
14-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15-
<drools-version>6.5.0.Final</drools-version>
16-
<slf4j-version>1.7.25</slf4j-version>
17-
<junit-version>4.12</junit-version>
18-
</properties>
15+
<properties>
16+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17+
<drools-version>6.5.0.Final</drools-version>
18+
<slf4j-version>1.7.25</slf4j-version>
19+
<junit-version>4.12</junit-version>
20+
</properties>
1921

20-
<dependencyManagement>
21-
<dependencies>
22-
<dependency>
23-
<groupId>org.drools</groupId>
24-
<artifactId>drools-bom</artifactId>
25-
<type>pom</type>
26-
<version>${drools-version}</version>
27-
<scope>import</scope>
28-
</dependency>
29-
</dependencies>
30-
</dependencyManagement>
22+
<dependencyManagement>
23+
<dependencies>
24+
<dependency>
25+
<groupId>org.drools</groupId>
26+
<artifactId>drools-bom</artifactId>
27+
<type>pom</type>
28+
<version>${drools-version}</version>
29+
<scope>import</scope>
30+
</dependency>
31+
</dependencies>
32+
</dependencyManagement>
3133

32-
<dependencies>
34+
<dependencies>
3335

34-
<dependency>
35-
<groupId>org.drools</groupId>
36-
<artifactId>drools-compiler</artifactId>
37-
</dependency>
36+
<dependency>
37+
<groupId>org.drools</groupId>
38+
<artifactId>drools-compiler</artifactId>
39+
</dependency>
3840

39-
<dependency>
40-
<groupId>junit</groupId>
41-
<artifactId>junit</artifactId>
42-
<version>${junit-version}</version>
43-
<scope>test</scope>
44-
</dependency>
45-
<dependency>
46-
<groupId>org.slf4j</groupId>
47-
<artifactId>slf4j-log4j12</artifactId>
48-
<version>${slf4j-version}</version>
49-
<scope>test</scope>
50-
</dependency>
51-
</dependencies>
41+
<dependency>
42+
<groupId>junit</groupId>
43+
<artifactId>junit</artifactId>
44+
<version>${junit-version}</version>
45+
<scope>test</scope>
46+
</dependency>
47+
<dependency>
48+
<groupId>org.slf4j</groupId>
49+
<artifactId>slf4j-log4j12</artifactId>
50+
<version>${slf4j-version}</version>
51+
<scope>test</scope>
52+
</dependency>
53+
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
54+
<dependency>
55+
<groupId>org.slf4j</groupId>
56+
<artifactId>slf4j-simple</artifactId>
57+
<version>1.7.25</version>
58+
</dependency>
59+
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
60+
<dependency>
61+
<groupId>ch.qos.logback</groupId>
62+
<artifactId>logback-classic</artifactId>
63+
<version>1.2.3</version>
64+
<scope>test</scope>
65+
</dependency>
66+
</dependencies>
5267

53-
<build>
54-
<plugins>
55-
<plugin>
56-
<artifactId>maven-compiler-plugin</artifactId>
57-
<version>3.1</version>
58-
<configuration>
59-
<source>1.8</source>
60-
<target>1.8</target>
61-
</configuration>
62-
</plugin>
63-
<plugin>
64-
<groupId>org.kie</groupId>
65-
<artifactId>kie-maven-plugin</artifactId>
66-
<version>${drools-version}</version>
67-
<extensions>true</extensions>
68-
</plugin>
69-
</plugins>
68+
<build>
69+
<plugins>
70+
<plugin>
71+
<artifactId>maven-compiler-plugin</artifactId>
72+
<version>3.1</version>
73+
<configuration>
74+
<source>1.8</source>
75+
<target>1.8</target>
76+
</configuration>
77+
</plugin>
78+
<plugin>
79+
<groupId>org.kie</groupId>
80+
<artifactId>kie-maven-plugin</artifactId>
81+
<version>${drools-version}</version>
82+
<extensions>true</extensions>
83+
</plugin>
84+
</plugins>
7085

71-
</build>
86+
</build>
7287
</project>

src/main/java/org/drools/tutorial/main/PoinstDemo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import java.util.List;
66

77
import org.drools.tutorial.model.Item;
8+
import org.drools.tutorial.util.AgendaEventListenerGTM;
89
import org.kie.api.KieServices;
10+
import org.kie.api.event.rule.DebugAgendaEventListener;
911
import org.kie.api.runtime.KieContainer;
1012
import org.kie.api.runtime.KieSession;
1113

@@ -34,7 +36,10 @@ public static final void main(String[] args) {
3436
kSession.insert(item);
3537
}
3638
final List<Long> points = new ArrayList<>();
39+
//kSession.addEventListener( new AgendaEventListenerGTM() );
40+
//kSession.addEventListener( new DebugAgendaEventListener() );
3741
kSession.setGlobal("points", points);
42+
kSession.getAgenda().getAgendaGroup("init-sum").setFocus();
3843
kSession.fireAllRules();
3944
kSession.dispose();
4045
System.out.println("Total de puntos: " + points.stream().mapToLong(p -> p).sum());

src/main/java/org/drools/tutorial/model/Order.java renamed to src/main/java/org/drools/tutorial/model/OrderBackup.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
* @author a2g
1010
*
1111
*/
12-
public class Order {
12+
public class OrderBackup {
1313

14-
public Order(BigDecimal value) {
14+
public OrderBackup(BigDecimal value) {
1515
super();
1616
this.value = value;
1717
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package org.drools.tutorial.util;
2+
3+
import java.util.logging.Logger;
4+
5+
import org.kie.api.event.rule.AfterMatchFiredEvent;
6+
import org.kie.api.event.rule.AgendaEventListener;
7+
import org.kie.api.event.rule.AgendaGroupPoppedEvent;
8+
import org.kie.api.event.rule.AgendaGroupPushedEvent;
9+
import org.kie.api.event.rule.BeforeMatchFiredEvent;
10+
import org.kie.api.event.rule.MatchCancelledEvent;
11+
import org.kie.api.event.rule.MatchCreatedEvent;
12+
import org.kie.api.event.rule.RuleFlowGroupActivatedEvent;
13+
import org.kie.api.event.rule.RuleFlowGroupDeactivatedEvent;
14+
15+
/**
16+
* @author gaalvarez
17+
*/
18+
public class AgendaEventListenerGTM implements AgendaEventListener {
19+
20+
private static Logger logger = Logger.getLogger(AgendaEventListenerGTM.class.getName());
21+
private static final String RULE_LABEL = "La regla: ";
22+
23+
@Override
24+
public void matchCreated(final MatchCreatedEvent event) {
25+
logger.info(RULE_LABEL + event.getMatch().getRule().getName() + " se ha agregado a la agenda");
26+
}
27+
28+
@Override
29+
public void matchCancelled(final MatchCancelledEvent event) {
30+
logger.info(RULE_LABEL + event.getMatch().getRule().getName() + " se quita de la agenda");
31+
}
32+
33+
@Override
34+
public void beforeMatchFired(final BeforeMatchFiredEvent event) {
35+
logger.info(RULE_LABEL + event.getMatch().getRule().getName() + " será lanzada");
36+
}
37+
38+
@Override
39+
public void afterMatchFired(final AfterMatchFiredEvent event) {
40+
logger.info(RULE_LABEL + event.getMatch().getRule().getName() + " ha sido lanzada");
41+
}
42+
43+
@Override
44+
public void agendaGroupPopped(final AgendaGroupPoppedEvent event) {
45+
// procese aquí el evento de necesitarlo
46+
}
47+
48+
@Override
49+
public void agendaGroupPushed(final AgendaGroupPushedEvent event) {
50+
// procese aquí el evento de necesitarlo
51+
}
52+
53+
@Override
54+
public void beforeRuleFlowGroupActivated(final RuleFlowGroupActivatedEvent event) {
55+
// procese aquí el evento de necesitarlo
56+
}
57+
58+
@Override
59+
public void afterRuleFlowGroupActivated(final RuleFlowGroupActivatedEvent event) {
60+
// procese aquí el evento de necesitarlo
61+
}
62+
63+
@Override
64+
public void beforeRuleFlowGroupDeactivated(final RuleFlowGroupDeactivatedEvent event) {
65+
// procese aquí el evento de necesitarlo
66+
}
67+
68+
@Override
69+
public void afterRuleFlowGroupDeactivated(final RuleFlowGroupDeactivatedEvent event) {
70+
// procese aquí el evento de necesitarlo
71+
}
72+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<log4j:configuration
2+
xmlns:log4j="http://jakarta.apache.org/log4j/">
3+
4+
5+
6+
<category name="org.*">
7+
8+
<priority value="debug" />
9+
10+
</category>
11+
12+
13+
14+
15+
</log4j:configuration>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<configuration>
2+
<logger name="org.drools" level="debug"/>
3+
<configuration>

src/main/resources/org/drools/tutorial/rules/calculatePoints.drl

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,41 @@ package org.drools.tutorial.rules
33

44
//list any import classes here.
55
import org.drools.tutorial.model.Item;
6-
import org.drools.tutorial.model.Order;
6+
//import org.drools.tutorial.model.Order;
77
import java.math.BigDecimal;
88

99
//declare any global variables here
1010
global java.util.List points;
1111

12-
declare Subtotal
13-
value : BigDecimal
14-
end
15-
1612
declare Order
17-
value : BigDecimal
13+
value : BigDecimal @key
14+
tieneImpuesto: boolean
1815
end
1916

2017
rule "sum order"
2118
//include attributes such as "salience" here...
19+
agenda-group "init-sum"
2220
when
21+
not Order()
2322
$total: Double() from
2423
accumulate(Item($price: price, $amout: amount ), sum($price.multiply(new BigDecimal($amout))))
2524
then
2625
System.out.println("precio total de la compra: " + $total);
2726
insert(new Order(new BigDecimal($total)));
2827
end
2928

30-
29+
rule "calcular impuesto"
30+
//include attributes such as "salience" here...
31+
agenda-group "init-sum"
32+
no-loop true
33+
when
34+
$order: Order()
35+
then
36+
$order.setValue($order.getValue().multiply(new BigDecimal("1.19")));
37+
System.out.println("precio con impuesto: " + $order.getValue());
38+
$order.setTieneImpuesto(true);
39+
update($order);
40+
end
3141

3242
rule "points by amount"
3343
//include attributes such as "salience" here...
@@ -40,10 +50,10 @@ end
4050

4151
rule "points by price order"
4252
when
43-
Order( $div: value.divide(new BigDecimal("10000")) )
53+
Order( $value: value, tieneImpuesto == true)
4454
then
45-
System.out.println("puntos por precio: " + $div.longValue());
46-
points.add($div.longValue());
55+
System.out.println("puntos por precio: " + $value.divide(new BigDecimal("10000")).longValue());
56+
points.add($value.divide(new BigDecimal("10000")).longValue());
4757
end
4858

4959
rule "points by price item"

0 commit comments

Comments
 (0)