31 mars 2020
This two months, three main points
a lot of work to clean all the older test and trying to homogenize all Vue.Js components,
at the field level, direct manage title, so a more material design UI,
a lot of finishes for the contactMech component so a very nice screenlet
After the two main first agile steps, a lot of try-error have been done and the first solution found
to solve a technical point was’nt the good one all the time.
After one month of usage by the user (on a tiny functional perimeter), it was time to clean work before next step
remove all code associated to "no-more used options"
homogeneization of code in all the generic components
clarification in field name, computed and method
commonUilLabel available in all components
some module upgrade, some remove for un-used, and icon handling result in a better build performances.
manage help field text as tooltips
manage textArea field
new uri (and a groovy) to be able to send all CommonUiLabel necessary to Vue.Js generic component, load only at the first application load on browser.
With Material Design, in single form, find or edit, title is included in the field, in our component it was difficult to use all the vuetify-field functionalities, because title was send at the same level than field ( FieldRowTitleCell and FieldRowWidgetCell ).
FrontJsFormRenderer has been modified to have the Title properties in Field properties, so json send is more simple and field rendering by vuetify is nice.
Currently we have choose to not manage all text-field attributes, only those for which we have a use case and which seem necessary, for example: size attribute seem to not be be necessary with vuetify.
ContactMech is our first specifics component to demonstrate how to manage ftl replacement in a Vue.Js environment.
With the users, a lot of little details have been enhance or corrected to have a nice and compact presentation.
ContactMech can be used in multiple context, so most party related name have been managed by parameters.
Params are managed in the <screen>, in the <action> section, and if this screen should be included in an other screen
it’s possible to overload these parameters.
Currently there are 3 types of parameters :
uri to dialog with back-office, get or put informations
which contactMechType and which purpose should be show in summary view
uiLabel dedicated for this component (they are still some english fixe labels but not for a long time ;-)
There are still some enhancements or functionnalities to add to this component, but now, it’s really usable for the POC about Modular and generic UI
a lot of corrections / adaptations after last vuejs update
unit test for party portlet, and so more generic methods created by migration from example methods
generic test method done for contactMech screenlet
31 janvier 2020
This month, no large changes only some cleaning and some small and simple enhancements
for platform-specific > html > vuejs : parameters management
Now parameter are send with the correct field type.
With this modification it’s no more necessary to have workaround for lookup-result in label
in install vuejs-portal plugin, add a short shell to create links in place of copy of files in OFBiz, it’s useful for developers.
start to remove FieldRowTitleCell and FieldRowWidgetCell and data are directly in field, so it will be more easy to manage title field with vuetify.
Start a document which will be reference all portlets, and there documentation associated.
Currently use existing docbook doc migrate to asccidoc for party-portlet and example.
Include in ofbizextra website a menu entry for this screenlet reference list
continue cleaning generic component
all ofbiz patch re-creation after Apache-OFBiz move to git
continue cleaning of FrontJsRenderer (cf JIRA OFBIZ-11310)
documentation about exampleFjs are now in the component
corrections / adaptations after last vuejs update
unit test for party portlet, and so more generic methods created by migration from example methods
31 décembre 2019
This month, no large changes only some review and some corrections / enhancements
VueTextFindField without ignoreCase
currentAreaId, it’s always available in showPortlet so call it correctly
form validation at the field level (mask, required, maxlength) now it’s operational (and tested ! )
review lookup to be independent from formName calling lookup
manage lookup with params
manage fieldGroup with vuetify
default-entity is no more mandatory in form, if not present store-entity is not used and so, will be update only if this portlet is refresh
Short review / update for some simple older things (like specialpurpose versus plugin ;-)
Start review javadoc and comment for FrontJsRenderer (cf JIRA OFBIZ-11310)
start review / refactoring / cleaning VueJs app
We have added a new demo-vuejs environment, update with "stable" code.
Unlike ofbiz-selenium environment vueJs application
demo-vuejs is compile with prod option, so app is more speed.
Demo-vuejs should be more stable without long failed period ;-)
After the corrections and enhancements, the VueJs selenium test have been updated to test
form control at field level
drop-down
if theme is correct in the login process
A selenium scenario is started for PartyMgrFjs, it will be completed with existing test coming from 13.07.
For this new test, some example methods have been generalize and so move in general helper class.
POC Vue.js, to present it and what is working;
GUI modularity and attributes, to explain why we want to use a SPA (Single Page) javascript framework;
separating GUI from the application, to use ofbiz as a ERP-API;
PortalPage / Portlet / parameters : SGBD versus XML file, how to have PortalPage - Portlet is a production environment and so with a code version system for all these parameters.
Continue to migrate the PartyPortlet 13.07 addons with only for this month added the LookupPartyRoleType
And review for hyperlink in listParty screen to be able to show vuejs is really usable with standard screen.
30 novembre 2019
Party screen and portlet migration is the first step in the POC usability validation.
The complete process is describe in
modular and generic UI
documentation chapter in FrontJs Portal
This month was focus on migrate most of classical party portlet and solve not manage xml tag in the current vuejs components.
PartyInfo
PartyContactMech has been migrated last month to test a vuejs dedicated component
PartyUserLogin with securityGroup management
PartyRelationFrom and PartyRelationTo
PartyRoles
PartyAttributes
PartyIdentifications
PartyNotes
PartyPaymentMethods
PartyContent
PartyAvsSettings
PartyLoyaltyPoints
Visit
PartyPortletDetail
PartyDetail
Currently there are, for most of them, a edit_param form defined. With current POC situation, there is no ways to use them, but when attributes are define in database, they are used by showPortlet.
PartyMgntFrontJs : default portal page use to access Party detail portlet by portlet
PartyRecapFrontJs : same as Profile overview
PartyRecap : all the existing Portlet for a Party
Simple modification have been done to easily migrate screen to the POC, first step has been done with the classical Find - List screen.
The "main" (on controller point of view) partymgr screen is migrated but at minimal, just a part of find works and list with link to Recap Portal Page
Testing the POC with the party portlet has shown some bugs or xml tag or properties not correctly manage (or not manage ;-)
eventMessage presentation, one by one and clearly print, error should be manually closed
better files organization and named
common VueJs files are now in vuejsPortal plugin
common-controller exist (in vuejsPortal) and used for all common uri
some file name have been review to use fjs all the time not portlet / portal / vuejs / …
new xml tag managed or better management
password field
formControl in client level
required="Y"
mask
maxlenght
textarea
Fix displayField and hiddenField interaction in form
inPlaceEditor in display
hyperlink with text and image
horizontalSeparator
vuetify usage
better menu management, depending of place and number of items
theme menu in application menu, to choose dark or light mode and/or main color of current theme.
User modifications are store with ofbiz standard setUserPreference.
Icon from MaterialDesign are usable, we choose to use mdi- prefix to determine in src tag if it’s a image or
a police icon
iconPurpose.properties file have been used to change a first group to MaterialDesignIcon.
Portal Portlet Attributes
attribute are read and put in context in the showPortlet process
default value for portlet attribute can be defined by using PortalPage = "NA" and Seq ="0000"
multiple minors corrections
Currently there is a strange problem with npm buil-prod, it’s necessary to run it twice, because first one failed
and not second one !
The problem not exist with build-dev.
Currently on continuous integration process (demo-selenium.ofbizextra.org), we used build-dev to facilitate debug or study how vuejs application is organized.
A portletType screenlet screen has been created to facilitate migration. Should be used by copy - paste for each portlet.
A short documentation have been started for help migration operations. It’s really a V0, it will be enhance after more migration.
Review all screen to be sure to use ${parameters.mainDecoratorLocation} for the main and uilabel decorator every time it’s possible.
In exampleFjs, correction of all screenlet title to be, now, with uiLabel.
Decorator have been created for find-list, similar to lookup to facilitate screen migration and put in a dedicated file.
link and hyperlink use the VuejsRouter
During this month and with all these modifications, Example selenium scenario has been used to check main function are operational (continuous integration process).
Some enhancement have been done:
exampleFjs complete, add some id in vueJs template for OfbSwd project
eventMessage management
On Jenkin part, we have tested testingBot jenkins plugin to easily retrieve video, currently not all works but we have done a complete report to testingBot company (they are reactive, thank’s to us).
31 octobre 2019
Vuetify lib is used for specifics component (ex: PartyContactMech), but in the first step all generic vuejs component template has been done with "classical" html, similar to what is currently done in ofbiz.
This month we have decided to migrate all templates with some vuetify object, main reason are
"modern" look, real frontjs look
not a large job (less than 3 days)
more easier to have multiple interactive option in the future
First part of the month all has been done on the vuetify branch and after updating example GUI test (selenium) merge to master.
Now all has been migrate but internal cleaning is not yet finish (remove all lib no more used)
To have better reactivity, we have modified the VueLink to be able to generate an internal vuejs-app call when link target is a showPortal.
With this modification, and a ofbiz component with all user interface done with portal-page, we are in a One Page application.
On a user experience point of view, it’s really a plus, because, when coming back to an already open portal-page, user retrieve it with data already load.
VuejsRouter is now used when click is done on internal link, it will be useful to have a correct back button in browser usage.
In the same time, first "standard ofbiz screen" has been used with the FrontjsRenderer and vuejs generics component.
So future migration will be more easier.
For the first screen test, we have used a dedicated FindListDecorator, to have only the List area which is update when search is done.
With vuetify lib (and so, css conflict with standard ofbiz) and to be able to have a correct application navigation (menu look and correct update when screen/portpage change) we have decided to create a dedicated theme for FrontJs.
Started from flatgrey and only keep, without modification, header, appbar and footer.
Most of css has been removed, and some specifics css has been made for header/footer and appbar to continue having the same look.
For fjs component, we currently force to use flatgreyfjs theme and no application menu.
A new uri for sending applicationMenu at json format with frontjsviewhandler has been done, so vuejs call it when started and update it when it’s necesary
With Vuetify, some of basic function had to be updated, ex: the standard seleniumHq clearField() not fire event field change.
(clear, sendKey, selectByValue, selectByText, …. )
With the existing GUI scenario test for examplefjs, a whole lot of basic function have been enhance to work with vuejs too.
A new boolean field has been created (default value to false), it should change in the test when a vuejs component will be used/tested.
Sometime, it is necessary to use some workaround (ex: re-testing is failed after wait 250ms) because with vuejs, html dom is built first and data injected in a second time. The classical seleniumhq waitUntil is on html-dom, so sometime the webElement.getText() or getValue() is not good because vuejs injection process is not finished !
On a GUI test scenario writing perspective, there should be no change.
Javadoc have been reviewed for the two main scenario testing vuejs example component (which are now quite extensive) and for all basic functions.
Some works has been done on ofbizextra website, to add some link to javadoc. the link are in the community page.
Vuejs POC page have been reviewed but with all change done each week it’s difficult to have a exactly up to date documentation ;-)
now it’s possible to have mulitple watcher for one element (portlet). The use case is in a portal page, a portlet should be updated if main id change (like all other portlet in portalPage) and be update if action is done on an other portlet (ex: ExampleStatusHistory).
A new event-type has been added on on-event-update-area : collapse (or expand or toggle) a screenlet (an Id, the screenletName)
After update on last release for vue-cli, the webapp name has been changed to the default convention name, so vuejsportal has became vuejs-portal
A large vuejs code review has been done with eslint to remove a lot of warning.
Now, all common files for the fjs component (examplefjs, partymgrfjs, …) are in vuejsPortal
ComonScreen in widget directoryn (with common-decorator adapted to vuejs, lookupDecorator, FindListDecorator, …)
in scr/main/org/ofbiz/… there are the handler and rendrer
selenium HR company configuration test has been separated in two main : step 1 to 4 and 5&6
Sometime it failed because it was long.
Default theme for selenium is now flatgrey
30 septembre 2019
To solve our problem with node maintenance, we decide to test TestingBot services. This company is dedicated to selenium running service, it proposes a very large range of node :
multiple OS (all windows) Mac (multiple) Linux
multiple browser with multiple release
and multiple choice to how to run the selenium. As it’s possible to use the grid architecture (hub + node) migration was very easy in our configuration.
Each time a selenium is run, a video of the test is record, its very usefull.
The company TestingBot has accepted to open for ofbizextra project a OpenSource account :
unlimited testing time
5 parallele tests in same time
Thank you very much for them.
TestingBot have a jenkins plugin to easily read and store video in jenkins, currently the plugin has a little bug but they are very reactive, and a new release will arrive soon.
As TestingBot has a api to return test status and test name, simpleTestSuite main clas of OfbSwd has been enhance to send correct information when TestingBot is using. New parameters has added in selelnium.properties.
All works done this month on VueJs was on the PartyContactMech component, now it’s usable, design is not top but it show clearely what it’s possible with some GUI dedicated vue.js lib, to have a "modern look".
Integration with OFBiz css is difficult, there are a lot of conflict and so some part of the portlet is not clean.
A rapid test has been done to change template of most of the existing generic component
(used when coming from ofbiz xml file), it seem not a large work and look is clearly better that previous template.
We should study how it’s possible to have a dedicated theme to be able to remove most of the ofbiz css.
It will be the next step.
Today, all job runing 13.07 and trunk OFBiz are ok,
On some case, we have some strange problem with the VPS, for ex: some download does’nt work in a jenkin job but if we do
a first download before it works !!!
In each case, when we have found a solution even if it’s not a beautiful solution we have applyed it. Migration has used
too many time :-(
All selenium are return to ok, the last problem to solve is with Chromium and linux with VNC installed, so currently when chrome browser is choosen for running a selenium, it’s with OS Windows10.
each day
update ofbiz trunk, install ofbizextra plugins,
print javadoc (publishing on jenkins.ofbizextra website)
run selenium
VueJsPortalTestSuite,
HR company organisation
HR Employment & Salary
running selenium on Apache OFBiz demo environment,
createLogin,
HR company organisation
Employment & Salary
ExampleOverview
each week
update ofbiz 13.07 and install some addons (12 mains addons)
print doc webhelp
print javadoc
run selenium
widget-portlet (example)
common-portlet
party-portlet
run when necessary
publish doc on ofbizextra website
31 août 2019
nothing to say, it’s a good thing !
Update FrontJsScreenRenderer to manage <plateform-specific><html><vuejs component-name= ….
when a screen contain a plateform-specific ftl, the frontjsHandler will not be able to manage ftl, so it’s necessary to migrate to a plateform-specific vuejs
if a part of screen should use very specific vuejs functionality, it better to create a dedicated vuejsportal-component.
when there will be some REST api for some object, it will be possible to create dedicate vuejs-component for using them.
We have started by PartyContactMgmt, to develop a vuejs-component from sratch, not trying to re-use html in ftl as template in vuejs.
To easily design this gui and to have a "modern" look, we choose to use the vuetify lib.
It’s not an original choice in vuejs environment !
Currently portlet is developed like it’s uses alone, all ofbiz css are desactivated !
Most of time has been used to migrate all jenkins job to adjust them with new orgniazation.
Currently main jobs works but not all, it should be continue.
31 juillet 2019
Strange ! more work than in plan !
Copy - paste between VM and VPS does’nt work in our case, no one in ofbizextra people available is really system administrator, So it’s more easy for us to re-install from scratch each environment/configuration (than finding the good migration process).
More easy but more time consuming !
Current list of service / VM are :
website (and Apache proxy)
the current website
nextcloud server
adm repository
svn server
gitlab
jenkins
ofbiz-selenium : ofbiz trunk demo (using for selenium test)
ofbiz13-07-selenium : ofbiz r13.07 demo
postgresql
ofbizextra community ofbiz
hub & node for selenium
Managing selenium node is very time consuming (on a developper (which not love system administration) perspective ), because browser change frequently and so seleniumDriver too.
currently we manage only one node with OS Linux and for Browser Firefox and Chromium with only one release.
On the new infra managing a VPS with graphical interface is not OutOfTheBox. So too more time has been using
for this configuration and result was’nt correct.
Selenium work with firefox browser but with chromium, most of selenium failed.
It will be necessary to found a better solution.
Work continued on VueJs POC this month by testing if it’s easy to start a new plugin for a new ofbiz component.
Party has choosen because with all party portlets it’s possible to demontrate how using same portlet in multiple
context and so multiple different portal page (cf doc about modular and generic UI).
So new plugin partymgrfjs has been created …
Previously all modifications on example for using it with vuejsPortal has been done directly in the component.
To easily create partymgrfjs without duplicate all common file, a new component examplefjs has been created with all specifics files of example.
So now there is the examplefjs plugin and we can use the standard Apache Ofbiz example plugin.
In partymgrfjs, we start to solve how to manage ftl in vuejs when we try to migrate PartyContactMech portlet.
We choose to create a vuejs component for each ftl, and so having an uri which can send all data used by the ftl. For contactMech it’s easy,
a service already exist.
30 juin 2019
This month some time have been using to write some documentations on
how to install VuejsPortal plugin
describe some choices done
explain some main technical architecture for this POC
Now lookup works, it’s not perfect but using a dedicated lookupDecorator and a specifics hack in the handler to manage autocompletion process, there is a demonstration in ExampleRecap PortalPage.
Some Reworks has been done on link vuejs component to manage some functions/attributes, ex: the event-update-area
Link intra-app and inter-app works, there are example in ExampleMgmt PortalPage.
Link is complex because some time it’s only a store update which is necessary to generate, not a real html link ;-)
The migration to a VPS infra has started, currently some tests have been done and the migration plan on agile mode is writing as a draft.
In the current infra we are using docker and kubernetess for most of virtual environment.
After using these tools, for a simgle configuration like ours, during 3 years, time consuming to manage tools is more than
time saving in deployment or configuration.
So we have decided to simplify configuration, one VM by ofbiz environment for example, and install - configuration
is done by the jenkins job.
In current server it was not more possible to add multiple VM, most of resources are full. ;-)
We hope, it will be more easy to integrate new Apache Release environement and new project in the futur.
From a more general standpoint, we hope having more flexibility on infrastructure technics evolutions, for example :
re-starting using new techno like docker / kubernetess
migrate to an other VPS supplier
spilting selenium test environment
…
15 mai 2019
Today, ofbizextra has a new WebSite. In the futur it will replace the http://community.ofbizextra.org website.
This website main goal is to publish all documentations (in asciidoc format) available in ofbiz and ofbizextra project.
jBake project has been choosen to manage/publish this website.
jBake is a static web site generator from asciidoc files and freemarker template.
JBake use asciidoc with asciidoctor generator and freemaker template, so very wellknow technology for ofbiz community
for more information look at https://jbake.org/
The https://gitlab.ofbizextra.org/ofbizextra/website project contain all structure and template for this website.
All adoc files (and related other files like img) are copied from owners project, by a jenkins job "publish_doc".
17 novembre 2016
This month, In Seville (Spain) the ApacheCon Europe was the main Apache event
A special track was organized for OFBiz project, and in this track a presentation was done to present
how GUI test can help collaboration between multiple project actors
ERP applications need more and more modularity, which is one of the major priorities of the Apache OFBiz community.
This presentation will explain why user interface modularity and its associated unit testing methods can help create full process flow integration testing that helps enable and maintain application quality.
A key success factor to delivering good automated tests is the need to have various people (e.g. Business Analysts, Developers, Product Owners)
all working and collaborating together.
This ensures that the application, its tests and also the automated test deployment is as efficient as possible.
Team for test should be the same than team for developping / deploying ERP project.
After some definition about test type (gui unit test versus scenario gui test) and their own rules and goals.
We will demonstrate, how Selenium-Webdriver UI testing is being used with Apache OFBiz on a current project, and how it helps to automatically provide enough documentation to help Business analyst and to create beginner’s tutorial for the application.
17 novembre 2014
This month, In Budapest (Hungary) the ApacheCon Europe was the main Apache event
A special track was organized for OFBiz project, and in this track a presentation was done to present
ofbizextra Selenium WebDriver tools
Apache OFBiz is a ERP and also a technical and functional framework.
It allows to build strong and adapted solution for managing Company.
Currently there are a lot of Junit test for internal business process but there are no test for user interface, because most of time standard GUI is modified in customer project implementation.
This presentation will show how to realize GUI unit test with selenium and webdriver to test Portal page with portlet, and how to integrate test in a continuous integration environment Jenkins(ex Hudson).
With standardized tests like these, it’s possible, in a customer project to deploy a complete test coverage to guaranty quality and scalability.
This presentation cover 3 main points :
How to use the tools (not how they can be integrated to ofbiz)
Selenium, (ide, builder, webdriver, Grid)
Webdriver (java)
Jenkins (automatisation )
How to create GUI automated test
for standard OFBiz GUI : screen, menu, form, xml
For OFBiz Portal and portlet (without and with Ajax )
Feedback / 'lessons learned' and Best Practices
documentation
test granularity
08 novembre 2012
This month, In Sinshein (Germany) the ApacheCon Europe was the main Apache event
A special track was organized for OFBiz project, and in this track 3 presentations was done to present some
ofbizextra goals, tools, and works.
How doing in the same time the developments related to customer projects and contributions to the community project.
This is the goal of the addon system for Apache-OFBiz.
How does it works?
The Apache-OFBiz addon system is developed to:
Manage and develop functionalities (for one or multiple customers),
Follow all Apache-OFBiz best practices to be able to send development to Apache-OFBiz contributor, and so being integrated in OFBiz project
We will see what exactly is an addon, how the adm-manager manages its, how addons could be synchronized with Apache-OFBiz evolution and how to use its on a Customer production site.
We will end with the advantages and disadvantages of such a solution and what can we hope for the future.
This conference will explain, for people who know how to insert a functionality (technical or business) in ofbiz,
how to package a group of modifications
which information is needed to have a instalable addon
how to add documentation
how to add dependencies
how to add test
how to install a addon
how the release are managed …
There will be 3 or more ofbizextra addons repository.
What is the goals and constrains of each?
What is the process to have a good visibility for its own addon.
ofbizextra addons repository should help developers to contribute to Apache-OFBiz project.
There will be :
ofbizextra-addons-dev
ofbizextra-addons-incubator
ofbizextra-addons
Mulitple repository for facilitate contribution and having a good quality, so ofbizextra-addons-dev is open for all people who want to contribute and ofbizextra-addons is only for addons with all quality points review.
This track will
details the quality points (development best practice, help, junit test, selenium test, user help, synchronization with ofbiz, bugs resolutions speed, …)
details how to progress for one repository to the next, how decisions will be done
This track present what is planned, but all can be discuss and change, so this track will help to defined the definitive rules.
OFBiz with a set of addons which customize user interface is a OOTB CRM application.
Details on howto install, and used
all functionality for a CRM exist in OFBiz, most of the time user interface is not user friendly, but some addons exist which customize user interface by created a large set of portlet in place of existing screen.
This track will present
how to install a OFBiz CRM solution
the list of functionality (company, contact, communication, document, planning, ….)
how to parameters (classification, role, …)
Older posts are available in the archive.