THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
Advanced Framework Course
Target Audience
- Developers (especially Senior level)
- Architects
Pre-Requisites
- OFBiz Framework Introduction (Videos) - Important!
- Basic Java & J2EE (Servlet, JDBC, JNDI, JTA) Familiarity
Topics Covered
Part 1: Just Enough Java and J2EE
- The Java Classpath
- Servlet API & JSP
- Request & Response
- Contexts: page/screen, request, session, application
- JNDI
- JDBC
- Basic Concepts
- Basic API
- Transaction Isolation Levels
- None
- ReadCommitted (Recommended)
- ReadUncommitted
- RepeatableRead
- Serializable (NOT Recommended, Performance and Dead-locking)
- JTA
- UserTransaction & TransactionManager
- Transaction Control: rollback and setRollbackOnly
- On Pausing and Resuming Transactions
Part 2: The OFBiz Base: Containers and Components
- The OFBiz Base Utilities & Loader
- Containers
- Components
- component-load.xml (base/config, applications, framework, specialized, etc)
- Component Definition
- <component-directory>/ofbiz-component.xml
- Resource Loaders
- Classpath Entries
- Entity Resources
- Service Resources
- Test Resources
- Webapps
- Component Structure Conventions
- config
- data
- dtd
- entitydef (entitymodel*.xml, entitygroup.xml, eecas*.xml)
- lib
- script
- src
- servicedef (services*.xml, secas*.xml, groups*.xml)
- templates (email, survey, etc)
- testdef
- webapp
- widget
- The Component URI: component://<component-name>/relative-path
Part 3: The Webapp Framework, Widgets & MiniLang
- Basic Framework Review
- The Webapp Framework
- Control Servlet
- ofbiz/framework/webapp/dtd/site-conf.xsd
- component://<component-name>/webapp/<webapp-name>/WEB-INF/controller.xml
- Requests
- Request Events
- Event Context (parameters and return values)
- Event Handlers/Types
- Service Events
- simple-method Events
- Java Events
- Designing a new Event Handler
- Special Events: firstvisit, preprocessor, postprocessor, after-login
- Request Responses
- Views
- View Handlers/Types
- Designing a new View Handler
- Screen Widget Based Views - Templates, Widgets, etc
- Screen Widget
- Screen Definitions
- ofbiz/framework/widget/dtd/widget-screen.xsd
- component://<component-name>/widgets/**/*Screens.xml
- Screen -> Section
- Section -> Actions
- Section -> Widgets
- Section -> Conditions
- Screen Contexts (protected, inherited, etc)
- parameters Map: request attributes, request parameters, session attributes, application attributes
- Screen Decoration Pattern
- Form Widget
- Form Definitions
- ofbiz/framework/widget/dtd/widget-form.xsd
- component://<component-name>/widgets/**/*Forms.xml
- Form Element
- Form Actions
- Form Auto-Fields from Entities and Services
- Form Fields
- Form Sort Order
- Menu Widget
- Menu Definitions
- ofbiz/framework/widget/dtd/widget-menu.xsd
- component://<component-name>/widgets/**/*Menus.xml
- Menu Items
- Tree Widget
- Tree Definitions
- ofbiz/framework/widget/dtd/widget-tree.xsd
- component://<component-name>/widgets/**/*Trees.xml
- Tree Nodes
- BeanShell
- Data Preparation Actions
- http://www.beanshell.org
- component://<component-name>/webapp/<webapp-name>/WEB-INF/actions/*/.bsh
- Java Syntax, with some scripting like features
- Dynamic Types
- FreeMarker
- Content Templates
- http://www.freemarker.org
- component://<component-name>/webapp/<webapp-name>/*/.ftl
- PHP-like Syntax with Java Robustness and Flexibility
- Control Constructs (#if/#else/#elseif, #list, #assign)
- Built-ins
- Existence Concept and Fail-Fast (?exists, ?has_content, ?if_exists)
- OFBiz-specific Transforms: ofbizUrl, ofbizContentUrl, etc
- Generating PDFs (or other print formatted documents)
- Introduction to XSL:FO - Like HTML, but for Page Oriented Layout
- A Powerful Combination: Screen Widget, BeanShell, FreeMarker, and FOP
- How to Setup the view-map in controller.xml
- Screen Widget
- JPublish Based Views - Generic Templates
- JPublish
- Page Definitions
- http://www.jpublish.org
- component://<component-name>/webapp/<webapp-name>/WEB-INF/jpublish.xml
- component://<component-name>/webapp/<webapp-name>/WEB-INF/pagedefs/*/.xml
- Page Variables
- Decoration Templates
- Content, Template, and Page Actions
- Just as in Screen Widget use BeanShell for data preparation and FreeMarker for templates
- JPublish
- Region Based Views - Servlet/JSP Templates
- ofbiz/framework/webapp/dtd/regions.xsd
- Region Framework
- Defining Template Based Regions
- Defining Inheritance or Region Based Regions
- Using, or Not Using, Sections
- OFBiz Taglib
- URL Tags
- Conditional Tags
- Flow Control Tags
- Data Presentation Tags
- Internationalization Tags
- Service Engine Tags
- Other Tags
- Control Servlet
- MiniLang
- ofbiz/framework/minilang/dtd/simple-methods.xsd
- *Services.xml, *SimpleMethods.xml, et cetera
- simple-map-processor
- General Concept
- Make In String Operations
- Process Field Operations
- simple-method
- General Concept
- Call Operations
- Java Call Operations
- Control and Error Handling Operations
- Event Specific Operations
- Service Specific Operations
- Method Environment Operations
- Entity Engine Misc. Operations
- Entity Engine Find Operations
- Entity Engine Value Operations
- Entity Engine List Operations
- Entity Engine Transaction Operations
- Conditional (If) Operations
- Other Operations
- Some Examples
Part 4: The Entity and Service Engines
- The Entity Engine
- ofbiz/website/docs/entity.html
- ofbiz/website/docs/entityconfig.html
- Architecture & Design Goals
- Database (or datasource) Agnostic
- Dynamic API Behaves According to Entity Definitions
- Minimal Redundancy from Data Layer Artifacts (easier implementation and maintenance)
- Uses JDBC and JTA J2EE Components
- Can operate in the same transaction with EJB, JDO, Hibernate, etc code
- Can drop down to JDBC when necessary
- Choice of Tools for Ease/Efficient or Flexibility
- Configuration
- ofbiz/framework/entity/dtd/entity-config.xsd
- ofbiz/framework/entity/config/entityengine.xml
- Transaction (JTA) Setup
- Delegators
- Datasources
- JDBC Drivers (ofbiz/framework/entity/lib/jdbc)
- Distributed Cache Clearing
- Data Type Dictionary
- ofbiz/framework/entity/dtd/fieldtypemodel.xsd
- ofbiz/framework/entity/fieldtype/fieldtype*.xml
- Entity Definition
- Entity Groups & Delegation
- ofbiz/framework/entity/dtd/entitygroup.xsd
- entitydef/entitygroups*.xml
- Entity Definitions
- ofbiz/framework/entity/dtd/entitymodel.xsd
- entitydef/entitymodel*.xml
- Entities
- Fields
- Primary Keys
- Relationships
- Indices
- View Entity Definitions
- Member Entities
- Field Aliases
- View Links
- Relationships
- Joins: Inner & Outer
- Grouping and Summary Data
- Entity Groups & Delegation
- Entity ECA (Event-Condition-Action) Rules
- ofbiz/framework/entity/dtd/entity-eca.xsd
- entitydef/eecas*.xml
- When to Use an Entity ECA: Data Maintenance, not Business Processes
- Defining Entity ECAs
- Limitations
- Entity Engine Caching
- Theory of Operation
- UtilCache API
- The Webtools Cache Pages
- cache.properties
- Automatic & Manual Cache Clearing
- Distributed Cache Clearing Note
- The Entity Engine API
- The GenericDelegator API
- Factory Methods (GenericDelegator, GenericPK, GenericValue)
- Creating, Storing & Removing
- Finding
- By Primary Key
- By And
- By Condition
- EntityConditions
- EntityFieldMap
- EntityExpr
- EntityConditionList
- EntityWhereString (caution)
- EntityConditions
- The EntityListIterator (remember to close)
- The DynamicViewEntity
- The GenericEntity API
- GenericPK
- GenericValue
- Sequenced Keys
- delegator.getNextSeqId
- SequenceValueItem entity (SEQUENCE_VALUE_ITEM table) - update to avoid key collisions!
- Overview of GenericHelper Interface
- The GenericDelegator API
- Entity XML Import/Export Files
- XML File Format: Basic
- XML File Format: Pre-Transformed
- Command Line Import
- WebTools WebApp Import and Export Pages
- Entity Sync
- Theory of Operation
- Time-based Synchronization
- Suitable for Large Data Sets
- Best For Ongoing Incremental Changes (as opposed to large infrequent changes)
- EntitySync and Related Entities
- Sample EntitySync Settings, and Demo Scheduled Job
- WebTools EntitySync Status Page
- Theory of Operation
- Entity Engine Pages in WebTools
- The Service Engine
- Architecture & Design Goals
- Agnostic Service Calls
- Implementation Agnostic
- Location Agnostic
- Support for Synchronous, Asynchronous, and Scheduled Calls
- Attribute/Parameter Validation
- Service Engines
- The GenericEngine Interface
- Overview of Existing Engines
- See definitions in serviceengine.xml, in the engine element
- simple
- java
- interface
- group
- route
- Remote: rmi, jms, soap
- Scripting: bsh, jacl, javascript, jpython
- workflow (Shark Workflow Engine, not old OFBiz Workflow Engine)
- Designing a New Engine
- Agnostic Service Calls
- Service Engine Configuration
- website/docs/serviceconfig.html
- ofbiz/framework/service/dtd/service-config.xsd
- ofbiz/framework/service/config/serviceengine.xml
- JNDI Servers & Resource Loaders
- Global Service Definition Files
- Service Group and SECA Rule Files
- JMS Servers
- Service Definitions
- ofbiz/framework/service/dtd/services.xsd
- servicedef/services*.xml
- WebTools Service Reference
- Parameters and Validation
- Interface Services
- Service Authentication
- Transaction Control
- use-transaction
- require-new-transaction
- transaction-timeout
- Implementing Services
- Service Context (parameters and return values)
- Java Services
- Bean Shell Services
- simple-method Services
- Remote Services: JMS, RMI, HTTP, etc
- Calling Services
- Synchronous, Asynchronous, & Scheduled
- WebTools Service Call Log
- Calling From:
- Java
- simple-method
- Control Servlet
- HTTP, SOAP, etc Remote Clients
- Scheduled Services
- Call from Java (as above)
- Setup in Imported Entity XML File
- WebTools Service Job Screens
- Service Engine RemoteDispatcher
- JNDI & RMI Basics
- rmi-dispatcher Container (in ofbiz-containers.xml)
- ExampleRemoteClient.java
- Service Groups
- ofbiz/framework/service/dtd/service-group.xsd
- servicedef/groups*.xml
- Service Definition for a Group
- Defining Groups
- Groups
- Services Per Group
- Service Event-Condition-Action (ECA) Rules
- ofbiz/framework/service/dtd/service-eca.xsd
- servicedef/secas*.xml
- Defining ECA Rules
- Events
- Conditions Per Event
- Actions Per Event
- Service Mail-Condition-Action (MCA) Rules
- ofbiz/framework/service/dtd/service-mca.xsd
- servicedef/smcas*.xml
- Mail Client Setup (ofbiz-containers.xml)
- Defining MCA Rules
- Field Conditions
- Header Conditions
- Service Conditions
- Actions
- SOAP Service and Service Engine Services
- Default Context-Envelope Mapping
- Call SOAP Services Through the Service Engine
- Call Service Engine Services From a SOAP Client
- Architecture & Design Goals
Part 5: Business Process Management, Rule Engines, Data Files, etc
- The Workflow Engine
- Process Management Concepts
- Workflow Style
- States & Transitions
- WfMC & OMG
- OFBiz Workflow
- Shark & JaWE
- Message Flow Style
- Messages & Nodes (consumers & producers)
- ebXML BPSS (Business Process Specification, like interface)
- BPML & BPMI
- SOAP Related Standards
- Workflow Style
- Workflow Concepts - WfMC Style
- Processes
- Activities
- Manual Start/End
- Automatic Start/End
- Transitions
- Splitting and Merging
- Workflow Data Context
- Asynchronous Execution
- The OFBiz Workflow Engine
- NOTE: The OFBiz Workflow Engine is planned to be replaced by the Shark Workflow Engine, so this is more informational than representative what will be covered.
- Workflow Engine Architecture
- Service Engine Based
- Calling Workflows Through Service Engine
- Calling Other Services in a Workflow
- Uses Entity Engine for Workflow Definition and Run-Time Data Persistence
- Service Engine Based
- Designing Workflows
- What Needs to be Done?
- Who Will Do What?
- What Dependencies Exist Between Activities?
- Defining Workflows
- Basic XPDL
- Working With Parties, Groups, and Roles
- OFBiz Extensions
- Importing and Managing Workflow Definitions
- Running Workflows
- Interacting With Running Workflows
- Client API (UI development)
- Monitoring & Testing Workflows
- The Enhydra Shark Workflow Engine
- http://www.enhydra.org/workflow/shark/index.html
- OFBiz Shark Integration (wrappers, etc)
- Shark Webapp
- Integration and Usage Status
- Process Management Concepts
- Rule Engines
- General Concepts
- Inferencing Engines (Forward/Backward Chaining, Prolog-style)
- Constraint-based Optimization
- Open Source Engines (JBoss Rules, Mandarax, etc)
- The Old (gone) OFBiz Rule Engine
- Commercial Rule Engines: Enterprise Oriented and Big Bucks (Blaze, iLog, etc)
- General Concepts
- The Data File Tool
- The Wonderful World of Flat Files
- Generic Data Structures for Flat File Data (very similar to the Entity Engine structures)
- ofbiz/framework/datafile/dtd/datafiles.xsd
- XML file locations vary, usually under the script directory (ie on the classpath)
- Defining Data Files
- The Data File API
Part 6: Review, Q&A
- Review
- Q&A
1 Comment
Unknown User (eqi)
Excuse me, how can I get this course?
I did not find complete documents on ofbiz, so I can not begin work with it.