The diagnosis rule engine is ment to be a relatively simple (e.g. compared to DROOLs) and generic processing engine that coordinates the execution of diagnosis rules.
The rule engine shell take invocation sequences as input. As output, the rule engine shell provide a set of detected performance problems for each individual invocation sequence.
Requirements:
The rule engine shell be designed in a generic way, so that rules can consume and process any type of objects.
Rules are executed within encapsulated sessions, whereby each session corresponds to the analysis of one invocation sequence
The Rule Engine allows rules to be loosely coupled → no direct dependency between individual rules
Each rule provides incremental information/insights on the processed data
The Rule Engine allows rules to access the information/insights provided by rules that where executed before (in the logical execution order)
The definitions of individual rules explicitly specify which type of information they depend on
Let's agree on starting this next week, small meeting then I do the first iteration.
Some small issues with project setup are left.. We are basically done here, let's fix these and push this..
: Build on Jenkins is failing, you have one Checkstyle error, I wrote about this in Reviewable but you missed it somehow.. I wait for update..
: Solved!
SUCCESS: Integrated in
inspectIT - Integration #265
INSPECTIT-2058: Rule Engine for diagnosis feature (ivan.senic: 18e3caf5e883a31ef857904b83a7e6886a4b5829)
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/rule/factory/RulesTest.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/rule/store/DefaultRuleOutputStorageTest.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/SessionVariableInjection.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/FieldInjection.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/exception/SessionException.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/ConditionMethod.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/ISessionResultCollector.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleG.java
(add) inspectit.server.diagnosis/inspectit.server.diagnosis.gradle
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/SessionFactory.java
(edit) dependencies.gradle
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/RuleOutput.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/session/SessionContextTest.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/DiagnosisEngine.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/util/ReflectionUtils.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/RuleInput.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/store/DefaultRuleOutputStorage.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/Session.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/DefaultSessionResult.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/ExecutionContext.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/exception/RuleDefinitionException.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/annotation/Condition.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/DefaultSessionResultCollector.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/tag/TagState.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/tag/TagsTest.java
(add) inspectit.server.diagnosis/.gitignore
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/annotation/SessionVariable.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/DiagnosisEngineTest.java
(add) inspectit.server.diagnosis/.project
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleF.java
(add) inspectit.server.diagnosis/.settings/org.eclipse.buildship.core.prefs
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/AnnotatedInterface.java
(edit) settings.gradle
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/TestClass.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/SessionPool.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/session/SessionTest.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleDummy.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/ConditionFailure.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleB.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/store/IRuleOutputStorage.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/ISessionCallback.java
(add) inspectit.server.diagnosis/.eclipse-pmd
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/session/SessionContext.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleD.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/factory/Rules.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/tag/Tag.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/IDiagnosisEngine.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleC.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/ActionMethod.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/TestClass2.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/annotation/Rule.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/DiagnosisEngineException.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/TestClass3.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/RuleDefinition.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/rule/ActionMethodTest.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/DiagnosisEngineConfiguration.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/session/SessionFactoryTest.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/tag/Tags.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/rule/TagInjectionTest.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleE.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleA.java
(add) inspectit.server.diagnosis/.settings/org.eclipse.jdt.core.prefs
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/rule/RuleDefinitionTest.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/rule/ConditionMethodTest.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/NoDefaultConstructorClass.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/ReflectionUtilsTest.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/TagInjection.java
(add) inspectit.server.diagnosis/.classpath
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/rule/SessionVariableInjectionTest.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/PrivateConstructorClass.java
(add) inspectit.server.diagnosis/.checkstyle
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/util/AnnotatedSuperClass.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/session/DefaultSessionResultCollectorTest.java
(add) inspectit.server.diagnosis/src/test/java/rocks/inspectit/server/diagnosis/engine/testrules/RuleWithSessionVariable.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/annotation/Action.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/exception/RuleExecutionException.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/FireCondition.java
(add) inspectit.server.diagnosis/src/main/java/rocks/inspectit/server/diagnosis/engine/rule/annotation/TagValue.java