jsfi - dynamic rcp desktop application
Post on 06-Jul-2015
798 Views
Preview:
DESCRIPTION
TRANSCRIPT
Alper TAlper TÜÜRKYILMAZRKYILMAZ
OutlineOutline
•• JSFIJSFI•• Internal StructureInternal Structure
–– XMLXML–– Custom WidgetsCustom Widgets
•• Runtime ArchitectureRuntime Architecture•• IDEIDE•• ““JSFI on AirJSFI on Air””•• WhatWhat’’s next?s next?
JJSFISFIA Flexible Desktop Application for any Middle or A Flexible Desktop Application for any Middle or
Large Scale SystemLarge Scale System–– Single collaborative desktop application Single collaborative desktop application –– User friendly graphical interface (Rich content)User friendly graphical interface (Rich content)–– Easy & fast development / integrationEasy & fast development / integration–– Rapid DeploymentRapid Deployment
• Swing Runtime Engine• Swing Based IDE
• Swing embedded RCP Runtime Engine• Swing Based IDE
• RCP Runtime Engine• Eclipse based IDE
EvolutionEvolution
JJSFISFI
JSFI RenderingEngine
over RCPDnD IDE
XML Resource(BiML)
Designtime Runtime
Custom JSFI Widgets
InvocationFlow GEF
Editor
Eclipse e4 platform
VisualGEF
EditorXML Editor
Event Handling
Mechanism
Service BasedComm.
Rule Engine
OSGI
Eclipse e4 platform
SWT Event Handling
Mechanism
SessionMngmnt.
Look Through JSFILook Through JSFI
Look Through IDELook Through IDE
.biml Structure
•• BiML : Business Interaction Markup LanguageBiML : Business Interaction Markup Language–– Visual InterfaceVisual Interface
•• All visual component definitionsAll visual component definitions
–– Functional InterfaceFunctional Interface•• Variable definitionsVariable definitions•• Event defintionsEvent defintions•• Invocation definitionsInvocation definitions•• Service definitionsService definitions•• Rule definitionsRule definitions•• Message definitionsMessage definitions
Custom WidgetsCustom Widgets•• UIDialogButtonUIDialogButton•• UIInquiryButtonUIInquiryButton•• UIFlashChart UIFlashChart (ofc2)(ofc2)
•• UITable UITable (KTable)(KTable)
–– Checkbox, Combo, DateField, FileChooser, DialogCheckbox, Combo, DateField, FileChooser, Dialog–– MaskeditField, NumericField, TextField, TimeFieldMaskeditField, NumericField, TextField, TimeField
•• UICombo &UIListUICombo &UIList•• UIMaskTextField UIMaskTextField (Nebula Project)(Nebula Project)
•• UINumericField UINumericField (Nebula Project)(Nebula Project)
•• UIDateField UIDateField (Nebula Project)(Nebula Project)
XletXlet•• Derived form of Derived form of org.eclipse.ui.partorg.eclipse.ui.part.ViewPart.ViewPart•• Linkage between Eclipse Platform and JSFI Linkage between Eclipse Platform and JSFI
EngineEngine•• Compose of:Compose of:
–– a Contexta Context–– an XletPartan XletPart
•• Xlet Types:Xlet Types:–– ConcreteXlet ConcreteXlet (Java)(Java)
–– DynamicXlet DynamicXlet (XML)(XML)
Xlet PartsXlet Parts•• Blocking/NonBlocking/Non--blocking Renderingblocking Rendering•• Specialized event typesSpecialized event types•• Registers/deregisters servicesRegisters/deregisters services•• ReusableReusable•• Types:Types:
–– XletPageXletPage–– XletPageStackXletPageStack–– XletRegionXletRegion–– XletDialogXletDialog–– XletInquiryXletInquiry
ContextContext
•• Provides data forProvides data for–– RenderingRendering–– Event handlingEvent handling
•• Consists of:Consists of:–– Invoker Manager Invoker Manager (per Xlet)(per Xlet)
–– ReferenceStore ReferenceStore (per XletPart)(per XletPart)
–– Focus Traverse Manager Focus Traverse Manager (per XletPart)(per XletPart)
Event Handling MechanismEvent Handling Mechanism
XletXlet
EventEventQueueQueue
XletXlet
EventEventQueueQueue
XletXlet
EventEventQueueQueue
SWTEventQueue
Invocation & ExecutionInvocation & Execution•• Invocation : definition ~ modelInvocation : definition ~ model
•• Invoker : executionInvoker : execution
•• InvokerManager : coordinationInvokerManager : coordination
•• Callback : asynchronisationCallback : asynchronisation
•• Fault HandlingFault Handling
Invocation TypesInvocation Types• BeanInvocation• Reference Invocation• ListofInvocation• SynchOperationInvocation• AsynchOperationInvocation• TopicRegistration• TopicDeregistration• ConstantValueInvocation• LoopInvocation• PageInvocation• CallbackInvocation
Bean InvocationBean Invocation
•• Bean isBean is–– A visual componentA visual component–– A variableA variable
•• Specialized Beans:Specialized Beans:–– PagePage–– ““thisthis””–– UtilUtil–– SessionSession
Operation Invocation StepsOperation Invocation Steps•• processInputprocessInput
– Consumer Input processing....•• executeexecute
– Provider I/O processing ....– Remote provider service execution...– Local invocations...
•• processOutputprocessOutput– Consumer output processing...
• All phases can be invoked in different environment..
Operation Invocation Persp.Operation Invocation Persp.• Perspective I
– Synch Operation– Asynch Operation– Topic Operation
• Perspective II– Heterogenous Operation– Homogenous Operation
• Perspective III– GUI Blocking Operation– Background Operation
Operation InvocationOperation Invocation
SWINGSWING SWTSWTEXECUTEEXECUTE
Process InputProcess Output
Process InputProcess Output
SWTSWTDisplay
Homogenous Operation CallHomogenous Operation CallAll typesAll types
Heterogenous Operation CallHeterogenous Operation CallTopic OperationTopic Operation
Multiplexing Operation CallMultiplexing Operation CallTopic PublisherTopic Publisher
Normalized Region
Synch Operation InvocationSynch Operation Invocation
<services><services><service n=<service n=““CALLCENTERCALLCENTER””>>
<synchoperation o="<synchoperation o="HANGUPHANGUP">"><<iil>l>
<<ii tt="GIRIS.MUSTERINO" k="CUSTOMERNO"/>="GIRIS.MUSTERINO" k="CUSTOMERNO"/><<ii tt="GIRIS.TIP" k="PTYPE3"/>="GIRIS.TIP" k="PTYPE3"/><<ii tt="AD" k="CUSTOMERNAME"/>="AD" k="CUSTOMERNAME"/><<ii tt="SOYAD" k="CUSTOMERSURNAME"/>="SOYAD" k="CUSTOMERSURNAME"/>
</</iil>l><refi n=“CONCATNAME”/><ol><ol>
<o s="TXT_CUSTOMERNO" <o s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>k="CUSTOMERNO"/><o s=<o s=““T" T" k="PTYPE3"/>k="PTYPE3"/><<oo ss==““TXT_TXT_AD" k="CUSTOMERNAME"/>AD" k="CUSTOMERNAME"/><<oo ss==““TXT_TXT_SOYAD" k="CUSTOMERSURNAME"/>SOYAD" k="CUSTOMERSURNAME"/>
</ol></ol></synchoperation></synchoperation>
</service></service></services> </services>
CONSUMERCONSUMERPROVIDERPROVIDER
<refi n="REGISTERCUSTOMERINFO"><<soisoi t="CALLCENTER" o="HANGUP">t="CALLCENTER" o="HANGUP">
<il><il><i s="TXT_CUSTOMERNO" <i s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>k="CUSTOMERNO"/><i s=<i s=““T" T" k="PTYPE3"/>k="PTYPE3"/><<ii ss==““TXT_TXT_AD" k="CUSTOMERNAME"/>AD" k="CUSTOMERNAME"/><<ii ss==““TXT_TXT_SOYAD" k="CUSTOMERSURNAME"/>SOYAD" k="CUSTOMERSURNAME"/>
</il></il><<olol>>
<o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/><o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/><o t="GIRIS.TIP" k="PTYPE3"/><o t="GIRIS.TIP" k="PTYPE3"/><o t="AD" k="CUSTOMERNAME"/><o t="AD" k="CUSTOMERNAME"/><o t="SOYAD" k="CUSTOMERSURNAME"/><o t="SOYAD" k="CUSTOMERSURNAME"/>
</</olol>></</soisoi>>
</refi>
OperationInput GETOutput SET
Input SETOutput GET
Asynch Operation InvocationAsynch Operation Invocation<services><services>
<asynchoperation o="<asynchoperation o="HANGUPHANGUP">"><<iil>l>
<<ii tt="GIRIS.MUSTERINO" k="CUSTOMERNO"/>="GIRIS.MUSTERINO" k="CUSTOMERNO"/><<ii tt="GIRIS.TIP" k="PTYPE3"/>="GIRIS.TIP" k="PTYPE3"/><<ii tt="AD" k="CUSTOMERNAME"/>="AD" k="CUSTOMERNAME"/><<ii tt="SOYAD" k="CUSTOMERSURNAME"/>="SOYAD" k="CUSTOMERSURNAME"/>
</</iil>l><refi n=“CONCATNAME”/><bi t="GIRIS.BT_DEVAM" o=“setEnabled">
<value>true</value></bi><bi t="GIRIS1.MUSNO" o=“setText">
<bi t="GIRIS1.MUSTERINO“ o=“getText”/></bi><onevent s="ACCOUNTLIST" type=<onevent s="ACCOUNTLIST" type=““modify">modify">
<ol><ol><o s="TXT_CUSTOMERNO" <o s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>k="CUSTOMERNO"/><o s=<o s=““T" T" k="PTYPE3"/>k="PTYPE3"/><<oo ss==““TXT_TXT_AD" k="CUSTOMERNAME"/>AD" k="CUSTOMERNAME"/><<oo ss==““TXT_TXT_SOYAD" k="CUSTOMERSURNAME"/>SOYAD" k="CUSTOMERSURNAME"/>
</ol></ol></onevent></onevent>
</ asynchoperation</ asynchoperation >>
</services></services>
CONSUMERCONSUMER PROVIDERPROVIDER
<refi ref="REGISTERCUSTOMERINFO"><<aoiaoi t="CALLCENTER" o="HANGUP">t="CALLCENTER" o="HANGUP">
<il><il><i s="TXT_CUSTOMERNO" <i s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>k="CUSTOMERNO"/><i s=<i s=““T" T" k="PTYPE3"/>k="PTYPE3"/><<ii ss==““TXT_TXT_AD" k="CUSTOMERNAME"/>AD" k="CUSTOMERNAME"/><<ii ss==““TXT_TXT_SOYAD" k="CUSTOMERSURNAME"/>SOYAD" k="CUSTOMERSURNAME"/>
</il></il><on<onresponseresponse>>
<<olol>><o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/><o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/><o t="GIRIS.TIP" k="PTYPE3"/><o t="GIRIS.TIP" k="PTYPE3"/><o t="AD" k="CUSTOMERNAME"/><o t="AD" k="CUSTOMERNAME"/><o t="SOYAD" k="CUSTOMERSURNAME"/><o t="SOYAD" k="CUSTOMERSURNAME"/>
</</olol>><bi t="GIRIS.MUSNO" o=“setText">
<bi t="GIRIS.MUSTERINO“ o=“getText”/></bi>
</on</onresponseresponse>></</aoiaoi>>
</refi>
OperationInput GETOutput SET
Input SETOutput GET
Topic RegistrationTopic Registration
Map through keys...Assign values between consumer
& provider...
<services><services><topicoperation o="<topicoperation o="HANGUPHANGUP">">
<onevent s="ACCOUNTLIST" type=<onevent s="ACCOUNTLIST" type=““modify"> modify"> <il><il>
<i s="TXT_CUSTOMERNO" <i s="TXT_CUSTOMERNO" k="CUSTOMERNO"/>k="CUSTOMERNO"/><i s=<i s=““TXTTYPE" TXTTYPE" k="PTYPE3"/>k="PTYPE3"/><<ii ss==““TXT_TXT_AD" k="CUSTOMERNAME"/>AD" k="CUSTOMERNAME"/><<ii ss==““TXT_TXT_SOYAD" k="CUSTOMERSURNAME"/>SOYAD" k="CUSTOMERSURNAME"/>
</il></il></onevent></onevent>
</ topicoperation></ topicoperation></services> </services>
CONSUMERCONSUMER-- subscribersubscriber PROVIDER PROVIDER -- publisherpublisher<refi n="REGISTERCUSTOMERINFO">
<t<toror t="CALLCENTER" o="HANGUP">t="CALLCENTER" o="HANGUP"><<ilil/>/><<olol>>
<o t="TXT_CUSTOMERNOFROM" k="REGISTRATIONID"/><o t="TXT_CUSTOMERNOFROM" k="REGISTRATIONID"/></ol></ol><<onpublishonpublish>>
<<olol>><o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/><o t="GIRIS.MUSTERINO" k="CUSTOMERNO"/><o t="GIRIS.TIP" k="PTYPE3"/><o t="GIRIS.TIP" k="PTYPE3"/><o t="AD" k="CUSTOMERNAME"/><o t="AD" k="CUSTOMERNAME"/><o t="SOYAD" k="CUSTOMERSURNAME"/><o t="SOYAD" k="CUSTOMERSURNAME"/>
</</olol>><refi n=“CONCATNAME”/><bi t="GIRIS.BT_DEVAM" o=“setEnabled">
<value>true</value></bi><bi t="GIRIS.MUSNO" o=“setText">
<bi t="GIRIS.MUSTERINO“ o=“getText”/></bi>
</</onpublishonpublish>></t</toror>>
</refi>
OperationInput GETOutput SET
Input SETOutput GET
Rule EngineRule Engine
•• Rule ExecutionRule Execution–– a Rule definitiona Rule definition–– a Contexta Context
•• Rule Types:Rule Types:–– Global rulesGlobal rules–– Rules defined in XletPartsRules defined in XletParts
Service CommunicationService Communication
•• Collaborative XletsCollaborative Xlets•• Well defined boundariesWell defined boundaries•• Types:Types:
–– Tangible Service Tangible Service (Java)(Java)
•• Authentication service etc.Authentication service etc.–– Dynamic Service Dynamic Service (XML)(XML)
•• Services Defined through XletPartsServices Defined through XletParts–– Proxy Service Proxy Service (Remote)(Remote)
• Services configured for external legacy sytems.
IDEIDE
•• Extended from XWT Extended from XWT •• DnD XletPart creationDnD XletPart creation•• Flow based event definitionFlow based event definition•• Flow based service Flow based service (ReferenceInvocation)(ReferenceInvocation) definitiondefinition•• Direct XML editingDirect XML editing•• Perspective designPerspective design•• Integrated with JSFI Runtime engine for Integrated with JSFI Runtime engine for
previewpreview
DEMODEMO
““JSFI on AirJSFI on Air””
•• Credit Europe Bank (CEB) Call Center Credit Europe Bank (CEB) Call Center (Germany)(Germany)–– CTIToolbar XletCTIToolbar Xlet
•• Service Communication, Xlets, Context.Service Communication, Xlets, Context.
–– CEB Core Banking ApplicationCEB Core Banking Application•• Service communication (Proxy, tangible)Service communication (Proxy, tangible)
Call CenterCall Center
SWT XLET
SWT XLET
SWING XLET
SW
T X
LET
WhatWhat’’s next?s next?
•• WS IntegrationWS Integration•• Printing APIPrinting API•• OpenOpen--office Integration office Integration •• BIRT integrationBIRT integration•• RAP integration for WebRAP integration for Web
Thank YouThank You
Questions?Questions?
top related