Weitere ähnliche Inhalte Ähnlich wie JSFI - Dynamic RCP Desktop Application (20) JSFI - Dynamic RCP Desktop Application3. JSFI
A Flexible Desktop Application for any Middle or
Large Scale System
– Single collaborative desktop application
– User friendly graphical interface (Rich content)
– Easy & fast development / integration
– Rapid Deployment
• Swing Runtime Engine • Swing embedded RCP Runtime Engine • RCP Runtime Engine
• Swing Based IDE • Swing Based IDE • Eclipse based IDE
Evolution
4. JSFI
Designtime Runtime
JSFI Rendering
DnD IDE Engine
Custom JSFI XML Resource
Widgets (BiML) over RCP
Visual Invocation Service Event
Session
GEF Flow GEF XML Editor Based Handling Rule Engine
Mngmnt.
Editor Editor Comm. Mechanism
SWT Event
Eclipse e4 platform OSGI
Handling
Mechanism
Eclipse e4 platform
7. .biml Structure
• BiML : Business Interaction Markup Language
– Visual Interface
• All visual component definitions
– Functional Interface
• Variable definitions
• Event defintions
• Invocation definitions
• Service definitions
• Rule definitions
• Message definitions
8. Custom Widgets
• UIDialogButton
• UIInquiryButton
• UIFlashChart (ofc2)
• UITable (KTable)
– Checkbox, Combo, DateField, FileChooser, Dialog
– MaskeditField, NumericField, TextField, TimeField
• UICombo &UIList
• UIMaskTextField (Nebula Project)
• UINumericField (Nebula Project)
• UIDateField (Nebula Project)
9. Xlet
• Derived form of org.eclipse.ui.part.ViewPart
• Linkage between Eclipse Platform and JSFI
Engine
• Compose of:
– a Context
– an XletPart
• Xlet Types:
– ConcreteXlet (Java)
– DynamicXlet (XML)
10. Xlet Parts
• Blocking/Non-blocking Rendering
• Specialized event types
• Registers/deregisters services
• Reusable
• Types:
– XletPage
– XletPageStack
– XletRegion
– XletDialog
– XletInquiry
11. Context
• Provides data for
– Rendering
– Event handling
• Consists of:
– Invoker Manager (per Xlet)
– ReferenceStore (per XletPart)
– Focus Traverse Manager (per XletPart)
13. Invocation & Execution
• Invocation : definition ~ model
• Invoker : execution
• InvokerManager : coordination
• Callback : asynchronisation
• Fault Handling
14. Invocation Types
• BeanInvocation
• Reference Invocation
• ListofInvocation
• SynchOperationInvocation
• AsynchOperationInvocation
• TopicRegistration
• TopicDeregistration
• ConstantValueInvocation
• LoopInvocation
• PageInvocation
• CallbackInvocation
15. Bean Invocation
• Bean is
– A visual component
– A variable
• Specialized Beans:
– Page
– “this”
– Util
– Session
16. Operation Invocation Steps
• processInput
– Consumer Input processing....
• execute
– Provider I/O processing ....
– Remote provider service execution...
– Local invocations...
• processOutput
– Consumer output processing...
• All phases can be invoked in different
environment..
17. Operation Invocation Persp.
• Perspective I
– Synch Operation
– Asynch Operation
– Topic Operation
• Perspective II
– Heterogenous Operation
– Homogenous Operation
• Perspective III
– GUI Blocking Operation
– Background Operation
18. Operation Invocation
Process Input Process Input
Process Output Process Output
SWING EXECUTE SWT
Normalized Region
Homogenous Operation Call
All types
Heterogenous Operation Call
Topic Operation
Multiplexing Operation Call
Topic Publisher
SWT
Display
19. Synch Operation Invocation
PROVIDER
CONSUMER
<services>
<refi n="REGISTERCUSTOMERINFO"> <service n=“CALLCENTER”>
n=“ CALLCENTER”
<soi t="CALLCENTER" o="HANGUP"> <synchoperation o="HANGUP">
o="HANGUP">
<il> <il>
<i s="TXT_CUSTOMERNO" k="CUSTOMERNO"/> <i t="GIRIS.MUSTERINO" k="CUSTOMERNO"/>
<i s=“T" k="PTYPE3"/>
s=“ <i t="GIRIS.TIP" k="PTYPE3"/>
<i s=“TXT_AD" k="CUSTOMERNAME"/>
TXT_AD" <i t="AD" k="CUSTOMERNAME"/>
<i s=“TXT_SOYAD" k="CUSTOMERSURNAME"/>
TXT_SOYAD" <i t="SOYAD" k="CUSTOMERSURNAME"/>
</il> </il>
</i
<ol>
ol> <refi n=“CONCATNAME”/>
<o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/> <ol>
<o t="GIRIS.TIP" k="PTYPE3"/> <o s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>
<o t="AD" k="CUSTOMERNAME"/> <o s=“T" k="PTYPE3"/>
s=“
<o t="SOYAD" k="CUSTOMERSURNAME"/> <o s=“TXT_AD" k="CUSTOMERNAME"/>
TXT_AD"
</ol>
</ol> <o s=“TXT_SOYAD" k="CUSTOMERSURNAME"/>
TXT_SOYAD"
</soi>
</soi> </ol>
</refi> </synchoperation>
</service>
</services>
Input GET Input SET
Output SET Operation Output GET
20. Asynch Operation Invocation
CONSUMER PROVIDER
<services>
<asynchoperation o="HANGUP">
o="HANGUP">
<refi ref="REGISTERCUSTOMERINFO"> <il>
<aoi t="CALLCENTER" o="HANGUP"> <i t="GIRIS.MUSTERINO" k="CUSTOMERNO"/>
<il> <i t="GIRIS.TIP" k="PTYPE3"/>
<i s="TXT_CUSTOMERNO" k="CUSTOMERNO"/> <i t="AD" k="CUSTOMERNAME"/>
<i s=“T" k="PTYPE3"/>
s=“ <i t="SOYAD" k="CUSTOMERSURNAME"/>
<i s=“TXT_AD" k="CUSTOMERNAME"/>
TXT_AD" </il>
</i
<i s=“TXT_SOYAD" k="CUSTOMERSURNAME"/>
TXT_SOYAD" <refi n=“CONCATNAME”/>
</il> <bi t="GIRIS.BT_DEVAM" o=“setEnabled">
<onresponse>
<onresponse> <value>true</value>
<ol>
ol> </bi>
<o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/> <bi t="GIRIS1.MUSNO" o=“setText">
<o t="GIRIS.TIP" k="PTYPE3"/> <bi t="GIRIS1.MUSTERINO“ o=“getText”/>
<o t="AD" k="CUSTOMERNAME"/> </bi>
<o t="SOYAD" k="CUSTOMERSURNAME"/> <onevent s="ACCOUNTLIST" type=“modify">
type=“
</ol>
</ol> <ol>
<bi t="GIRIS.MUSNO" o=“setText"> <o s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>
<bi t="GIRIS.MUSTERINO“ o=“getText”/> <o s=“T" k="PTYPE3"/>
s=“
</bi> <o s=“TXT_AD" k="CUSTOMERNAME"/>
TXT_AD"
</onresponse>
</onresponse> <o s=“TXT_SOYAD" k="CUSTOMERSURNAME"/>
TXT_SOYAD"
</aoi>
</aoi> </ol>
</refi> </onevent>
</ asynchoperation >
</services>
Input GET Input SET
Output SET Operation Output GET
21. Topic Registration
CONSUMER- subscriber PROVIDER - publisher
<refi n="REGISTERCUSTOMERINFO">
<tor t="CALLCENTER" o="HANGUP">
<tor
<il/>
il/>
<ol>
ol>
<o t="TXT_CUSTOMERNOFROM" k="REGISTRATIONID"/> <services>
</ol> <topicoperation o="HANGUP">
o="HANGUP">
<onpublish>
onpublish> <onevent s="ACCOUNTLIST" type=“modify">
type=“
<ol>
ol> <il>
<o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/> <i s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>
<o t="GIRIS.TIP" k="PTYPE3"/> <i s=“TXTTYPE" k="PTYPE3"/>
s=“
<o t="AD" k="CUSTOMERNAME"/> <i s=“TXT_AD" k="CUSTOMERNAME"/>
TXT_AD"
<o t="SOYAD" k="CUSTOMERSURNAME"/> <i s=“TXT_SOYAD" k="CUSTOMERSURNAME"/>
TXT_SOYAD"
</ol>
</ol> </il>
<refi n=“CONCATNAME”/> </onevent>
<bi t="GIRIS.BT_DEVAM" o=“setEnabled"> </ topicoperation>
<value>true</value> </services>
</bi>
<bi t="GIRIS.MUSNO" o=“setText">
<bi t="GIRIS.MUSTERINO“ o=“getText”/>
</bi>
</onpublish>
</onpublish>
</tor>
</tor>
</refi>
Input GET Input SET
Output SET Operation Output GET
Map through keys...
Assign values between consumer
& provider...
22. Rule Engine
• Rule Execution
– a Rule definition
– a Context
• Rule Types:
– Global rules
– Rules defined in XletParts
23. Service Communication
• Collaborative Xlets
• Well defined boundaries
• Types:
– Tangible Service (Java)
• Authentication service etc.
– Dynamic Service (XML)
• Services Defined through XletParts
– Proxy Service (Remote)
• Services configured for external legacy sytems.
24. IDE
• Extended from XWT
• DnD XletPart creation
• Flow based event definition
• Flow based service (ReferenceInvocation) definition
• Direct XML editing
• Perspective design
• Integrated with JSFI Runtime engine for
preview
26. “JSFI on Air”
• Credit Europe Bank (CEB) Call Center
(Germany)
– CTIToolbar Xlet
• Service Communication, Xlets, Context.
– CEB Core Banking Application
• Service communication (Proxy, tangible)
28. What’s next?
• WS Integration
• Printing API
• Open-office Integration
• BIRT integration
• RAP integration for Web