Archive for 22/11/2019

Uniface plugin?

Ho pubblicato sul sito di 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???
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
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
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.
========== ========== ========== ========== ========== ==========