The opentaps Installer

From Opentaps Wiki
Jump to navigationJump to search

The opentaps Installer will be a new module for installing and setting up your organization on opentaps. It will be developed after the official release of opentaps 1.4.

Imagine if you have used the Opentaps Amazon EC2 Images and tested opentaps, and you'd like to use opentaps for your company next. The installer should do all the basic things you need to get up and running.

The highlights of this module will be:

  • GWT user interface
  • A sequence of user friendly screens which allows you to:
    • configure and set up database
    • configure and set up your Web server
    • set up your company, warehouse, product stores
    • upload your data from Excel spreadsheets
    • use default GL account or upload your own chart of accounts
    • load new modules and their seed data
    • restart the system with a "Please wait while your system is being restarted" spinner
    • allow additional installation steps to be added to the process


User Interface

User interface layout:

  • user interface is set up like a webapp from Opentaps 2.0 Planning with tabs, tab items, and screens which are URL references to either installer screens or other opentaps apps.
  • Upper right hand corner: Instance: _______ with a list of instances. You can choose an instance or [Create New Instance]
  • For each instance, a tabular layout with the following tabs and tab items:
System Modules Organization Warehouses Stores Data
Location Modules Contact Contact Store Settings Upload
Databases Payment Processors Accounting Shipping Import
Web Server Shipping Payment Reports
Email
Admin User
  • for each instance, we record which tab item has been completed, which ones are pending, and which one was the last visited (active.) The completed ones are faded. The active one is highlighted (reversed). The pending ones are normal. This way the user can select which one to work on, but there is a sequence going from left right, top to bottom.
  • when you create a new instance, the entire sequence of tabs for that instance is created, and the system automatically starts you at the top one (System > Location)
  • all the steps are stored as a template in a database table, so you can add more steps by specifying:
    • sequence number for ordering
    • parent (tab)
    • name for the tab navigation
    • screen URL: for URL of where to pull this page from
  • the screen URL is as specified in Opentaps 2.0 Planning We can use it to pull content from other opentaps apps, like dataimport for example.

Technical Requirements

Technically, the system would need to be able to:

  • create and copy config files, such as entityengine.xml, component-load.xml, ofbiz-containers.xml, url.properties, shipment.properties, etc.
  • load and read Excel spreadsheets
  • create and manage databases and users for major databases (postgresql, mysql, oracle, ms sql) and be modular enough to accommodate other databases as needed
  • restart opentaps server
  • Have a way to hold demo data that can be copied over to the production database. for example, GL chart of accounts. Alternatives are to use XML (but remember that this application cannot depend on the entity engine per se, so do not use entity engine XML) or use derby.
  • Modular architecture under ERP Modules with GWT and Domain Driven Architecture. This means that the module could be used to install opentaps, but you can also use the same user interface to install other ERP/CRM type systems.
  • creating data in core opentaps system will be through a domain layer which is configurable. This means that if we want to copy data into opentaps, we would call an interface in this module, which would be wired to an implementation that references and actual opentaps service via a domain directory just for this module.
  • No reliance on the ofbiz framework. It can either be deployed inside of opentaps or as a separate application with any J2EE server -- Tomcat, Jetty, JBoss, etc.
  • perhaps some kind of lightweight and very easy to use workflow tool would be appropriate.