[FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

20
Case study: Pluginable frontend Łukasz “Max” Kokoszka

Transcript of [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Page 1: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Case study:

Pluginable frontend

Łukasz “Max” Kokoszka

Page 2: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Klient

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

Page 3: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

Klient - informacje

▪ Potentat w branży sub-metering** pośrednictwo rozliczeniowe; energetyka

▪ 24 kraje

▪ Dostawca kompleksowych rozwiązań

▪ „Corporate” vs „Countries” czyli kontekst biznesowy

Case study: Pluginable frontend

Page 4: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Klient - ekosystem

Case study: Pluginable frontend

Data HUB Internal systemsPortal

Page 5: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

„A czy dałoby się…?”

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

Page 6: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

„A czy dałoby się…?” – oczekiwania biznesowe

▪ Dodatkowe treści

▪ Selektywne modyfikacje

▪ Konfiguracja per kontekst

▪ Niezależny development

Case study: Pluginable frontend

Page 7: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

„A czy dałoby się…?” – treści, modyfikacje, konfiguracja

Case study: Pluginable frontend

Page 8: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

„A czy dałoby się…?” – wymagania techniczne

▪ Niezależny cykl życia

▪ Separacja rozwiązań i technologii

▪ Separacja odpowiedzialności

▪ Aktualizacja @Runtime

▪ Spójność UX/UI

▪ Zdolność integracji z dodatkowymi systemami

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

Page 9: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

„Będzie Pan zadowolony”

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

Page 10: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

„Będzie Pan zadowolony” – trzy opcje

▪ „Full modification”▪ Moduły AngularJS, współdzielony codebase, wszyscy mogą

wszystko

▪ „Separation by convention”▪ Rozszerzenia dostarczane jako „paczki”, jasno określone co

kto może

▪ „Full separation” czyli…

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

Page 11: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

DXPEDynamic eXtension Points Engine

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

Page 12: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

DXPE - ekosystem

Case study: Pluginable frontend

Portal

Plugin #1

Plugin #2

Internal systemsData HUB

Client Configuration Server

Git

Page 13: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Client

DXPE

HostHost API

ClientAPI

CCS

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

XDS*

* Extensions Definition Schema

XD**

** Extensions Definition

Page 14: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

HostHost

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

ClientHost-DXPE

Adapter

<iframe>

„HTML5” postMessage+ promisy

Page 15: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

Case study: Pluginable frontend

window.parent.postMessage(message, targetOrigin, transferable);

DXPE.client.ux.dispatchInfoToast(message); => promise {"messageId": (string),"eventId": (string),"data": (object),…

}

DXPE.host.onMessage(fn);function (eventId, data, done) {

…host.toastHandler(data.msg).then(done);

} channel.postMessage(message);

Page 16: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

XDS – eXtensions Definition Schema

Case study: Pluginable frontend

{ "schemaVersion": (string),"extensions": [

{ "pointType": (string),"pointData": (object)

}]

}

• availableLanguages• configuration• corporateFeatureToggle• defaultFeatures• feature• iconSet• menuInjections• translations

Page 17: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

XD – eXtensions Definition

Case study: Pluginable frontend

"pointType": "feature","pointData": {

"featureId": "EXAMPLE_PLUGIN","location": "http://example.com/plugin", …

}

Page 18: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

"pointType": "menuInjections","pointData": {

"menuId": "main","injections": [

{"menuItemId": "examplePluginMenuItem","$featureId": "EXAMPLE_PLUGIN"…

}]

}

Łukasz “Max” Kokoszka

XD – eXtensions Definition

Case study: Pluginable frontend

Page 19: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz “Max” Kokoszka

DXPE – visit the rabbit hole (DEMO)

Case study: Pluginable frontend

Page 20: [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Łukasz „Max” Kokoszkahttp://www.linkedin.com/in/lukasz-max-kokoszka

Case study: Pluginable frontend

[email protected]

www.future-processing.pl