Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

This page is a work-in-progress to document my progress in separating the ofbiz core from the rest of the applications to allow users to focus on using ofbiz as a standalone development framework.

Why?

Ofbiz is a very productive framework for creating enterprise applications. However, installing ofbiz with all of it's OOTB functionality just to use ofbiz as a development framework is a waste of resources. Also, newcomers to ofbiz may be put off by the complexity of ofbiz OOTB.

Ofbiz

...

10.04

I have chosen to base my instructions on Ofbiz 9.04 and not trunk because 9.04 is stable. Learning a new technology is always easier when working in a stable environment.Ofbiz 10.04 will be next stable release.

Download, install and setup

...

10.04.

If you are unsure how to proceed with this, I recommend reading the ofbiz beginners tutorial

Comment out the following components in $OFBIZ_HOME/applications/component-load.xml

Code Block
<component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd">
<!--    <load-component component-location="commonextparty"/><!-- common component used by most other components >-->
<!--
    <load-component component-location="partysecurityext"/>-->
<!--    <load-component component-location="securityextcontent"/>-->
<!--    <load-component component-location="contentworkeffort"/>-->
<!--    <load-component component-location="workeffortproduct"/>-->
<!--    <load-component component-location="productmanufacturing"/>-->
<!--    <load-component component-location="manufacturingaccounting"/>-->
<!--    <load-component component-location="accountinghumanres"/>-->
<!--    <load-component component-location="humanresorder"/>-->
<!--    <load-component component-location="ordermarketing"/>-->
<!-- common component used by most other components last because it uses info from most components-->
<!--    <load-component component-location="marketingcommonext"/>
-->
</component-loader>

Comment out the following components in $OFBIZ_HOME/specialpurpose/component-load.xml

Code Block
<component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd">
<!--
       <load-component component-location="ecommerce"/>-->
   <!--    <load-component component-location="pos"/>
   -->
<!--    <load-component component-location="hhfacility"/>-->
   <!--    <load-component component-location="assetmaint"/>
   -->
<!--    <load-component component-location="cmssite"/>
   -->
<!--    <load-component component-location="ofbizwebsite"/>-->
<!--    <load-component component-location="projectmgr"/>
   -->
<!--    <load-component component-location="oagis"/>
   -->
<!--    <load-component component-location="googlebase"/>
   -->
<!--    <load-component component-location="googlecheckout"/>-->
<!--    <load-component component-location="ebay"/>-->
<!--    <load-component component-location="ebaystore"/>
   -->
<!--    <load-component component-location="myportal"/>-->
   <!--    <load-component component-location="webpos"/>-->
<!--    <load-component component-location="crowd"/>-->
    <!-- load-component component-location="ldap"/>
   -->
    <!-- <load-component component-location="workflow"/> -->
       <!-- <load-component component-location="shark"/> -->
</component-loader>

...

Code Block
<component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd">
       <load-component component-location="geronimo"/>
    <load-component component-location="sql"/>
       <load-component component-location="entity"/>
       <load-component component-location="catalina"/>
       <!-- <load-component component-location="jetty"/> -->
       <load-component component-location="security"/>
       <load-component component-location="datafile"/>
       <load-component component-location="minilang"/>
       <load-component component-location="common"/>
       <load-component component-location="service"/>
       <load-component component-location="entityext"/>
       <load-component component-location="bi"/>
    <load-component component-location="birt"/>
       <load-component component-location="webapp"/>
       <load-component component-location="guiapp"/>
       <load-component component-location="widget"/>
       <load-component component-location="appserver"/>
       <load-component component-location="testtools"/>
       <load-component component-location="webtools"/>
       <load-component component-location="webslinger"/>
       <load-component component-location="images"/>
<!--       <load-component component-location="example"/>-->
<!--       <load-component component-location="exampleext"/>-->
</component-loader>

Comment out themes - see Bugs section below

Comment out theme preferences in $OFBIZ_HOME/themes/bizznesstime/includes/header.ftl

Code Block

<div id="preferences" style="display:none">
   <a href="<@ofbizUrl>ListLocales</@ofbizUrl>" id="language">${uiLabelMap.CommonLanguageTitle} - ${locale.getDisplayName(locale)}</a>
   <a href="<@ofbizUrl>ListTimezones</@ofbizUrl>" id="timezone">${nowTimestamp?datetime?string.short} - ${timeZone.getDisplayName(timeZone.useDaylightTime(), Static["java.util.TimeZone"].LONG, locale)}</a>
   <!--
   <a href="<@ofbizUrl>ListVisualThemes</@ofbizUrl>" id="theme">${uiLabelMap.CommonVisualThemes}</a>
   -->
</div>

Comment out help link in $OFBIZ_HOME/themes/bizznesstime/includes/header.ftl

Code Block

<!-- notice the last "false" in the if statement to make the if condition always return false -->
<#if webSiteId?exists && requestAttributes._CURRENT_VIEW_?exists && false>
   <#include "component://common/webcommon/includes/helplink.ftl" />
   <span><a href="javascript:lookup_popup2('showHelp?helpTopic=${helpTopic}&amp;portalPageId=${parameters.portalPageId?if_exists}','help' ,500,500);">${uiLabelMap.CommonHelp}</a></span>
</#if>

Load data and run ofbiz

Next run the ant target "run-install" and "create-admin-user-login" to populate the database.

...

At this stage, you don't have a mecanism for adding user logins or for setting user permissions.  This functionality will need to be created.

More to follow...

...

Create a component

(if the application is still running from the previous step, kill it)

Code Block

./ant create-component

E.g.

Wiki Markup
create-component:
\[input\] Component name: (e.g. mycomponent)
*mycomponent*
\[input] Component resource name: (e.g. MyComponent)
*MyComponent*
\[input] Webapp name: (e.g. mycomponent)
*mycomponent*
\[input] Base permission: (e.g. MYCOMPONENT)
*MYCOMPONENT*
\[echo] The following hot-deploy component will be created:
\[echo] Name: mycomponent
\[echo] Resource Name: MyComponent
\[echo] Webapp Name: mycomponent
\[echo] Base permission: MYCOMPONENT
\[echo] Folder: /home/snowch/workspace/ofbiz.tr.framework/hot-deploy/mycomponent
\[echo]
\[input] Confirm:  (Y, \[N], y, n)
*Y*

Grants access for admin user to mycomponent:

Code Block

./ant run-install-seed	              

run-install-seed loads the security data in /hot-deploy/mycomponent/data/MyComponentSecurityData.xml

navigate to http://localhost:8443/mycomponent/control/main - login as admin/ofbiz

Bugs

OFBIZ-3499 - Help dependency on Content
OFBIZ-3498 - Visual Themes dependency on Party

...

See also

There is a longer term effort looking at separating the framework, see Framework-only+distribution