Intersult Expert
This is version . It is not the current version, and thus it cannot be edited.
Back to current version   Restore this version

Intersult Expert ist ein leichtgewichtiges Expertensystem, das mit moderner Java Technologie implementiert ist. Als Hintergrund wird eine JDBC-Datenbank verwendet, die Bedienung des Systems erfolgt durch eine Service-API.

Inhalt#

Merkmale#

Strukturierung#

Die Logik hinter Intersult Expert ist ein an die Programmiersprache Prolog angelehntes OAW-System, das Expertenwissen in Dreiheiten von Object Attribute Value ablegen kann. Dabei handelt es sich um eine nichtlineare Verknüfung von Objekten, mit denen beliebiges Wissen abgespeichert werden kann.

Zugriff#

Insbesondere zwichnet sich Intersult Expert durch die Expert Query Language aus, mit der Anfragen an das gespeicherte Wissen formuliert werden können. Anders als SQL, ist EQL eine Sprache die nur aus einfachen Elementen besteht und den Schwerpunkt auf Objektbeziehungen legt.

Anwendung#

Intersult Expert kann direkt an Oberflächen, wie zum Beispiel Java Server Faces (JSF, JSF2) angebunden werden. Damit können Ein- und Ausgabemasken mit einer Wissensbasis verbunden werden. Logik und Workflows können verständlich abgebildet werden, ohne versteckten prozeduralen Programmcode.

JSF Integration#

Intersult Expert wird mit einem Modul für die Integration in JSF geliefert. Besonders nützlich wird dies im Zusammenspiel mit JSF Ext.

Query Component#

Bei der Query Component handelt es sich um eine Implementierung von UIParameter, der Tag <expert:query> kann an jeder Stelle von <f:param> verwendet werden.

Die Query unterstützt dabei auch Variablen, diese werden durch Literale angegeben, die mit einem Fragezeichen (?) beginnen.

<expert:query name="attribute" query="?object.inverse" unique="true">
	<f:param name="object" value="#{rule.attribute}"/>
</expert:query>

Erklärung: Die Query erzeugt einen Wert für den Parameter "attribute" mit Hilfe der Expert-Expression "?object.inverse", die dabei die Variable "?object" enthält. Diese Variable wird wiederum durch einen Tag <f:param> versorgt.

Scope mit einer Rule vorbelegen#

Das folgende Beispiel übergibt eine Vorbelegung einer Scope-Variable mit einer Rule. Dabei handelt es sich um einen Vorschlag einer inversen Rule, die durch die Query-Component <expert:query> erzeugt wird:
<h:commandButton image="#{resource['images/bitcons:switch.gif']}">
	<f:ajax/>
	<e:load scopeId="rule-create">
		<e:new name="rule" type="com.intersult.expert.entity.Rule">
			<f:param name="object" value="#{rule.value}"/>
			<expert:query name="attribute" query="?object.inverse" unique="true">
				<f:param name="object" value="#{rule.attribute}"/>
			</expert:query>
			<f:param name="value" value="#{rule.object}"/>
		</e:new>
	</e:load>
</h:commandButton>

Evaluieren#

Das Evaluieren der Querys erfolgt durch den ExpertService. Dahinter stehen mehrere Resolver, die das Interface Resolver implementieren. Im Wesentlichen bestehen zwei Resolver: