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.
========== ========== ========== ========== ========== ==========