jsfi - dynamic rcp desktop application

Post on 06-Jul-2015

806 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Dynamic RCP Desktop Application

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