Archive for Rilascio

Uniface plugin?

Ho pubblicato sul sito di uniface.info il post che segue in questa pagina.
Qualcuno vuol dire la sua qui in italiano?

========== ========== ========== ========== ========== ==========
Hi Unifacers,

In the current IT world driven from integrations could it be of interest to the Uniface world to have a standardized mode to develop and deploy plugins to Uniface apps? IMHO…YES!

I do not remember this specific subject being discussed, but it could be I was not part of the discussion or I have simply forgotten about it!

Pro…? Cons…? Pitfalls…? Tips…? Suggestions…?

Let’s argue about it!
========== ========== ========== ========== ========== ==========

UNIFACE plugins

Definition: a uniface plugin could be a full application (launcher, monitor, configurator, …) or a part of an application (module, library, …) that can be used together or integrated within a Uniface application. Each plugin is dedicated to a single business or technical object. Base for each plugin should be a microservice architecture, extended with a re-susable presentation layer.  The word “plugin” is used to identify a software that can easily be re-used in any Uniface installation and configuration.

Perimeter (DRAFT) for a “whatever” plugin:
SelfContainedUARname: UP_XXXX_whatever_VVV where:
– XXXX is a unique identifier of plugin provider
– whatever is the concept implemented in the plugin
– VVV is the plugin version
each plugin provider is responsible to maintain plugin info updated
Mission: [short description (max 250 char) defining the plugin interface perimeter]
PluginVersion: x.y[.z]
UnifaceVersionsSupported: Ux.Uy[, Ux1.Uy1][, Ux2.Uy2]
ComponentsNames: XXXX_*
GlobalObjects: Each plugin component is connected to its library named XXXX_*
Objects being part of SYSTEM_LIBRARY should have their names starting with XXXX_*
$variation and $language MUST be saved and restored from ALL plugin interactions
Objects being part of USYS variation should have their names starting with XXXX_*
Security: None | ???TBD???
DBMS: None | XXXX_APPMODEL
UserInterface: None | Char | C/S | Web
LanguagesSupported: “USA” MUST be supported! Further list of international codes from ISO-639-3
ServicesPerimeter: None | Uniface | LAN | Internet
PrintingPerimeter: None | Uniface | OtherToBeSpecified
DataExchangePerimeter: InLine | LocalFolder | MailBox | OtherToBeSpecified
OperationsList: simpleListOfOperationsAvailableWithoutParams but a short description
PresentationComponents: simpleListOfPresentationComponents with attribute: Contained | Indipendent and a short description
OtherPluginPreRequisites: None | ListOfOtherPlugin(s)ThatMUSTbeAvailable
PluginOptionals: None | ListOfOtherOptionalPlugins
OtherTechPreRequisites: None | ListOfOtherTechPreRequisites
DeliveryMode: OpenSources | UARonly | withSourcesIfRequested
TechDocumentation: None | Samples | Included
Contact: eMailAddress

Let’s try with an example
(thanks to Theo Neskeens providing initial GoogleMap Integration sample):
SelfContainedUARname: UP_GSAN_GMAP_100
Mission: Interface to Google Map, Services and Presentations
Version: 1.0.0
UnifaceVersion: 9.7
ComponentsNames: GSAN_*
GlobalObjects: None
Security: None
DBMS: None
UserInterface: C/S
LanguagesSupported: ITA
ServicesPerimeter: Internet
PrintingPerimeter: Uniface, GSAN_UPDF plugin
DataExchangePerimeter: InLine
OperationsList:
GSAN_GMAP_SVC.getDistance() get distance in km between two GeoPoints|Addresses|POIs in an UIL
GSAN_GMAP_SVC.getPathFromTo() get traveling steps between two GeoPoints|Addresses|POIs in an UIL
GSAN_GMAP_SVC.getStaticMap() get static map related to a GeoPoint|Address|POI in an UIL
PresentationComponents:
GSAN_GMAP_MAP Contained form showing either static or dynamic maps
OtherPluginPreRequisites: None
– <strong>PluginOptionals: GSAN_UPDF: to interactively print map to PDF
– OtherTechPreRequisites: Google Developer Account must be setup
DeliveryMode: UARonly
TechDocumentation: Samples
Contact: name.surname@domain.ext

Simpler HowTo:
– Add reference to UP_GSAN_GMAP_100 UAR file to the [RESOURCES] section of your ASN file
– Use in your application activate “GSAN_GMAP_SVC”.getDistance() with documented parameters to get distance between two addresses.
========== ========== ========== ========== ========== ==========

Migliorare le applicazioni Uniface esistenti

Negli ultimi due mesi sono stato spesso coinvolto in attività di consulenza mirate a migliorare applicazioni Uniface esistenti.
Ci sono a tutt’oggi in produzione, sia a livello internazionale che in Italia, applicazioni Uniface 5, Uniface 6, Uniface 7, Uniface 8 e, ovviamente, Uniface 9.
L’ambiente di sviluppo si è ampiamente evoluto nei suoi 30+ anni di presenza sul mercato ed ancora oggi continua ad evolvere piuttosto rapidamente: la nuova versione Uniface 10 ne è l’immediata controprova.
Le nuove funzionalità, rese disponibili nel corso degli anni, vanno integrate nelle modalità di sviluppo originarie facendo attenzione a mantenere l’integrità funzionale dell’applicazione originale.

Nella prima fase di queste attività si esplorano gli “Standard & Guidelines” adottati nello sviluppo dell’applicazione, che nella terminologia corrente vengono denominati “Framework di sviluppo”.
Analizzando il modo con cui l’applicazione è stata sviluppata si possono tracciare le linee di potenziale miglioramento, che ricadono in 6 possibili passi:

  1. Da “Stacked forms” char a “Stacked forms” GUI
    2. Da “Stacked forms” GUI a “NonModal forms” GUI
    3. Su “NonModal forms” GUI inclusione di una API applicativa
    4. Da “NonModal forms” GUI a “Web 2.0 pages”
    5. Da “Web 2.0 pages” a “Mobile pages”
    6. Da “Mobile pages” a “Fully partitionable application”

Lo sforzo necessario per ammodernare un applicazione è ovviamente funzione del punto di partenza e del punto di arrivo selezionato. Conviene definire tre obbiettivi: uno a breve, uno a medio ed uno a lungo termine; in questo modo risulta in genere possibile miscelare la quotidiana attività di manutenzione evolutiva dell’applicazione con gli obbiettivi di miglioramento aziendali rilasciando progressivamente le novità sviluppate sul proprio mercato di riferimento.

Chi volesse approfondire l’argomento mi contatti: gianni.sandiglianoATunifacesolutions.com

Installazione di Uniface – Problemi con Uniface Tomcat?

Installando Uniface in ambiente Windows vengono configurati alcuni servizi all’interno del sistema operativo in modo che l’ambiente Uniface si avvi automaticamente all’avvio del sistema stesso.

Fino alla versione U9.6 i servizi Windows configurati sono stati 3:
– Uniface URouter
– Uniface Tomcat
– Uniface SolidDB
A partire dalla versione U9.7 si riducono a 2 essendo SolidDB stato sostituito da SqlLite come DBMS di default di ogni installazione.

Durante il processo di installazione vengono richiesti i vari parametri che contribuiscono all’installazione dei vari servizi. Eventuali problemi di installazione di URouter o di SolidDB, ad esempio una sovrapposizione della porta TCP in ascolto con altri software o con altre versioni di Uniface, possono essere facilmente individuati e debuggati analizzando i relativi log files.

Un poco più complessa è la configurazione di Tomcat, costituita dalle varie variabili di ambiente necessarie a questo software che svolge funzione di “application server”. Può capitare che l’installazione di Tomcat si sovrapponga ad altri software installati utilizzanti anch’essi questo “application server” piuttosto diffuso.
Come si fa a verificarla ed eventualmente modificarla dopo l’installazione?

Per prima cosa bisogna procurarsi la stringa di comando per l’avvio del servizio Uniface Tomcat definita all’atto dell’installazione di Uniface. Per fare questo è sufficiente dalla Microsoft Management Console dedicata ai servizi del sistema operativo accedere alle proprietà del servizio incriminato. Vi troverete dinnanzi ad un formato simile a questo:

<DISK:><PATH>tomcat8.exe //RS//<YourServiceID>

Copiate l’intera riga di comando e incollatela in una finestra di “prompt dei comandi”, modificandola in questo modo:

<DISK:><PATH>tomcat8W.exe //ES//<YourServiceID>

Le modifiche apportate sono 2:
– Aggiunta del carattere W al termine del nome dell’eseguibile prima del punto separatore dell’extension, per puntare ad un altro eseguibile disponibile nell’installazione di Tomcat.
– Nel primo parametro modifica di //RS// (che significa Run Service) con //ES// (che significa Edit Service)

Eseguite il vostro comando e vi troverete in una finestra che vi permetterà di modificare i parametri del vostro servizio Uniface Tomcat.

Per chi fosse interessato ad un approfondimento sul tema, consiglio la lettura della pagina: https://tomcat.apache.org/tomcat-8.0-doc/windows-service-howto.html

Buona lettura!

Sviluppo applicazioni Web – Mobile

Con il rilascio della versione 9.7.02 si è aperta la possibilità di sviluppare e rilasciare applicazioni mobile con Uniface.

Lo sviluppo con Uniface di applicazioni mobile presuppone conoscenza nello sviluppo di applicazioni Web con integrazione delle tecnologie che stanno alla base del web 2.0 (HTML5 / CSS3 / Javascript) nel contesto delle DSP (Dynamic Server Pages), la cosiddetta “programmazione lato browser”.

Al fine di permettere agli sviluppatori Uniface Desktop (Client/server) di approcciare lo sviluppo web/mobile DA ZERO gli ULab hanno rilasciato sul canale YouTube dedicato a Uniface una serie di filmati che sono raccolti in un articolo introduttivo disponibile su uniface.info alla pagina:

http://unifaceinfo.com/html5-javascript-css3-training-videos-uniface-developers-uniface-info/

I brevi filmati chiariscono alcuni punti fermi dello sviluppo Web/Mobile, dando un compito specifico ad ognuna delle tecnologie di base coinvolte nella programmazione lato browser:

  1. HTML5: gives a meaning to data.
  2. CSS3: styles elements presented on screen, paper, or other media.
  3. Javascript: a scripting language to enable interactive sites.

Nell’ambito dei filmati viene fatto riferimento ad un paio di siti di supporto:
1) http://caniuse.com che costituisce uno dei principali riferimenti per conoscere il livello di supporto, e di conseguenza la portabilità, di una specifica funzionalità della programmazione lato browser.
2) http://css3generator.com che permette un approccio semplificato a quelle direttive CSS3 che dovessero essere differenziate e/o moltiplicate nella loro sintassi per ottenere una effettiva portabilità attraverso i vari browser e le loro versioni.

Un’ultima avvertenza, consiglio la visione dei filmati in quest’ordine:
1) HTML5
2) CSS3
3) Javascript

Buona visione!

Uniface applications in modalità “readonly”

Negli ultimi anni è diventata sempre più pressante l’esigenza di proteggere i sistemi informativi aziendali, che permettono il regolare svolgersi della quotidianità, dalle invasioni indesiderate di agenti esterni come virus o da azioni inconsulte da parte di maldestri utenti.

Affiancando questa esigenza a quella di un regolare e progressivo aggiornamento dell’ambiente Uniface Runtime, abbiamo deciso di sviluppare un semplice script shell che si occupasse in modo completo dell’avviamento di un (sotto)sistema sviluppato con Uniface in un ambiente di produzione.

Questo script shell, particolarmente utile da quando il numero di utenti supera le 50 unità, permette di:
– Avere un unico e standardizzato criterio di avviamento a cui far puntare le icone di avvio di TUTTI gli utenti;
– Standardizzare e configurare in maniera nettamente separata l’area programmi e l’area dati di un (sotto)sistema;
– Riconoscere le varie directory di riferimento e di lavoro dell’applicazione con delle semplici chiamate;
– Mettere in linea un aggiornamento dello Uniface Runtime in modo progressivo prima agli utenti pilota e poi a tutto il resto dell’utenza configurando semplicemente un paio di files;

Chi volesse avere maggiori informazioni su questo criterio organizzativo per il rilascio in produzione di applicazioni Uniface mi contatti.

Uniface & Windows Registry

Ad oggi Uniface, quando eseguito su piattaforma MSW o derivate, utilizza il registry di Windows per conservare diverse informazioni; dalla documentazione fornita con il prodotto è possibile ricavare un elenco di tali categorie di informazioni:
– Component States
– Logical printers
– Command line history
– Installation information
– COM options
– Application Informations
– Initialization Settings

Alcune di queste informazioni hanno cambiato posizione di base all’interno del registry nel passaggio dalla versione U9.6 alla U9.7, a seguito dell’abbandono di tutti i riferimenti al vecchio proprietario del prodotto. Quello che in precedenza era salvato sotto:
HKEY_CURRENT_USER\Software\Compuware\Uniface\USYS9\State\
a partire da U9.7 è salvato sotto:
HKEY_CURRENT_USER\Software\Uniface\Uniface 9\State\
E’ garantita compatibilità con il passato in quanto la vecchia posizione viene comunque letta anche da U9.7 ma i nuovi salvataggi avvengono sempre nella nuova posizione.

Ho sviluppato alcune funzionalità aggiuntive al prodotto per dare visibilità a quanto suddetto; chi fosse interessato può contattarmi attraverso questa discussione oppure con uno tra i canali più consueti.

URouter Monitor migliorativo

Dalla Spagna ricevo e pubblico informazioni relative ad una versione migliorativa del monitor di URouter distribuito con l’ambiente Uniface. Risulta particolarmente utile in configurazioni con un numero significativo di utenti (> 50).

**********

UMO is an Uniface standalone application that uses UnifaceMonitor API to control URouter.

Features

  • Visual enhancement of standard Uniface Monitor tool
  • Remembers all urouters you connected to
  • Remembers users and passwords
  • Allows vision only or privileged access
  • Allows kill specific uservers or using a profile
  • Allows start uservers for specific UST
  • Shows statistics for every UST
  • Records statistics in database (when is running)
  • Order urouter to re-read asn file

Information about each userver is clear and multilanguage using tooltips to explain the meaning of fields.

UMO

  1. Connect
  2. Start/stop recording stats
  3. Filter (future use)
  4. Login as super-user
  5. Show uservers only or connected clients
  6. There is no six
  7. Refresh
  8. Start/Stop/Statistics about uservers (same as right-click over uservers)
  9. Show/Hide 10
  10. Info about selected userver
  11. Uservers running

Control-K changes theme colors

**********

Ringrazio Luis Vila, colui che ha sviluppato e distribuisce tale applicazione, e mi metto a disposizione per fornire maggiori informazioni agli eventuali interessati.