Silver Essence

On-boarding: Configuratie Training: Dag 1

CANEAIR: 537BC6CFFD

  • App bouwen met Essence
    • App ontwerpen
    • Database ontwerpen
    • Entiteiten vormgeven
    • Functionaliteiten
    • Rechten & Rollen
    • XML-Exporteren
  • Op Exact Online
    • Exact Developer Account
  • Gereed voor publiceren

Even voorstellen…

  • Gebruikersportaal
  • Meerdere datasources
  • Lezen/Schrijven
  • Real-time
  • Functie zonder gebruiker
  • Data-warehousing
  • Complexe afhandelingen
  • Batch-afhandeling

Er was eens...

Uitgangspunten

The one that rules them all...

2011 Proof of Concept

2012 Launching Customer(s)

2012 Silicon Valley

2013 Introduction Exact Live

2014 Ready for Online

2015 Innovation Award

“De kracht van Silver Essence zit ‘m in het feit dat ook partners zonder eigen ontwikkelaars hun specifieke kennis met groot gemak naar apps kunnen vertalen.

De jury waardeert de breedte en diepgang van deze innovatie en ziet vanwege de potentiele brede inzetbaarheid de kansen qua omzetbijdrage via het Silver Essence platform met vertrouwen tegemoet.”

Essence is anders

Applicatie

Database

Applicatie

Database

Applicatie

Database

Silver.Essence

API

In de praktijk

Configureren <> Programmeren

En toch… programmeren?

UI Deep Dive

http://training.silveressence.net

http://www.exact.nl/exact-online/partners/app-center-partner

https://my.silveressence.net

BaseEntity
Lezen/Schrijven

BusinessObject

BusinessEntity
Groeperen/Opmaak

BusinessEntityList

SilverBusinessEntity
Entiteit & Lijsten

BusinessController
Presentatie

CopyAction

LookUp

ControllerMask
Mobiele variant

  • Configuratie voor Lezen & Schrijven
  • Bepaalt de Data logica
  • Verwijst naar 1:
    • Tabel of View (Open Database)
    • Webservice Topic (OData)
    • DataSource (Repository BusinessComponent)
  • Configuratie:
    • Attributes
      Datatype, PrimaryKey, TreatAsBoolean
    • Label
      LabelText, LookUp Label
    • Input
      ControlType, ReadOnly
    • Domain
      Verwijzing

BaseEntity

  • Configuratie voor Presentatie
  • Bepaalt de Business logica
    • Weergave
    • Functionaliteit
    • Security
  • Bevat een of meerdere BaseEntities
  • Configuratie
    • Attributes
      Weergave
    • Label
      Naamgeving
    • Input
      Invoer
    • Search, List, Order
      Zoeken & Lijsten
    • Validators
      Client- & Serverside validaties
    • Source
      Default waardes
    • Domain
      Verwijzing

BusinessEntity

BusinessEntityList

  • Top-level in configuratie
  • Bevat een of meerdere SilverBusinessEntities
    • SilverBusinessEntity:
      • 1 BusinessEntity
      • 1 BusinessEntityList als Main List
      • Optioneel 1 of meerdere BusinessEntityLists (gerelateerd)
  • Presentatie van functionaliteiten
  • Mobile weergave: ControllerMask

BusinessController

LookUp

  • Configuratie voor eenvoudige selecties
    • Browsers
    • DropDown Lists
  • Geen Security
  • Wel Filters
  • Master/Slave Constructies


CopyAction

  • Configuratie voor aanmaken data:
    • Vanuit bron BusinessEntity
    • Naar doel BusinessEntity

Overige

  • Denk in Entiteiten i.p.v. Processen
  • Teken het Entiteiten Model
    • Entiteiten voor de BusinessCase
    • Entiteiten voor Interne & Externe Gebruiker
    • Entiteiten voor rechten & rollen
  • Bepaal per Entiteit:
    • Bestaande Bron (bijv. Synergy Items, Exact Online Projecten)
    • Nieuwe Entiteiten
      • Grofweg velden bepalen voor Tabel
      • Grofweg kentallen bepalen voor View
    • Ondersteunende Entiteiten
      • Types
      • Statussen
  • https://www.lucidchart.com

Business Case

Silver Essence

On-boarding: Configuratie Training: Dag 2

BaseEntity
Lezen/Schrijven

BusinessObject

BusinessEntity
Groeperen/Opmaak

BusinessEntityList

SilverBusinessEntity
Entiteit & Lijsten

BusinessController
Presentatie

CopyAction

LookUp

ControllerMask
Mobiele variant

  • Standaard URL
    https://my.silveressence.net/Essence/Portal/SilverSolutionPage.aspx
  • Specifieke BusinessController: Naam van de Controller
    ?Controller=Account
  • Zoekvelden: Op Eigenschap
    ?Controller=Account&Name=e
  • Geen Defaults toepassen: ClearDefaults
    ?Controller=ToDo&ClearDefaults=1
  • Editor Geheugen: ConfigStore
    ?Controller=ToDo&ConfigStore=Session
  • Op ID: LinkedList, CopyAction
    ?Controller=Account&ID=<<ID>>&LinkedList=ToDos&CopyAction=AddToDoToAccount

URL Tricks

  • Eenvoudige zoekacties
    Wel Filters, Geen security
  • Datakey:
    Wordt opgeslagen
  • Display Code:
    Code kolom
  • Display Data:
    Omschrijving kolom
  • Aanmaken: Allow Create
    Verwijzing naar Controller
  • Master/Slave Constructie
    BusinessEntityProperty verwijzing

LookUp

  • Check bij verwijderen
  • Gegeven niet verwijderen
  • Gegeven en gerelateerde gegevens verwijderen
  • Gegeven verwijderen, gerelateerde gegevens ontkoppelen

Relations

  • Titelbalk
  • Tooltip in Lijsten

Identifier Part

  • Hyperlink
  • Basis URL: SilverSolutionPage.aspx
  • Statisch: Parameter: Controller, Value: Account
  • Dynamisch: Parameter: ID, Value: BusinessEntity:Account.AccountID

NavigateURL

  • Meerdere BaseEntities in één BusinessEntity (Join)
  • Wel of niet aanmaken?
  • Wel of niet verwijderen?
  • In welke volgorde?

Compositie

  • Toevoegen van Eigenschappen van de extra BaseEntities
  • Ook na toevoegen van nieuwe Eigenschappen aan de BaseEntity

Overerven

  • Eigenschap die kenmerkend is voor de BusinessEntity
  • Wordt standaard toegepast bij Aanmaken/Wijzigen
  • Wordt altijd toegepast bij filteren/zoekacties

Signatuur

Silver Essence

On-boarding: Configuratie Training: Dag 3

  • Voorgedefinieerde Update
  • Onder bepaalde Condities
  • Zichtbaar te maken als Button
    • ExtendedMethod
  • Ook op de achtergrond te gebruiken:
    • CopyAction: PreMethod
    • CopyAction: PostMethod
    • Print SaveAction: PreMethod
    • Print SaveAction: PostMethod
    • Export SaveAction: PreMethod
    • Export SaveAction: PostMethod

Methodes

  • Extended Method in BusinessController
  • Een of meerdere Methodes in één Extended Method

Methode als Button

  • Nieuw gegeven aanmaken o.b.v. bestaand gegeven
  • Bijvoorbeeld
    • Nieuwe order voor een klant
    • Nieuwe Activiteit bij Project
    • Opvolger van een Salariscomponent
  • ReturnValue: Waarde terugschrijven in Bron
  • CheckValue: Bestaat gegeven al?

CopyAction

  • Gerelateerde Data
  • Gefilterd vanuit bovenliggend gegeven: QueryExtensions
  • Kolommen verbergen: ExcludeProperties

LinkedList

  • Gestripte versie van de BusinessController
  • Mobiele variant: SilverTabletMenu.aspx (Ctrl+M)
  • Zoekopties beperken
  • Titelbalk samenstellen
  • Knoppenbalk
    • Snel Wijzigen
    • ExtendedMethods
    • CopyActions

ControllerMask

  • Direct toegang tot meest gebruikte entiteiten
  • Direct toegang tot pagina’s buiten de portal
  • “Linkerduim menu” op tablet
  • Tonen/Verbergen via Silver Icoon
  • Tonen/Verbergen via Swipe

Index Buttons

  • Logische proces volgorde
  • Langere omschrijvingen
  • Groepindeling
  • Alt+Z
  • Linkerbenedenhoek

Quick Jump Menu

  • Verdiepingen
  • Kamers
  • Wie kun je hier vinden?
  • Wat kun je hier vinden?
  • Wat kun je hier doen?

Hoofdmenu

  • Cirkels met onderliggende Cirkels
  • “Oneindig” diep
  • Opties binnen Cirkels
  • Gebruik van Personas (Geen Security)

Circle Menu

  • Personalisatie
  • Statisch (HTML)
  • Dynamisch (ASP.NET/C#)

Startpagina’s

Security: Basis

  • Snel inrichten
  • Per CRUD actie: Allow of Block
  • Internal en External Users

User Model

USER

BusinessController

Validatie

Eigenschappen

SilverSession

Security: Advanced

PreCheck

Rechten & Rollen?

Allow

Ja

Filters & Exceptions

Misschien

Nee

User Model

  • Welke BusinessController voor de Internal User?
  • PreChecks:
    • Rollen?
    • Kenmerken?
    • Wat nog meer?
    • Priorisering van de PreChecks?
  • Filters:
    • Welke eigenschappen?
  • Exceptions:
    • Welke eigenschappen?

Basement

  • Functiebibliotheek
  • Server-side Acties & Validaties

Basement: Voorbeeld

  • BusinessEntity: Dispute, Property: Description
  • Trigger Properties: DisputeTypeID
  • Basement
    • DataTableName: string:DisputeTypes
    • KeyColumnName: string:DisputeTypeID
    • KeyValue: BusinessEntityProperty:Dispute.DisputeTypeID
    • ReturnColumnName: string:Description
  • Bewaren (Klein en Groot) en BusinessController Dispute verversen
  • Voer een nieuw Dispuut in
  • Wat gebeurd er als je het veld Dispuuttype wijzigt?

Silver Essence

On-boarding: Configuratie Training: Dag 4

User Model

USER

BusinessController

Validatie

Eigenschappen

SilverSession

Security: Advanced

PreCheck

Rechten & Rollen?

Allow

Ja

Filters & Exceptions

Nee

Misschien

Meer over Security

  • Waar gaan we mee valideren?
    • Internal Access Controller
      Personen binnen een bedrijf
    • External Access Controller
      Personen buiten het bedrijf
    • Consumer User
      Webservice Gebruiker
  • Toekennen van een uniek ID
    • InternalSilverUser
    • ExternalSilverUser
  • Rechten en Rollen tabellen
  • Het gebruik van RecordExistsInTableByColumnValues

Solution Settings

USER

BusinessController

Validatie

Eigenschappen

SilverSession

BasementHelper

  • BasementHelper
  • Open Database Connection: Validators for Open Databases
  • RecordExistsInTableByColumnValues
  • Security voor menu items

Rechten en Rollen Tabellen

  • Tabel: SecurityRoles
    • ID - GUID
    • Code - String
    • Description - String
  • Tabel: SecurityRolelinks
    • ID
    • Description
    • EntityID
    • SecurityRoleID
    • Active

BusinessController
SecurityRole

BusinessController
SecurityRoleLinks

LookUp
SecurityRoles

CopyAction
AddRoleToEntity

Basement: RecordExistsInTableByColumnValues

  • Toggle Switch
    • 0: True is ook True
    • 1: If True then False, If False then True
  • DataTableName
    • Bijvoorbeeld koppeltabel: Rol and Gebruiker
    • Maar ook: Klant in Ordertabel
  • Values (Array)
    • Tussen accolades
    • Vaste waarden
      • Blocked=0
    • SilverSession.<<Property>>
      • SilverSession.SecurityLevel

BasementHelper

  • BasementHelper
  • Open Database Connection: Validators for Open Databases
  • RecordExistsInTableByColumnValues

Security: Basis

  • Snel inrichten
  • Per CRUD actie: Allow of Block
  • Internal en External Users

Security: PreCheck

  • Wel meer werk
  • Maar ook: Betere beveiliging

Security: Filters & Exceptions

Security: PreCheck

Tips & Tricks

  • Views aanmaken
    • Data “voorbereiden”
      • Als compacte dataset
      • Juiste Kolomnamen
    • Complexe Queries (performance)
    • Ondersteunende Data
      • Tellers, Totalen
      • Extra BaseEntity in BusinessEntity
  • Testen: ConfigStore=Session
  • Deactiveer de SecurityRoleLink

Handige Links

Silver Essence

On-boarding: Configuratie Training: Dag 5

Voorbeeld XML

Import/Export

Methode

XML

XML Factuur

  • Exporteer een Verkoopfactuur
  • Bekijk de inhoud van de XML
    • Welke velden lijken overbodig?
      • Verwijder deze velden
  • Sla de wijzigingen op
  • Importeer het afgeslankte bestand
  • Maak het bestand zo compact mogelijk

XML Exporteren

SilverBusinessEntity
Factuurkopregel

LinkedList
Factuurregels

SalesInvoice

SalesInvoiceLine

SalesInvoice
&
SalesInvoiceLines

XML Exporteren

SilverBusinessEntity
Factuurkopregel

LinkedList
Factuurregels

SalesInvoice
&
SalesInvoiceLines

XML Exporteren

  • XML-Sjabloon
    • Voorbeeld XML
    • Samenvoegvelden
  • Export Configuratie
    • Constraints
    • SaveAction
    • UploadAction

XML Exporteren

<SilverRepeater

dataSource="SilverBusinessEntity:InvoiceHeader">

</SilverRepeater>

<SilverRepeater

dataSource="SilverBusinessEntityList:InvoiceLines">

</SilverRepeater>

XML Exporteren

<Description>

Nalevering Januari 2015

</Description>

…….vervangen door….

<Description>

BusinessEntityProperty:InvoiceHeader.Description

</Description>

Herhaling

  • Happy Flow
    BaseEntity, BusinessEntity, BusinessControllers
  • Methodes
    Functies - Voorgedefinieerde Update
  • CopyActions
    Van - Naar acties
  • LookUps
    Selectielijsten
  • ControllerMasks
    Mobiele variant
  • Security
    Cases doornemen

Happy Flow

Mapping
Domains

Mapping
BaseEntities

Modeling
BusinessEntities

Modeling
Bus.Controllers

Modeling
Bus.EntityLists

Happy Flow

Een BaseEntity is niet gepromoveerd naar BusinessEntity.
Waarom zou dit niet gedaan zijn?

Happy Flow

Een BusinessEntity bestaat uit een OData en een OleDB BaseEntity.

Met welke 2 beperkingen dien je rekening te houden?

Happy Flow

Waar of niet waar?

Bestanden uploaden vereist altijd 2 Properties.

Happy Flow

Er wordt een verwijderactie gedaan met een BusinessEntity die uit 3 OleDB BaseEntities bestaat.

Uit minimaal hoeveel tabellen worden records verwijderd? Uit hoeveel tabellen maximaal?

Happy Flow

Waar of niet waar?

Als een Property in de BaseEntity op alleen-lezen is gezet, kun je het veld niet in de User Interface bewerken, maar wel vanuit methodes of via de webservice.

Happy Flow

Wat is het verschil tussen Required in de BaseEntity Property en in de BusinessEntity Property? Is er eigenlijk wel een verschil?

Happy Flow

In welk geval is het niet mogelijk om een BaseEntity te promoten naar een BusinessEntity? Welke 2 gevallen kunnen hier de oorzaak zijn? Hoe kun je dit oplossen?

Happy Flow

Welke 3 “smaken” zijn er om bij een BusinessEntity Property een standaard waarde voor te laten vullen?

Methods

  • Maak voor de Organisatie-kaart een button aan, waarmee “Mailing Toegestaan” aan of uit gezet kan worden.

Methods

Noem 5 plekken in de configuratie/user interface waar je gebruik kunt maken van Methods.

Methods

Waarin verschillen Pre-Methods en Post-Methods van elkaar?

CopyActions

  • Maak voor de Organisatie-kaart een button aan waarmee een ToDo kan worden toegevoegd.
  • Zorg ervoor dat na het aanmaken van de ToDo de relatiekaart getoond wordt met daarbij de ToDo’s direct als lijst onder de Organisatie.
  • Zorg ervaar dat na het aanmaken van een ToDo, automtisch Mailing Toestaan aan is gezet.

CopyActions

Stel, een BusinessEntity heeft een aantal waarden die worden overgenomen van de bron tijdens de CopyAction. Hoe kun je voorkomen dat de gebruiker de BusinessEntity aanmaakt buiten de CopyAction om?

CopyActions

Via een CopyAction kan bij een Organisatie een ToDo worden aangemaakt. Hoe schakel je het uit dat deze CopyAction niet beschikbaar is als de Organisatie geen “Verkoop Organisatie” is?

CopyActions

In de BusinessEntity Property is aangegeven dat het veld niet zichtbaar is bij invoer. Bij de CopyAction is aangegeven dat het veld optioneel gewijzigd kan worden. Wordt het veld nu wel of niet getoond in de CopyAction.

LookUps

  • Maak een tabel Samples met de volgende velden:
    SampleID, Code, Description en Checked (Ja/Nee)
  • Volg de Happy Flow en voer enkele Samples in
  • Maak een LookUp voor de tabel Samples die alle records uit de tabel laat zien.
  • Maak een LookUp voor de tabel Samples die alleen de records toont die nog niet gechecked zijn.

LookUps

Selectielijsten in de user-interface kunnen afhankelijk van elkaar zijn, bijvoorbeeld Land & Provincie of Relatie& Contactpersoon. Hoe wordt deze afhankelijkheid bepaald?

LookUps

Bij het maken van een LookUp zullen er vaak een ongefilterde en een gefilterde variant benodigd zijn.

Waarom ook al weer?

ControllerMask

  • Maak een ControllerMask:
    Organisaties op Plaats

Security

Welke 3 verschillende gebruikerstypes kun je onderscheiden in de security van Silver Essence?

Security

Een gebruiker voert een nieuw gegeven in en bewaart de invoer. Maar vervolgens kan het ingevoerde gegeven niet gevonden worden. Is het aanmaken dan wel gelukt? Wat zou er nog meer aan de hand kunnen zijn?

Security

Welke 3 mogelijkheden om waarden te filteren kun je gebruiken?

On-boarding: Configuratie Training - Google Slides