Rule Engine for Problem Diagnosis

Description

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

Environment

None

Activity

Show:
Ivan Senic
July 6, 2016, 1:17 PM

Let's agree on starting this next week, small meeting then I do the first iteration.

Ivan Senic
March 13, 2017, 1:10 PM

Some small issues with project setup are left.. We are basically done here, let's fix these and push this..

Ivan Senic
March 21, 2017, 4:24 PM

: 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..

Alexander Wert
March 22, 2017, 12:56 PM

: Solved!

Technical User
March 27, 2017, 9:24 AM

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

Fixed

Assignee

Alexander Wert

Reporter

Alexander Wert

Labels

Integrator

Ivan Senic

Epic Link

Components

Sprint

None

Fix versions

Priority

Medium