This page (revision-7) was last changed on 18-Feb-2015 08:49 by Dieter Käppel

This page was created on 31-Oct-2012 23:55 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
7 18-Feb-2015 08:49 3 KB Dieter Käppel to previous
6 18-Feb-2015 08:49 3 KB Dieter Käppel to previous | to last
5 02-Nov-2012 14:16 3 KB Dieter Käppel to previous | to last
4 02-Nov-2012 13:25 3 KB Dieter Käppel to previous | to last
3 02-Nov-2012 12:49 3 KB Dieter Käppel to previous | to last
2 01-Nov-2012 00:43 2 KB Dieter Käppel to previous | to last
1 31-Oct-2012 23:55 1 KB Dieter Käppel to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 3 added 3 lines
!!!Inhalt
[{TableOfContents title='Page contents' numbered='true'}]
At line 15 added 45 lines
!!!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:
* __DirectResolver:__ Der Resolver fragt jedes Goal direkt bei der dahinter liegenden Datenbank ab und arbeitet mit den Ergebnissen weiter. Einfache Querys können so schnell evaluiert werden und der Datenbank-Cache optimal genutzt. Der Nachteil kann bei komplexen Querys darin bestehen, dass für Zwischenergebnisse große Mengen an Daten in den Speicher geladen werden und die Query daher langsam und Speicher intensiv sein kann.
* __HibernateResolver:__ Der Resolver wandelt die Query mit Hilfe von Hibernate Criteria-Querys in eine Datenbankabfrage um, ohne Zwischenergebnisse zu erzeugen. Dadurch kann die Performance für große Querys optimiert werden.
!!!Medien
[{Image src='Intersult Expert/expert-001.png' width='100%'}]
[{Flash src='https://www.youtube.com/v/iPw9yuKySus' controls='false' play='true'}]