- 浏览: 100495 次
- 性别:
- 来自: 武汉
最新评论
-
zljerityzljerity:
<#assign ipage=page?number&g ...
freeMark全解 -
qiankai86:
...
freeMark全解
simple-map-processor 和 simple-method XML files
simple-map-processor的两个主要功能:校验,转换
<!DOCTYPE simple-map-processors PUBLIC "-//OFBiz//DTD Simple Methods//EN" "http://www.ofbiz.org/dtds/simple-methods.dtd"> <simple-map-processors>
<simple-map-processor name="update">
<make-in-string field="estimatedStartDate"> <in-field field="estimatedStartYear"><constant>-</constant> <in-field field="estimatedStartMonth"><constant>-</constant> <in-field field="estimatedStartDay"><constant>T</constant> <in-field field="estimatedStartHour"><constant>:</constant> <in-field field="estimatedStartMinute"><constant>:</constant> <in-field field="estimatedStartSecond"> </make-in-string>
<process field="workEffortId"><copy replace="false"/></process> <process field="scopeEnumId"><copy/></process> <process field="currentStatusId"><copy/><not-empty><fail-message message="Status is missing."/></not-empty></process> <process field="priority"><convert type="Long"><fail-message message="Priority is not a valid whole number."/></convert></process>
<process field="estimatedStartDate"> <compare-field operator="less" field="estimatedCompletionDate" type="Timestamp" format="yyyy-MM-dd'T'HH:mm:ss"> <fail-message message="Estimated Start date/time must be BEFORE End date/time."/></compare-field> <convert type="Timestamp" format="yyyy-MM-dd'T'HH:mm:ss"> <fail-message message="Estimated Start Date is not a valid Date-Time."/></convert></process>
<process field="estimatedCompletionDate"> <convert type="Timestamp"><fail-message message="Estimated Completion Date is not a valid Date-Time."/></convert></process> <process field="estimatedMilliSeconds"> <convert type="Double"><fail-message message="Estimated Milli-seconds is not a valid number."/></convert></process> </simple-map-processor>
<simple-map-processor name="delete"> <process field="workEffortId"><copy/><not-empty><fail-message message="Work Effort ID is missing."/></not-empty></process> </simple-map-processor>
</simple-map-processors>
simple-method 是可以被Control Servlet 或 a service 调用的Event的的简单实现
<event type="simple" path="org/ofbiz/commonapp/workeffort/workeffort/WorkEffortSimpleEvents.xml" invoke="update"/>
Sm 可以被作为static 方法调用(调用者可以是Control Servlet or a service),或者作为一个类调用(调用者可以是Control Servlet or a service),也可以通过一个Entity 的 controller 配置文件:
<event type="simple" path="org/ofbiz/commonapp/workeffort/workeffort/WorkEffortSimpleEvents.xml" invoke="update"/>
或一个 service 通过一个entry 在一个 services.xml 文件,像下面:
<service name="createPartyRole" engine="simple"
location="org/ofbiz/commonapp/party/party/PartyRoleServices.xml" invoke="createPartyRole" auth="true">
<description>Create a Party Role (add a Role to a Party)</description>
<attribute name="partyId" type="String" mode="IN" optional="true"/>
<attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
</service>
Mini-Language 可以调用 Simple Map Processors, Services and bsh scripts, 操作 entity 相关的操作, and 创建消息返回给调用者. Specific operations can be 附上 in if blocks to execute conditionally and values or fields can be copied around in the maps, lists and method environment.
有许多标签可以得到或者设置属性 到/从一个 request 或者 session object 当被作为一个事件调用 或者设置属性作为返回结果当作为一个服务的时候。如果你包含一个env-to-request 操作,它将仅仅被作为一个enent的时候才会被调用 。一个a env-to-result 操作见仅仅被作为一个service时才可以调用。 Everything else is the same when called as an event or a service which makes it easy to write 灵活的逻辑that can be mounted/applied in various ways.
下面是simple-method标签的完整的属性表:
AttributeName |
Reqd? |
DefaultValue |
Description |
method-name |
Y |
N/A |
A name (preferably a legal Java identifier) for this method. This name must be unique for the XML file it is in as it will be used to reference this method externally. |
short-description |
Y |
N/A |
A short description of the method for certain system error messages. |
login-required |
N |
"true" |
Is a logged in user (UserLogin object, or login.username and login.password Strings) required to run this method? "true" or "false". |
use-transaction |
N |
"true" |
Create a transaction if none exists for this thread? "true" or "false". |
default-error-code |
N |
"error" |
The default error return code. |
default-success-code |
N |
"success" |
The default success return code. |
parameter-map-name |
N |
"parameters" |
As event: copy of request parameters |
event-request-object-name |
N |
"request" |
(as event only) |
event-response-code-name |
N |
"_response_code_" |
(as event only) |
event-error-message-name |
N |
"_error_message_" |
(as event only) |
event-event-message-name |
N |
"_event_message_" |
(as event only) |
service-response-message-name |
N |
"responseMessage" |
(as service only) |
service-error-message-name |
N |
"errorMessage" |
(as service only) |
service-error-message-list-name |
N |
"errorMessageList" |
(as service only) |
service-success-message-name |
N |
"successMessage" |
(as service only) |
service-success-message-list-name |
N |
"successMessageList" |
(as service only) |
delegator-name |
N |
"delegator" |
A GenericDelegator object to use in the method |
security-name |
N |
"security" |
A Security object to use in the method |
dispatcher-name |
N |
"dispatcher" |
A LocalDispatcher object to use in the method |
访问特殊 Contex的语法
访问Map成员,属性field-name="product.productName"
将引用product
Map的productName
成员,另一种写法是map-name="product" field-name="productName" ,下面的写法更加自由:name="products.widget.productName",这句将访问products (Map类型)的widget成员(也是一个Map类型)的productName成员
访问List 成员,例子:field-name="products[0].productName"
将访问products(List类型)的第一个元素的productName属性。为了更有用,,你可以从环境中得到一个List的索引,如:field-name="products[${currentIndex}].productName"
,甚至一个Map的引用:field-name="products[${currentIndex}].${currentMember}"
call-map-processor
call-map-processor 标签调用一个简单的map processor 从一个存在的map 或创建一个新的map 或者添加到已经存在的map中去,如果这个名字的out-map 已经存在的话。 Resulting messages 被加入一个命名的 list, 如果这个名字的list不存在的话,一个新的List就会被创建. 记住,同一个context中所有的map和list必须有唯一的名字
AttributeName |
Required? |
Description |
xml-resource |
N |
The full path and filename on the classpath of the XML file which contains an external map processor to execute. This is only required if an external map processor is desired. |
processor-name |
N |
The name of the external map processor to execute in the specified xml-resource. This is only required if an external map processor is desired. |
in-map-name |
Y |
The name of a map in the method environment to use as the input map. |
out-map-name |
Y |
The name of a map in the method environment to use as the output map. Will be created if it does not exist already. If already exists will be added to in place. |
error-list-name |
N |
The name of a list in the method environment that the error messages will be added to. Will be created if it does not exist. Defaults to "error_list". |
Sub-ElementName |
HowMany |
Description |
simple-map-processor |
0 or 1 |
Uses the same definition as the simple-map-processor in the context of a simple-map-processors XML file. Allows for an inlined simple-map-processor. |
call-service
这个标签通过服务引擎调用一个服务,如果特殊的error code被返回,那么事件会被丢弃,当前线程中的事务会被回滚。否则,就继续处理下去
result-to-request 和 result-to-session elements will be 忽略当调用一个service context的时候
AttributeName |
Required? |
Description |
service-name |
Y |
|
in-map-name |
Y |
|
include-user-login |
N |
Defaults to "true". |
error-code |
N |
Defaults to "error". |
success-code |
N |
Defaults to "success". |
Sub-ElementName |
HowMany |
Description |
error-prefix |
0 or 1 |
|
error-suffix |
0 or 1 |
|
success-prefix |
0 or 1 |
|
success-suffix |
0 or 1 |
|
message-prefix |
0 or 1 |
|
message-suffix |
0 or 1 |
|
default-message |
0 or 1 |
|
results-to-map |
0 to many |
|
result-to-field |
0 to many |
|
result-to-request |
0 to many |
|
result-to-session |
0 to many |
|
result-to-result |
0 to many |
call-service-asynch
返回结果会被忽略,因此没有返回消息会被使用,但会有系统错误,如:数据库错误
AttributeName |
Required? |
Description |
service-name |
Y |
|
in-map-name |
Y |
|
include-user-login |
N |
Defaults to "true". |
call-bsh
bsh的context 是当前simple-method 环境中的maps, lists 和特殊的objects whose names are defined in the simple-method attributes.
The current env 不能被修改, but if a Map 被返回 by the bsh block ,map 中的成员将被存入当前的 env.
Error messages go on the error list and are handled with the check-errors tag.
AttributeName |
Required? |
Description |
resource |
N |
|
error-list-name |
N |
Defaults to "error_list". |
call-simple-method
call-simple-method 标签调用另一个simple-method 在同一个 context中, 包括所有的environment fields, either the event or service objects that the calling simple-method was called with.
AttributeName |
Required? |
Description |
xml-resource |
N |
The full path and filename on the classpath of the XML file which contains an external simple-method to execute. This is only required if a simple-method in a different file is desired. |
method-name |
Y |
The name of the simple-method to execute in the specified xml-resource, or in the current XML file if no xml-resource is specified. |
create-object
out-map 同上,simple-map-processor 标签可以放在 call-map-processor 标签里面。
AttributeName |
Required? |
Description |
xml-resource |
N |
The full path and filename on the classpath of the XML file which contains an external map processor to execute. This is only required if an external map processor is desired. |
processor-name |
N |
The name of the external map processor to execute in the specified xml-resource. This is only required if an external map processor is desired. |
in-map-name |
Y |
The name of a map in the method environment to use as the input map. |
out-map-name |
Y |
The name of a map in the method environment to use as the output map. Will be created if it does not exist already. If already exists will be added to in place. |
error-list-name |
N |
The name of a list in the method environment that the error messages will be added to. Will be created if it does not exist. Defaults to "error_list". |
Sub-ElementName |
HowMany |
Description |
simple-map-processor |
0 or 1 |
Uses the same definition as the simple-map-processor in the context of a simple-map-processors XML file. Allows for an inlined simple-map-processor. |
call-object-method
Calls a method on an existing object that exists in a field in the environment or in a map in the environment.
The string and field sub-elements are passed to the method as arguments in the order they are specified. If the sub-elements do not match the method arguments an error will be returned.
The return value will be put in the named field if an value is returned and if a field and optionally a map name are specified.
AttributeName |
Required? |
Description |
obj-field-name |
Y |
The name of the field the object is in that has the method to be called. |
obj-map-name |
N |
The name of the map the field of the object is in that has the method to be called. If this is not specified the environment will be used to find the field in. |
method-name |
Y |
The name of the method to call on the given object. |
ret-field-name |
N |
The name of the field to put the result in. If not specified any return value will be ignored. |
ret-map-name |
N |
The name of the map the field of the return value is in. If not specified but the field name is then the environment will be used to find the field in. |
Sub-ElementName |
HowMany |
Description |
string |
0 to many |
Used to specify an inline String argument to the method call. |
field |
0 to many |
Used to specify a field to be passed as an argument to the method call. The field can be in a map in the environment or if no map-name is specified then the field will come directly from the environment. |
call-class-method
Calls a static method on a class.
The string and field sub-elements are passed to the method as arguments in the order they are specified. If the sub-elements do not match the method arguments an error will be returned.
The return value will be put in the named field if an value is returned and if a field and optionally a map name are specified.
AttributeName |
Required? |
Description |
class-name |
Y |
The name of the class to call the static method on. |
method-name |
Y |
The name of the static method to call on the given class. |
ret-field-name |
N |
The name of the field to put the result in. If not specified any return value will be ignored. |
ret-map-name |
N |
The name of the map the field of the return value is in. If not specified but the field name is then the environment will be used to find the field in. |
Sub-ElementName |
HowMany |
Description |
string |
0 to many |
Used to specify an inline String argument to the method call. |
field |
0 to many |
Used to specify a field to be passed as an argument to the method call. The field can be in a map in the environment or if no map-name is specified then the field will come directly from the environment. |
call-simple-method
map-to-map
field-to-field
The field-to-field tag copies a field from a map to a field in another map.
field-to-list
The field-to-list tag appends a field to the specified list.
env-to-field
The env-to-field tag copies a field from the method environment to a field in a map.
field-to-env
The field-to-env tag copies a field from a map to a field in the method environment.
string-to-field
The string-to-field tag puts the inlined string value in the specified field.
string-to-list
The string-to-list tag appends the inlined string value in the specified List.
to-string
The to-string tag converts the Object in the specified field to a String, putting the string in the same field.
clear-field
The clear-field tag clears/removes the specified field.
AttributeName |
Required? |
Description |
map-name |
N |
The name of the map in the method environment. If not specified the field-name will be used to get the field from the method environment. |
field-name |
Y |
The name (key) of the map field to use. |
iterate
The operations contained by the iterate tag will be executed for each of the entries in the list, and will make the current entry available in the method environment by the entry-name specified. This tag can contain any of the simple-method operations, including the conditional/if operations.
first-from-list
The first-from-list tag will get the first entry from the given list and put it in the environment field with the given entry-name.
Entity Engine Misc. Operations
now-timestamp-to-env
The now-timestamp-to-env tag creates a java.sql.Timestamp object with the current date and time in it and puts it in a field in the method environment
now-date-to-env
The now-date-to-env tag creates a java.sql.Date object with the current date in it and puts it in a field in the method environment.
sequenced-id-to-env
The sequenced-id-to-env tag gets a sequenced ID from the Entity Engine (through the delegator) and puts it in the specified method environment field. The object will be a java.lang.Long, but can of course be converted to a String.
AttributeName |
Required? |
Description |
sequence-name |
Y |
The name of the sequence to pass to the delegator. The same name must always be used for sequenced IDs that will be used for a certain entity field otherwise non-unique keys may result. |
env-name |
Y |
The name of the method environment field the sequenced ID will be put in. |
set-current-user-login
The set-current-user-login tag sets the UserLogin GenericValue object to be used for authentication for the rest of the method. This is mostly used for calling services, etc.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the UserLogin GenericValue object. |
find-by-primary-key
The find-by-primary-key tag uses the delegator to find an entity value by its primary key. The resulting GenericValue object will be placed in the method environment using the specified value-name.
find-by-and
The find-by-and tag uses the delegator to find entity values by anding the fields passed in the map. The resulting GenericValue objects will be placed in the method environment using the specified list-name.
filter-list-by-and
The filter-list-by-and tag filters the given list by the fields in the specified map.
Entity Engine Value Operations
make-value
The make-value tag uses the delegator to construct an entity value. The resulting value will not necessarily exist in the database, but will simply be assembled using the entity-name and fields map. The resulting GenericValue object will be placed in the method environment using the specified value-name.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the GenericValue object. |
entity-name |
Y |
The name of the entity to construct an instance of. |
map-name |
N |
The name of a map in the method environment that will be used for the entity fields. |
clone-value
The clone-value tag make a copy of the value in the method environment field specified by value-name. The resulting GenericValue object will be placed in the method environment using the specified new-value-name.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the GenericValue object. |
new-value-name |
Y |
The name of the method environment field that will contain the new GenericValue object. |
create-value
The create-value tag persists the specified GenericValue object by creating a new instance of the entity in the datasource. An error will result if an instance of the entity exists in the datasource with the same primary key.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the GenericValue object. |
store-value
The store-value tag persists the specified GenericValue object by updating the instance of the entity in the datasource. An error will result if an instance of the entity does not exist in the datasource with the same primary key.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the GenericValue object. |
remove-value
The remove-value tag removes the specified GenericValue object by removing the instance of the entity in the datasource. An error will result if an instance of the entity does not exist in the datasource with the same primary key.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the GenericValue object. |
remove-by-and
The remove-by-and tag uses the delegator to remove entity values from the datasource and is constrained by anding the fields passed in the map. Make sure the map contains something, or all values will be removed.
AttributeName |
Required? |
Description |
entity-name |
Y |
The name of the entity to remove instances of. |
map-name |
Y |
The name of a map in the method environment that will be used for the entity fields. |
clear-cache-line
Uses the delegator to clear elements from the cache; intelligently looks at the map passed to see if it is a byPrimaryKey, and byAnd, or an all.
AttributeName |
Required? |
Description |
entity-name |
Y |
The name of the entity to clear cache lines of. |
map-name |
Y |
The name of a map in the method environment that will be used for the entity fields. If the fields in the map form the full primary key the entry will be removed from the byPrimaryKey cache. If the map exists but the fields do not include a full primary key the entry will be removed from the byAnd cache. If no map-name is specified the entry will be removed from the all cache. |
clear-entity-caches
This is a very simple tag that should be used sparingly because of the performance impact. It clears all lines from all Entity Engine caches. It has no attributes or sub-elements.
set-pk-fields
Looks for each PK field in the named map and if it exists there it will copy it into the named value object.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the GenericValue object. |
map-name |
Y |
The name of a map in the method environment that will be used for the entity fields. |
set-if-null |
N |
Specifies whether or not to set fields that are null or empty. Defaults to true. |
set-nonpk-fields
Looks for each non-PK field in the named map and if it exists there it will copy it into the named value object.
AttributeName |
Required? |
Description |
value-name |
Y |
The name of the method environment field that contains the GenericValue object. |
map-name |
Y |
The name of a map in the method environment that will be used for the entity fields. |
set-if-null |
N |
Specifies whether or not to set fields that are null or empty. Defaults to true. |
<!DOCTYPE simple-methods PUBLIC "-//OFBiz//DTD Simple Methods//EN" "http://www.ofbiz.org/dtds/simple-methods.dtd"> <simple-methods> <simple-method method-name="createProduct" short-description="Create an Product"> <check-permission permission="CATALOG" action="_CREATE"><fail-message message="Security Error: to run createProduct you must have the CATALOG_CREATE or CATALOG_ADMIN permission"/></check-permission> <check-id field-name="productId" map-name="parameters"/> <check-errors/> <make-value value-name="newEntity" entity-name="Product"/> <set-nonpk-fields map-name="parameters" value-name="newEntity"/> <set-pk-fields map-name="parameters" value-name="newEntity"/> <now-timestamp-to-env env-name="nowTimestamp"/> <env-to-field env-name="nowTimestamp" field-name="lastModifiedDate" map-name="newEntity"/> <env-to-field env-name="nowTimestamp" field-name="createdDate" map-name="newEntity"/> <field-to-field field-name="userLoginId" map-name="userLogin" to-field-name="lastModifiedByUserLogin" to-map-name="newEntity"/> <field-to-field field-name="userLoginId" map-name="userLogin" to-field-name="createdByUserLogin" to-map-name="newEntity"/> <create-value value-name="newEntity"/> <!-- induce keywords if autoCreateKeywords is emtpy or Y--> <if-empty field-name="autoCreateKeywords" map-name="newEntity"> <call-bsh><![CDATA[org.ofbiz.commonapp.product.product.KeywordSearch.induceKeywords(newEntity);]]></call-bsh> <else> <if-compare field-name="autoCreateKeywords" map-name="newEntity" operator="equals" value="Y"> <call-bsh><![CDATA[org.ofbiz.commonapp.product.product.KeywordSearch.induceKeywords(newEntity);]]></call-bsh> </if-compare> </else> </if-empty> </simple-method> <simple-method event-name="create" short-description="Create Work Effort"> <call-map-processor xml-resource="org/ofbiz/commonapp/workeffort/workeffort/WorkEffortMapProcessors.xml" processor-name="update" in-map-name="parameters" out-map-name="context"/> <check-errors/> <call-service service-name="createWorkEffort" in-map-name="context"> <default-message>Work Effort successfully created.</default-message> <result-to-request result-name="workEffortId"/></service> </simple-method> <simple-method event-name="update" short-description="Update Work Effort"> <call-map-processor xml-resource="org/ofbiz/commonapp/workeffort/workeffort/WorkEffortMapProcessors.xml" processor-name="update" in-map-name="parameters" out-map-name="context"/> <check-errors/> <call-service service-name="updateWorkEffort" in-map-name="context"> <default-message>Work Effort successfully updated.</default-message></service> </simple-method> </simple-methods>
发表评论
-
ofbiz 之entity实体
2014-03-25 18:16 939ofbiz 之entity实体 1. 实体定义文件 实体定 ... -
ofbiz之entity 实体解析
2012-08-08 17:12 1507ofbiz 之entity实体 1. 实体定义文件 实体定 ... -
ofbiz之旅-实体简介(中英译)
2012-08-09 09:34 1167OFBIZ ENTITY ENGINE COOKBOOK = ... -
OFBIz之旅[结构]
2012-08-08 17:03 1482OFBIz之旅[结构] 注意: 1,持久层,在OFBI ... -
java concurrent 探秘(2)
2011-08-08 14:21 913java concurrent 探秘(2) Blo ... -
java concurrent 探秘
2011-08-08 11:02 820java concurrent 探秘 我们都知道,在JD ... -
one-to-one 一对一主键关联映射_单向
2011-08-03 17:22 1311one-to-one 一对一主键关联映射_单向 一对一主键关 ... -
JavaScript验证正则表达式大全
2011-07-27 17:18 915上篇文章《JavaScript验证正则表达式大全》说的是jav ... -
JavaScript验证正则表达式大全
2011-07-27 17:17 827JavaScript验证正则表达式大全 JavaScript验 ... -
js 收集1
2011-01-14 09:49 10551.javascript的数组API Js代码 ... -
struts 核心解析
2010-12-03 14:25 2444一、概述 Struts2的核心是一个Fil ... -
Java类库中的集合类解析
2010-11-29 16:05 1085这篇我准备从源码的高度来看看集合中各个实现类的是如何组织我们存 ... -
jboss classloader机制以及scope配置
2010-11-29 15:06 17121. 概念介绍 UCL : org.jboss.mx. ... -
总结和对比一下(jboss,tomcat,jetty)容器的classloader机制
2010-11-29 14:58 1976总结和对比一下(jboss,tomcat,je ... -
jboss,tomcat,jetty 容器的classloader机制
2010-11-29 14:53 4573背景 前段时间一直在做应用容器的迁移,将公司的应用 ... -
Session,Cookie,jsessionid和Url重写
2010-11-29 12:55 1929Session,Cookie,jsessionid ... -
DWR work
2010-11-25 18:14 888这段时间较闲,研究了一 ... -
CXF jaxws spring configuration
2010-11-19 16:27 1592最近在cxf-zh中有人问及了有关Spring配置CXF Cl ... -
线程安全总结2
2010-11-17 16:48 815站内很多人都问我,所谓线程的“工作内存”到底是个什么东西? ... -
java线程安全总结1
2010-11-17 16:47 884最近想将java基础的一些 ...
相关推荐
### OFBiz迷你语言知识点解析 #### 一、概述 OFBiz迷你语言是一种专门用于Apache OFBiz框架中的配置语言,主要用于定义简单的数据处理流程。通过这种语言,开发人员可以灵活地控制数据流,进行数据验证与转换操作...
根据给定的文件信息,以下是关于Apache OFBiz开发的知识点: ...此外,文档中也提及了Groovy语言,这是另一种动态脚本语言,用来替代了较老的BeanShell,因为Groovy提供了更为强大的语言特性和更丰富的库支持。
Ofbiz,全称为The Open For Business Project,是一个开源的企业应用框架,主要由Apache软件基金会维护。这个项目旨在提供一套全面的、可扩展的企业级应用程序解决方案,涵盖了电子商务、供应链管理、客户关系管理等...
这个平台采用Java语言开发,基于服务导向架构(SOA),并利用Spring框架和Hibernate ORM工具,确保了系统的可扩展性和可维护性。 在提供的OFBIZ_Demo压缩包中,用户可以找到OfBiz的演示版本,这是一套预配置的环境...
Ofbiz 安装与配置指南 Ofbiz 是一个基于 Java 的开源企业级电子商务平台,提供了强大的电子商务解决方案。为了帮助初学者快速上手 Ofbiz,我们将详细介绍 Ofbiz 的安装与配置过程。 环境搭建 在开始安装 Ofbiz ...
Apache Ofbiz是一个开源的企业应用框架,它为构建复杂的业务应用程序提供了全面的功能,包括供应链管理、电子商务、财务会计、人力资源等。对于初学者来说,理解Ofbiz的基本架构和工作原理是至关重要的。 Ofbiz的...
- **服务端脚本编写**:教授如何使用 OFBiz 提供的脚本语言进行服务器端编程。 - **界面定制**:提供方法来个性化前端用户界面,提高用户体验。 3. **系统管理**: - **监控与日志记录**:介绍如何设置和查看...
此外,书中可能还会介绍OFBIZ的Web界面开发,包括使用Freemarker模板语言创建动态页面,以及如何使用AJAX技术增强用户体验。对于扩展OFBIZ,你将学习到如何创建新的模块,编写定制的服务,以及如何部署和调试你的...
标题中的"ofbiz10.04表结构"指的是OFBiz 10.04版本的数据模型设计,这是企业级开源应用框架OFBiz的一个重要组成部分。OFBiz全称为Open For Business Project,它是一个用于构建企业应用程序的全面业务解决方案,涵盖...
《OFBiz API 开发文档详解》 在信息技术领域,OFBiz(Open For Business Project)是一个开源的企业级应用框架,主要用于构建复杂的电子商务系统。OFBiz 提供了一整套全面的业务组件,涵盖了从供应链管理到客户关系...
3. 视图与控制器:Ofbiz使用Freemarker模板语言来生成动态视图,而控制器则通过XML文件定义,负责处理HTTP请求并调用相应服务。 4. 测试与调试:Ofbiz提供了一套完善的测试框架,包括单元测试和集成测试。你可以...
要深入理解和开发OFBiz,你需要了解其组件模型、服务定义、XML配置文件的用途(如`build.xml`、`component.xml`)、JSP和Freemarker模板语言的使用,以及如何调试和部署自定义组件。 总之,OFBiz作为一个强大的开源...
9. **脚本语言支持**:Ofbiz 支持 Groovy 和 JavaScript 等脚本语言,开发者可以使用这些脚本语言编写动态逻辑,增强应用的灵活性。 10. **部署与配置**:Ofbiz 的部署和配置也是开发者需要了解的内容,包括服务器...
6. **国际化与本地化**:Ofbiz支持多语言环境,文档可能会讲解如何配置和实现中文环境。 7. **案例研究**:为了使概念更易于理解,文档可能会包含实际应用场景的案例分析。 8. **最佳实践**:对于开发和部署的最佳...
OFBiz 开发手册 OFBiz 是一个基于 Java 的开源电商平台,旨在提供一个灵活、可扩展、可配置的电商解决方案。本文档将作为一个 OFBiz 的入门教材,主要介绍 OFBiz 的环境搭建、安装以及用一个简单的应用作为例子介绍...
在本教程中,我们将深入探讨如何入门Apache Ofbiz的开发,这是一个开源的企业级应用框架,专为电子商务、供应链管理和企业资源规划等业务流程设计。Ofbiz提供了强大的组件化架构,使得开发者可以方便地构建和扩展...
OFBiz(Open For Business Project)是一个全面的企业级业务应用程序框架,它由Java语言编写,提供了一系列的服务、组件和工具,用于构建和管理电子商务、供应链管理、客户关系管理等多种业务应用。 OFBiz的核心...
【OFBiz Git 服务搭建详解】 OFBiz是一个开源的企业级应用框架,主要用于构建和管理电子商务系统。本教程将详细介绍如何在本地环境中搭建OFBiz项目,并使用Git进行版本控制。 首先,确保你拥有以下基础环境: 1. ...
《OFBiz数据结构设计详解》 OFBiz,全称为Open For Business Project,是一个开源的企业级应用框架,主要用于构建和管理电子商务、供应链管理、客户关系管理等业务系统。OFBiz的数据结构设计是其核心组成部分,它...