Packt Publishing Community Experience, Distilled

Apache OFBiz Development: The Beginner

HomeBooksSupportFreeAuthorsAward
WELCOME YOUR ACCOUNT NEWSLETTERS ARTICLES ABOUT US

 
Apache OFBiz Development: The Beginner
Back to BOOK PAGE

Table of Contents

Preface
Chapter 1: Getting Started with OFBiz
Chapter 2: Working with OFBiz
Chapter 3: Screen Widgets
Chapter 4: Form Widgets
Chapter 5: Other View Element Types in Screen Widgets
Chapter 6: The Controller
Chapter 7: Entities, View Entities, and Extended Entities
Chapter 8: Accessing the Entities and View Entities
Chapter 9: The Events
Chapter 10: The Service Engine
Chapter 11: Permissions and the Service Engine
Chapter 12: Minilang
Chapter 13: Tying Up the Loose Ends
Chapter 14: Tips and Techniques
Appendix A: Simple Method User's Guide
Index
  • Chapter 1: Getting Started with OFBiz
    • Getting the OFBiz Code
    • Downloading and Installing SVN
      • Downloading TortoiseSVN
      • Using SVN to Get OFBiz
        • Our OFBiz Workspace—First Look
    • Installing the Java Development Kit (JDK)
      • Downloading JDK 5.0
      • Installing JDK 5.0
  • Downloading OFBiz Ready to Launch
  • Setting Up an Eclipse Project
  • Using Derby—the OFBiz Stock Database
    • Compiling OFBiz and Loading the Data
    • Verifying the Installation Process
      • The Compilation Portion
      • The Data Loading Portion
      • Some Pre-Ignition Processes we won't do Twice
      • Backing Up the Derby Data Files
  • Running OFBiz
    • Allocating Memory for OFBiz
      • Starting OFBiz and Verifying the Start-Up Process
      • Seeing the Logs in Real Time
      • Possible Problems with Start-Up
  • Switching Off OFBiz
  • Our First Tour of OFBiz
    • Accessing OFBiz
    • Exploring the Webapp "ecommerce"
      • Let's Buy Something
    • Exploring the Webapp "order"
      • Receiving Payment
      • Fulfilling the Order
      • Invoice Automatically Generated with Payment Applied
    • End-to-End Tour Completed
  • Summary
    • Chapter 2: Working with OFBiz
      • Adding Our First Field
        • Changing the Data
          • Editing the Entity Definition
        • Updating the Database
        • Changing the Looks
          • Editing the User-Interface
        • Checking Our Changes
        • Changing the Flow
          • Rewiring the "Save" (Update Postal Address) Button
          • Creating the New Widget Screen
          • Creating the FTL File
          • More to the Flow
        • Some Changes Possible with Engines Running
      • Resetting Our Play Area Quickly
        • Skipping Some Pre-Ignition Processes
          • Restoring Derby Data Files
          • Removing the Web Server (Catalina) Work Files
          • Updating the Database with Our Data Entity Changes
        • Showing Off Our Spanking New OFBiz Installation
          • Tripping Up Our Plan
        • Storing a Save-Point to Dramatically Ease Testing
          • Archiving Derby Data Files and Web Server Work Files
        • Restoring a Save-Point
          • Restoring the Derby Data Files
          • Restoring the Web Server Work Files
          • Computer, Run Scenario A from Last Save-Point
      • The Structure of OFBiz in General
        • Components in OFBiz
        • Referencing Components in OFBiz
        • Creating Our Own OFBiz Component
          • Creating the Component
        • Using Our Component
          • Cleaning Up Our Mess in the "party" Component
        • Converting the BeanShell to a Java Event
          • Clean Extension Strategies Employed
          • Checking that Our Move was Successful
          • A Bit More Mess Remains
        • Webapps in OFBiz
          • Creating Our First Webapp
          • Webapp URIs in this Book
          • Testing Our First Webapp
      • The Model-View-Controller Architectural Pattern
        • The MVC in Plain English
          • The Model in OFBiz
          • The View in OFBiz
          • The Controller in OFBiz
          • Other Files in an OFBiz Component
      • Summary
      • Chapter 3: Screen Widgets
        • Equipping Our Webapp with a Screen Widget View Handler
        • Using the Screen Widget View Handler
        • Files and Locations
        • Creating Our First Screen Widget
          • Defining a Screen Widget
          • Informing the Control Servlet about the Screen Widget
          • Referencing Screen Widgets
          • Uniform Pattern of Flow in OFBiz
          • Seeing Our First Screen Widget
        • The Anatomy of the <section> Element
          • Our First Conditional Screen Widget
          • Element Order in the controller.xml
          • Inform the Control Servlet about the Screen Widget
          • If-Then-Else Structure
            • The <if-condition> Element
            • The Then—<actions> and <widgets> Elements
            • The Else—<fail-widgets> Element
            • The Minimum <section>
          • Sending Parameters with Requests
          • Seeing Our Conditional Screen Widget
          • Screen Widget Context and Variables
            • Utility Objects in Context
        • Nested Sections for Nested Conditions
        • Organizing a Large Screen into Smaller Screens
          • The Global Context Revisited
          • Outer Contexts Visible to Nested Ones
        • Screen Widget's Integration with FreeMarker
        • Cleaning Up in the "party" Component
        • Commenting Changes to the Core Code
        • Screen Widgets as Templates
          • A Candidate for Templating
            • Creating the Header
            • Creating the Footer
            • Using Our Header and Footer
            • Seeing Our First Well-Formed XHTML Document
          • Using Decorator Screen Widgets for Templating
            • Creating a XHTML Decorator Screen
            • Using the XHTML Decorator Screen
            • Seeing Our First Decorator in Action
          • Multiple Content Slots
            • Creating the First Half of the Header
            • Creating the Second Half of the Header
            • Adding a Content Slot to a Decorator
            • Using Our Multi-Slot Decorator
            • Seeing Our First Multi-Slot Decorator
          • Nesting Decorators
            • Top-Down Approach (delegation)
            • The Bottom-Up Approach (Vertical Stack)
            • Using Both Approaches
        • Summary
        • Chapter 4: Form Widgets
          • Files and Locations
          • Creating Our First Form Widget
            • Creating the Containing Screen Widget
            • Referencing Form Widgets
            • Create the Form Widget
            • Seeing Our First Form
            • Understanding the Form Attributes
              • Minimum Requirements to Use Form Widgets
              • Including the Minimal Requirements
          • Form Processing via Request Event
          • Java Events
          • Submitting and Processing Our First Form
          • The "list" Type Form Widget
            • Creating the Containing Screen
            • Adding Form Processing Code
            • Publishing the Form
            • Seeing Our First "list" Type Form
          • The "multi" Type Form Widget
            • Creating the Containing Screen
            • Loading Data for the Form
            • Publishing the Form
            • Creating the Form-Processing Logic
            • Seeing Our First "multi" Type Form
          • Alternative Targets in Two-Target Forms
            • Creating the Form
            • Creating the Containing Screen
            • Publishing the Two-Target Form
            • Seeing Our First Two-Target Form
          • Row-Level Actions
            • Creating the Form
            • Creating the Containing Screen
            • Publishing the Form
            • Seeing the Form in Action
          • Summary
          • Chapter 5: Other View Element Types in Screen Widgets
            • Menu Widgets
              • Creating Our First Menu Widget
              • Including Our Menu Widget in Our Screen Widgets
                • Understanding the Menu Item Attributes
                • Including the Menu Widget via a Decorator Screen Widget
                • Add Screen Widget "ConditionalScreen" to the Menu
              • Sub-Menus and Conditional-Menu Items
              • Pre-processing Actions for Menu Widgets
            • FreeMarker
              • As Decorator Templates
              • Displaying Dynamically Created List Variables
              • Iterating Through the List
            • Bringing it All Together
              • The User-Interface Labels
              • Adding the appheader
            • Summary
            • Chapter 6: The Controller
              • How OFBiz Hears Our Requests—The Control Servlet
                • Defining a Control Servlet for a Webapp
                • Using the Control Servlet
                • Funnelling All Requests to the Single Control Servlet
                • Defining Needed Utility Objects for the Control Servlet
                  • GenericDelegator Object
                  • The GenericDispatcher Object
                • Some Background on Servlets
              • Programming a Control Servlet
                • Logging into Our Learning Application
                • Specifying Handlers
                • Request Maps
                  • Knocking on the Right Doors
                  • Security—Before Answering the Door
                  • The https Attribute
                  • The auth Attribute
                  • The direct-request Attribute
                • Event—Determining a Response
                  • Java Events
                  • Response—Defining Various Responses
                • View Maps
              • Summary
              • Chapter 7: Entities, View Entities, and Extended Entities
                • Entities
                  • The Structure of the Data Model
                  • Referencing Fields of an Entity
                  • OFBiz Uses Relational Database Management Systems
                  • Curious Trivia about the Relational Model
                  • Entity Engine Concepts
                  • Datasources
                  • Entity Delegators
                  • Entity Groups
                  • Defining Our First Entity
                  • Assigning Our Entity to an Entity Group
                  • Loading Our Entity into the Entity Engine
                  • Seeing Our First Entity
                  • Using Our First Entity
                    • Creating a Drop-Down
                    • Populating the Drop-Down
                    • Expiring a Value
                    • Un-Expiring a Value
                  • Anatomy of an &lt;entity&gt; Element
                    • The <field> Element
                    • The <prim-key> Element
                    • The <relation> Element
                    • The <index> Element
                  • Relation Types
                    • One-to-One Relations
                    • One-to-Many Relations
                    • One-to-One Relations with No Foreign Keys
                • View Entities
                  • Anatomy of a <view-entity>
                    • The <member-entity> Element
                    • The <alias> and <alias-all> Elements
                    • The <view-link> Element
                    • The <relation> Element
                  • Applying Functions on Fields
                    • Counting the Number of Records
                    • Counting Distinct Records
                    • Arithmetic Aggregate Functions
                    • Uppercase and Lowercase Functions
                  • Grouping for Summary Views
                  • Complex Aliases
                    • Nested <complex-alias> Elements
                • Extending Entities
                • Summary
                • Chapter 8: Accessing the Entities and View Entities
                  • Setting-Up Our Playground
                    • The Script Processor
                    • The Generic Screen
                      • Creating the Screen Widget
                      • Creating the Form Widget
                      • Creating the FreeMarker File
                      • Publishing Our Generic Screen
                    • Testing Our Playground
                  • GenericValue Objects
                  • Creating a Database Record
                    • Why a Map is Used?
                  • Updating Database Records
                  • Deleting Database Records
                  • Retrieving Database Records
                    • Find Records by Conditions
                      • Conditions
                      • Comparison Operators (EntityComparisonOperator)
                      • Condition Lists
                      • Condition Joiners (EntityJoinOperator)
                    • Tools for Common Styles of Conditions
                      • Conditions Joined by AND
                      • Conditions Joined by OR
                      • Counting the Number of Records Retrieved
                      • OFBiz Date Condition
                    • Getting Related Records
                      • One-to-One Relations
                      • One-to-Many Relations
                    • Utilities for Post-Query processing
                      • Post-Query Ordering
                      • Post-Query Filtering by Conditions
                      • Post-Query Filtering by Date
                      • Other Post-Query Filtering Methods
                  • Using the Entity Engine Cache
                  • Dynamic View Entities
                    • Left Outer Joins with the Dynamic View Entity
                    • Performing the Lookup
                    • EntityFindOptions
                  • Paginating Using the EntityListIterator
                    • Paginating through Party Records: A Working Example
                  • Functions and Dynamic View Entities
                  • Summary
                  • Chapter 9: The Events
                    • Java Events
                      • Security and Access Control
                        • User Logins are like Access Cards
                        • Security Groups are like Access Levels
                        • Security Permissions are like Individual Secured Areas
                        • Security Permissions are Contained within Security Groups
                        • User Logins are Assigned Security Groups
                      • Dealing with Security in Java
                      • Sending Feedback to the End-User
                        • Conventions for Message Placeholders
                        • Testing the Conventions
                      • Handling Parameters
                      • Accessing Localized Messages
                        • Parameterizing Messages
                        • Catering for Multiple Languages
                    • Working with the Database
                    • Summary
                    • Chapter 10: The Service Engine
                      • Defining a Service
                      • Creating the Java Code for the Service
                      • Testing Our First Service
                      • Service Parameters
                        • Input Parameters (IN)
                        • Output Parameters (OUT)
                        • Two Way Parameters (INOUT)
                        • Special Unchecked Parameters
                        • Optional and Compulsory Parameters
                      • The DispatchContext
                      • Service Security and Access Control
                      • Calling Services from Java Code
                      • Implementing Interfaces
                        • Overriding Implemented Attributes
                      • Synchronous and Asynchronous Services.
                      • Using the Job Scheduler
                      • Quickly Running a Service
                      • Naming a Service and the Service Reference
                      • Event Condition Actions (ECA)
                        • Service Event Condition Actions (SECAs)
                        • Entity Event Condition Actions (EECAs)
                      • Summary
                      • Chapter 11: Permissions and the Service Engine
                        • Simple Permissions
                        • Two-Part Permissions and Special "_ADMIN" Permissions
                        • Role Checks
                        • Combining Multiple Checks
                        • Nested Checks
                        • Complex Permissions
                          • Setting-Up Our Playground
                            • Creating the Request and View Maps
                            • Creating the Screen and Form Widgets
                            • Creating the Entity PlanetReview
                            • Defining Services that Require Complex Permission
                            • Implementing Services that Require Complex Permission
                            • Defining Permission Services
                            • Implementing Permission Services
                          • Playing with Complex Permissions
                            • Complex Permissions and Simple Permissions cannot be combined
                        • Summary
                        • Chapter 12: Minilang
                          • What is Minilang?
                            • Tools to Code XML
                          • Defining a Simple Service
                            • Defining the Simple Service
                            • Writing the Simple Method
                          • Simple Events
                          • Validating and Converting Fields
                            • Validating a Simple Event Example
                          • Checking Security in Minilang
                          • Invoking from Minilang
                            • Calling Services from Minilang
                            • Calling Simple Methods
                            • Calling Java Methods
                            • Calling BeanShell
                          • Minilang in Screen Widgets
                          • Summary
                          • Chapter 13: Tying Up the Loose Ends
                            • The OFBiz Look and Feel
                              • Changing the Customer Facing Site
                              • Changing the Back Office Screens
                                • The Header
                                • The Applications Bar (appbar)
                                • The Central Area
                                • The Footer
                            • Using FreeMarker
                              • OFBiz Transform Tags
                                • <@ofbizUrl>
                                • <@ofbizContentUrl>
                                • <@ofbizCurrency>
                              • Calling Java from FreeMarker
                            • OFBiz Utilities
                              • UtilMisc
                              • UtilValidate
                              • UtilDateTime
                              • Debug
                          • Outputting Different Formats
                            • Outputting a PDF
                          • Summary
                            • Chapter 14: Tips and Techniques
                              • Debugging Techniques
                                • Logging
                                  • console.log
                                  • ofbiz.log
                                • Configuring the Logs
                                • Viewing the Logs through Webtools
                                • Writing Information to the Logs
                                • Logging Minilang
                              • Debugging Java Code
                                • Passing in the VM Parameters
                                • Configuring the Remote Debugger
                            • Managing a Project Using Subversion
                              • Preparing the Repository and Creating the Project
                                • Step 1: Checking Out the Latest OFBiz Code
                                • Step 2: Making a Copy
                                • Step 3: Importing Our Copy
                                • Step 4: Branching ofbiz\current to Create the Trunk
                              • Getting the Latest Features and Bug Fixes
                                • Step 5: Updating OFBiz Current
                                • Step 6: Merging Changes between Revisions of OFBiz Current into Our Project
                            • Apache HTTP Server and OFBiz using mod_proxy_ajp
                              • Installing the Apache HTTP Server
                              • What is mod_proxy_ajp?
                              • Configuring Apache HTTP Server to Use mod_proxy_ajp
                              • Configuring OFBiz to Use the AJP Connector
                              • Getting the Secure Pages to Work
                                • Configuring SSL in Apache
                                • Creating a Self-Signed SSL Certificate
                                • Going into Production
                            • Development Tips
                            • Summary
                              • Call Operations
                                • <call-map-processor>
                                • <call-service> / <call-service-asynch>
                                • <set-service-fields>
                              • Handling the Results of Service Calls
                                • <results-to-map>
                                • <result-to-field>
                                • <result-to-request>
                                • <result-to-result>
                                • <call-bsh>
                                • <call-simple-method>
                                • <call-object-method>
                                • <call-class-method>
                              • Service Operations
                                • <field-to-result>
                              • Event Operations
                                • <session-to-field>
                              • Environment Operations
                                • <set>
                                • <clear-field>
                                • first-from-list>
                              • Miscellaneous Entity Operations
                                • <sequenced-id-to-env>
                                • <make-next-seq-id>
                              • Entity Find Operations
                                • <entity-one>
                                • <entity-and>
                                • <entity-condition>
                                • Sub-Elements
                                • <condition-list>
                                • having-condition-list>
                                • <select-fields>
                                • <order-by>
                                • <entity-condition> complete example:
                                • <entity-count>
                                • <get-related-one>
                                • <get-related>
                                • <order-value-list>
                                • <filter-list-by-and>
                                • <filter-list-by-date>
                              • Entity Value Operations
                                • <make-value>
                                • <clone-value>
                                • <create-value>
                                • <store-value>
                                • <refresh-value>
                                • <remove-value>
                                • <remove-related>
                                • <remove-by-and>
                                • <set-pk-fields> / <set-nonpk-fields>
                                • <store-list>
                              • Control Operations
                                • <iterate>
                                • <iterate-map>
                                • <check-errors>
                                • <add-error>
                                • <return>
                              • If Conditions
                                • <if-validate-method>
                                • <if-instance-of>
                                • <if-compare>
                                • <if-compare-field>
                              • Conditions:
                              • Other Operations
                                • <log>
                                • <now-timestamp-to-env>
                                • <now-date-to-env>
                                • <set-current-user-login>
                                • <calculate>
                                Back to BOOK PAGE

                                   




                                © Packt Publishing Ltd 2010

                                RSS