Popolamento delle tabelle di Vibecode
INDICE
Dopo aver installato Vibecode si può procedere con il popolamento delle sue tabelle, uno dei metodi utilizzabili è l’importazione dei file core object, file di dati scaricati precedentemente da un altro Vibecode (ad es. per popolare le tabelle di dati come Nazioni/Province/Comuni, ecc.).
Dopo aver importo tutti i dati si passa al popolamento delle tabelle delle classi sincronizzate, utilizzate dalle APP mobile (POSible/RA/CDC) per lo scambio dati con Vibecode.
I core object possono essere utilizzati anche quando Vibecode è completamente operativo, per popolare nuove tabelle o aggiornare le tabelle delle classi sincronizzate.
Dopo ogni modifica alla tabelle delle classi sincronizzate e necessario procedere alla rigenerazione dei pacchetti trasmessi alle APP client, come descritto nel paragrafo: Preparazione dati per la sincronizzazione.
Popolamento tramite core object
E' possibile utilizzare i core object per popolare la maggior parte delle tabelle Vibecode. I core object consentono l’import/export dei dati delle tabelle Vibecode mediante un file script di comandi vibs di Vibecode.
Dall’albero del Vibecode origine dei dati selezionare la voce:
Amministratore > Class Repository > Classi di Vibecode
inserire il nome della tabella da cui scaricare i dati, fare una ricerca e selezionare la riga interessata. Per accedere alla sezione per la creazione del file di export è necessario cliccare sul bottone [Export Data].
Nella sezione GenObjectScript l’utente può inserire un filtro (vedi doc: Filtri ) per selezionare/limitare il numero di record della tabella da esportare nel file oppure può elencare i campi della tabella che vuole esportare, valorizzando il campo PropsToExport; cliccando sul bottone Genera viene creato il file di script con i dati esportati.
Il campo Keys invece viene utilizzato, ad esempio, per l’export della tabella kOfflineClasses, inserendo il valore “Alias”, per eliminare il campo ID dai record esportati.
Il file di export viene creato con il nome: nomeTabella.txt, contiene i dati della tabella e può essere poi importato nel Vibecode di destinazione, accedendo alla voce di menu:
Amministratore > Files da importare > Importazione files di core
Popolamento tabelle sincronizzate
Le tabelle OFFLINE e le SUBSCRIPTION contengono le informazioni per la gestione della sincronizzazione e lo scambio dati tra l’APP client (es. POSible, CDC, ecc.) e Vibecode:
elenco dei DataSource;
elenco delle APP che utilizzeranno i dati di Vibecode;
setup dei servizi REST di alcune tabelle non sincronizzate;
elenco di tutte le tabelle sincronizzate utilizzate dalle APP client.
Anche in questo caso l’utente può utilizzate i core object, seguendo le indicazioni descritte nel paragrafo Popolamento tramite core object per la creazione dei file di export.
E' necessario importare nella giusta sequenza i dati scaricati, altrimenti la procedura va in errore, ed eseguire le istruzioni di configurazione della coda e della schedulazione, queste due operazioni vanno fatte solo la prima volta.
Sequenza di import dei dati e istruzioni:
kApplication.txt
kSubscriptionExport.txt (data source)
creazione di una queue, con nome “offline”, accedendo alla voce di menu Vibecode:
Amministratore > Coda > Configurazione > Configurazione Coda
Infine devono essere importati i seguenti file:
kOffLineClasses.txt (tabelle sincronizzate)**
kOfflineRESTGenericSetup.txt
kOfflineRESTSetup.txt
**Nota bene:
Per creare correttamente il file di export dei dati della tabella kOffLineClasses è necessario impostare i seguenti parametri:
PropsToExport - inserendo i seguenti valori Class,Alias,Active,DataSource,Mode,Fields,Priority,InheritsPublicationFrom,InheritsRefPath,DifferentAppPublication,Subscription.Application
Keys - inserendo il valore Alias
per eliminare il campo ID dai record esportati
In alternativa l’utente può anche usare un comando per eseguire una chiamata al servizio GenObjectsScript dal browser:
http://servername:port/execservice.vcmd?commands=GenObjectsScript%20classname(kOfflineClasses)%20filter()%20propsfilterlist(Class,Alias,Active,DataSource,Mode,Fields,Priority,InheritsPublicationFrom,InheritsRefPath,DifferentAppPublication,Subscription.Application)%20addsecurity(true)app(core)
impostando i parametri per i campi Filtro, PropsToExport e Alias. La chiamata crea un file di export che viene poi scaricato in automatico nella cartella Download del PC.
Preparazione dei dati per la sincronizzazione
Conclusa la fase di importazione dei dati è necessario eseguire una serie di comandi, presenti sia nell’albero di Vibecode che nella vista “Classi Sincronizzate”, per preparare i pacchetti per la sincronizzazione dati con il client:
Sottoscrizioni > Sincronizzazione offline > Sincronizzazione offline > Classi sincronizzate
Refresh Offline Cache - ripulisce la cache dell’Offline
Total CleanUp - cancella tutti i vecchi package delle classi sincronizzate;
Publication - determina quali record devono essere inviati al client (es. POSible, RA app, ecc.) e notifica la cancellazione di un record o la rimozione di un record dalla pubblicazione;
Generate Packages - genera o rigenera i nuovi package di dati che verranno inviati al client.
Gli ultimi due comandi creano, ognuno, un processo nelle code offline ma tale processo viene eseguito una sola volta. Deve quindi essere creata una schedulazione per fare in modo che questi processi vengano eseguiti periodicamente. L’utente deve editare il processo per impostare i parametri della schedulazione per l’esecuzione del task (ad es. ogni 5 minuti, tutti i giorni, per la Generate Packages) accedendo alla voce di menu:
Amministratore > Activity Monitor > Code > Manage Process Queues
come descritto nel documento “Schedulazione processi in Vibecode“.
Nel paragrafo che segue sono elencate alcune tabelle sincronizzate utilizzate da POSible.
Classi sincronizzate
La sincronizzazione delle tabelle consente lo scambio dati tra Vibecode e il client (es. POSible, Customer Data Capture, ecc.) e viceversa.
L’utente può accedere all’elenco delle tabelle sincronizzate dall’albero di Vibecode:
Sottoscrizioni > Sincronizzazione offline > Sincronizzazione offline > Classi sincronizzate
Nella parte dei dati principali (Figura 1) l’utente deve impostare i seguenti parametri:
Classe: nome della classe Vibecode
Attivo: se impostato a No i pacchetti di dati non vengono generati per questa classe (Sì\No)
Alias: identificativo condiviso tra Vibecode e i dispositivi che identifica la classe esportata
Nel box Export Data (Figura 2) l’utente deve impostare i seguenti parametri:
Priorità: nel caso di tabelle dipendenti indica quale sincronizzare prima;
DataSource: contiene il nome della sorgente dati sottoscrizioni (kSubscriptionExport);
Campi: contiene l’elenco dei campi della tabella da esportare e inviare al client (es. POSible/RA app);
Mode: indica la modalità di sincronizzazione della tabella (“OneWay”, “TwoWay”, “OneWayToServer”).
Nel box Export Filter (Figura 2) l’utente può impostare i seguenti parametri:
Global Filter: specifica un filtro generale sui record da esportare;
Copy Publication Filter From offlineclass: consente di derivare la configurazione di questa sezione da un altra classe (ad es. la classe ProductImage prende la configurazione da Product);
Different app publication: se impostato a No la sincronizzazione passa lo stesso set di dati a tutti i client, altrimenti per ogni client viene passato un set di dati differente, come definito nel box Sottoscrizioni (kOfflineClasses_Subscription).
L’utente può modificare i valori dei parametri della tabella sincronizzata, ad es. l’elenco dei campi che vengono trasmessi al client, ma la modifica avrà effetto solo dopo aver eseguito, nella corretta sequenza, i seguenti comandi:
Refresh Offline Cache
Total CleanUp (opzionale)
Offline Publication All
Generate Packages All
Modalità di sincronizzazione delle tabelle tra client e Vibecode
OneWay = monodirezionale da Server a Client (valore del parametro: 1).
OneWayToServer = monodirezionale da Client a Server (valore del parametro: 2), i record inviati dal Client sono presenti nell'array "rows".
TwoWay = bidirezionale, i record inviati dal client sono presenti nell'array "rows" (valore del parametro: 0 [zero]).
*Mode = modalità di sincronizzazione
Class | DataSource | Mode* | Global Filter |
Company (kCompany) | OfflineCompany | OneWay | |
Country (kCountry) | OneWay | ||
Coupon Type (kCouponType) | OneWay | ||
Currency (kCurrency) | OneWay | ||
Gender (kGender) | OneWay | ||
Gift Card Group (kGiftCardGroup) | OneWay | ||
Generic Sale Reason Code (kGenericSaleReasonCode) | OneWay | ||
GiftCard Transaction Reason Code (kGiftCardTransactionReasonCode) | OneWay | ||
Municipality (kMunicipality) | OneWay | ||
Municipality ZipCodes (kMunicipality_ZipCodes) | OneWay | ||
OFFLINE REST (kOfflineREST) | OneWayToServer | ||
Payment Term (kPaymentTerm) | OneWay | ||
POS Department (kPOSDepartment) | OneWay | ||
POS Tiles Setup (kPOSTileSetup) | OffLineTileSetup | OneWay | field(POSTileSetup@kStore.Id) eq('#value#') |
Price Calendar (kPriceCalendar) | OneWay | ||
Price Calendar Type (kPriceCalendarType) | OneWay | ||
Product Attribute (kProductAttribute_values) | OneWay | ||
Product Attribute (kProductAttribute) | OfflineProductAttribute | OneWay | |
Product Attributes Set (kProductAttributeSet) | OfflineProductAttributeSet | OneWay | |
Product Barcode (kProductBarcode) | OneWay | ||
Product Brand (kBrand) | OneWay | ||
Product Catalog (kProductCatalog) | OneWay | ||
Product Category (kProductCategory) | OfflineProductCategory | OneWay | |
Product Class (kProductClass) | OneWay | ||
Product Department (kProductDepartment) | OneWay | ||
Product Department Explosion (kPOSDepartmentProducts) | OneWay | ||
Product Description (kProductStyleDescription) | OneWay | ||
Product Fiscal Group (kProductFiscalGroup) | OneWay | ||
Product Group (kProductGroup) | OneWay | ||
Product Kit (kProductKit) | ProductKit | OneWay | field(1) eq(1) and(field(startdate) nu('') or(field(startdate) le(to('date',getdate())))) and(field(enddate) nu('') or(field(enddate) ge(to('date',getdate())))) |
Product Kit Lines (kProductKit) | ProductKitLine | OneWay | field(1) eq(1) and(field(parentid.startdate) nu('') or(field(parentid.startdate) le(to('date',getdate())))) and(field(parentid.enddate) nu('') or(field(parentid.enddate) ge(to('date',getdate())))) |
Product Kit Line Group (kProductKit) | KitGroups | OneWay | |
Product Relation (kProductRelation) | OneWay | ||
Product Relation Type (kProductRelationType) | OneWay | ||
Product Serial (KProductSerial) | OneWay | ||
Product Status (kProductStatus) | OneWay | ||
Products (kProduct) | OffLineProduct | OneWay | |
Products Images (kProduct_Images) | Offline Product Image | OneWay | |
Products Taxes Relations (kProductTaxRelationExplosion) | OneWay | ||
Receipt Message (kReceiptMessage) | OneWay | ||
Receipt Suspended (kReceiptSuspended) | TwoWay | ||
Return Reason Code (kReturnReasonCode) | OneWay | ||
Sales Discount Reason Code (kSalesDiscountReasonCode) | OneWay | ||
Sales Price (kSalesPrice) | OneWay | ||
Sales Price Discounts (kSalesPrice_Discounts) | OneWay | field(1) eq(1) and(field(parentid.enddate) nu('') or(field(parentid.enddate) gt(to('date',getdate())))) | |
Sales Price Group (kSalesPriceGroup) | OneWay | ||
Sales Price Type (kSalesPriceType) | OneWay | ||
Season (kSeason) | OneWay | ||
State Province (kStateProvince) | OneWay | ||
Stock Area (kStockArea) | OneWay | ||
Store (kStore) | OfflineStore | OneWay | |
Store Effective Prices (kStore_EffectivePrices) | OneWay | ||
Store Official Prices (kStore_OfficialPrices) | OneWay | ||
Store Till Discount ( kPOSStoreTillDiscount ) | OneWay | field(store.code) eq('01') | |
Style Relation (kStyleRelation) | OneWay | ||
Supplier (kSupplier) | OfflineSupplier | OneWay | |
Tax (kTax) | OneWay | ||
Tile (kPOSTile) | OneWay | ||
Tile Products (kPOSTileProducts) | OneWay | ||
Till Discount (kTillDiscount) | OneWay | ||
Tipping Rule (kPOSTippingRule) | OneWay | ||
Tipping Rule Tipping Options (kPOSTippingRule_Options) | OneWay | ||
Unit of Measure (kUnitOfMeasure) | OneWay | ||
VAT (kVATCode) | OneWay | ||
VAT Exemption Reason (kVATExemptionReason) | OneWay | ||
Void Reason Code (kVoidReasonCode) | OneWay |