jsfi - dynamic rcp desktop application

29
Alper T Alper T Ü Ü RKYILMAZ RKYILMAZ

Upload: alper-turkyilmaz

Post on 06-Jul-2015

806 views

Category:

Documents


0 download

DESCRIPTION

Dynamic RCP Desktop Application

TRANSCRIPT

Page 1: JSFI - Dynamic RCP Desktop Application

Alper TAlper TÜÜRKYILMAZRKYILMAZ

Page 2: JSFI - Dynamic RCP Desktop Application

OutlineOutline

•• JSFIJSFI•• Internal StructureInternal Structure

–– XMLXML–– Custom WidgetsCustom Widgets

•• Runtime ArchitectureRuntime Architecture•• IDEIDE•• ““JSFI on AirJSFI on Air””•• WhatWhat’’s next?s next?

Page 3: JSFI - Dynamic RCP Desktop Application

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

Page 4: JSFI - Dynamic RCP Desktop Application

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.

Page 5: JSFI - Dynamic RCP Desktop Application

Look Through JSFILook Through JSFI

Page 6: JSFI - Dynamic RCP Desktop Application

Look Through IDELook Through IDE

Page 7: JSFI - Dynamic RCP Desktop Application

.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

Page 8: JSFI - Dynamic RCP Desktop Application

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)

Page 9: JSFI - Dynamic RCP Desktop Application

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)

Page 10: JSFI - Dynamic RCP Desktop Application

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

Page 11: JSFI - Dynamic RCP Desktop Application

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)

Page 12: JSFI - Dynamic RCP Desktop Application

Event Handling MechanismEvent Handling Mechanism

XletXlet

EventEventQueueQueue

XletXlet

EventEventQueueQueue

XletXlet

EventEventQueueQueue

SWTEventQueue

Page 13: JSFI - Dynamic RCP Desktop Application

Invocation & ExecutionInvocation & Execution•• Invocation : definition ~ modelInvocation : definition ~ model

•• Invoker : executionInvoker : execution

•• InvokerManager : coordinationInvokerManager : coordination

•• Callback : asynchronisationCallback : asynchronisation

•• Fault HandlingFault Handling

Page 14: JSFI - Dynamic RCP Desktop Application

Invocation TypesInvocation Types• BeanInvocation• Reference Invocation• ListofInvocation• SynchOperationInvocation• AsynchOperationInvocation• TopicRegistration• TopicDeregistration• ConstantValueInvocation• LoopInvocation• PageInvocation• CallbackInvocation

Page 15: JSFI - Dynamic RCP Desktop Application

Bean InvocationBean Invocation

•• Bean isBean is–– A visual componentA visual component–– A variableA variable

•• Specialized Beans:Specialized Beans:–– PagePage–– ““thisthis””–– UtilUtil–– SessionSession

Page 16: JSFI - Dynamic RCP Desktop Application

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

Page 17: JSFI - Dynamic RCP Desktop Application

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

Page 18: JSFI - Dynamic RCP Desktop Application

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

Page 19: JSFI - Dynamic RCP Desktop Application

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

Page 20: JSFI - Dynamic RCP Desktop Application

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

Page 21: JSFI - Dynamic RCP Desktop Application

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

Page 22: JSFI - Dynamic RCP Desktop Application

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

Page 23: JSFI - Dynamic RCP Desktop Application

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.

Page 24: JSFI - Dynamic RCP Desktop Application

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

Page 25: JSFI - Dynamic RCP Desktop Application

DEMODEMO

Page 26: JSFI - Dynamic RCP Desktop Application

““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)

Page 27: JSFI - Dynamic RCP Desktop Application

Call CenterCall Center

SWT XLET

SWT XLET

SWING XLET

SW

T X

LET

Page 28: JSFI - Dynamic RCP Desktop Application

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

Page 29: JSFI - Dynamic RCP Desktop Application

Thank YouThank You

Questions?Questions?