liferay中service.xml 元素解释

<!--
This is the DTD for the Service Builder parameters for Liferay Portal.

<!DOCTYPE service-builder PUBLIC
 "-//Liferay//DTD Service Builder 4.4.0//EN"
 "http://www.liferay.com/dtd/liferay-service-builder_4_4_0.dtd">
-->

<!--
The service-builder element is the root of the deployment descriptor for
a Service Builder descriptor that is used to generate services available to
portlets. The Service Builder saves the developer time by generating Spring
utilities, SOAP utilities, and Hibernate persistence classes to ease the
development of services.
-->
<!ELEMENT service-builder (namespace, entity+, exceptions?)>

<!--
package-path指定生成文件存放的位置。
-->
<!ATTLIST service-builder
 package-path CDATA #REQUIRED
>

<!--
The namespace element must be a unique namespace for this component. Table names
will be prepended with this namespace. Generated JSON JavaScript will be scoped
to this namespace as well (i.e., Liferay.Service.Test.* if the namespace is
Test).
namespace 对于每一个实体来说必须是唯一的。
-->
<!ELEMENT namespace (#PCDATA)>

<!--
An entity usually represents a business facade and a table in the database. If
an entity does not have any columns, then it only represents a business facade.
The Service Builder will always generate an empty business facade POJO if it
does not exist. Upon subsequent generations, the Service Builder will check to
see if the business facade already exists. If it exists and has additional
methods, then the Service Builder will also update the SOAP wrappers.

If an entity does have columns, then the value object, the POJO class that
is mapped to the database, and other persistence utilities are also generated
based on the order and finder elements.
-->
<!ELEMENT entity (column*, order?, finder*, reference*, tx-required*)>

<!--
name指定了实体的名字
table指定了实体在数据库中对应的表的名字,如果没有设置侧表的名字和实体的名字是相同的。
如果uuid设置成true,将自动添加一列,实体将自动生成基于uuid的查询和删除方法.默认值false.
如果local-service设置成true,将自动生成本地接口,默认值false
如果remote-service设置成true,将自动生成远程接口。默认值false;
persistence-class设置自己的持久类的名字。这个类必须实现生成的持久类接口或继承生成的持久类。它允许你在不修改生成的持久类的情况下,覆盖默认的方法
你能用自己的数据源和session Factory生成自己的类。指明spring的配置文件,在portal配置文件中,载入自己的spring文件,文件中必须定义了数据源和sessionFactory.然后设置data-source和 session Factory的值。
data-source 指定持久类使用的数据源,默认的时候,数据源是portal的数据源,数据源被session-Factory使用。
在数据源到spring的文件中可以看到。
tx-manager 指定 spring 使用的transaction manager.默认的是Spring和hibernate transaction mannager是liferay自带的.
-->
<!ATTLIST entity
 name CDATA #REQUIRED
 table CDATA #IMPLIED
 uuid CDATA #IMPLIED
 local-service CDATA #IMPLIED
 remote-service CDATA #IMPLIED
 persistence-class CDATA #IMPLIED
 data-source CDATA #IMPLIED
 session-factory CDATA #IMPLIED
 tx-manager CDATA #IMPLIED
>
<!--
column 对应数据库中的某个列。
-->
<!ELEMENT column (#PCDATA)>

<!--
name指定在实体中的getter和setter的方法。
type指定列的数据类型,字符串,逻辑值,或整型。
db-name指定对应的数据库中列的名字。
For example:

<column name="companyId" db-name="companyId" type="String" />
如何primary的值是true,则此列是关键字段的一部分,如果不止一个列被设置成true,则产生一个符合主键
如果entity和mapping-key属性被指定而没有mapping-table,那么将建立一个一对多的关系。
For example:

<column
 name="shoppingItemPrices"
 type="Collection"
 entity="ShoppingItemPrice"
 mapping-key="itemId"
/>

如果entity和mapping-table的值被指定而mapping-kay没有指定,将建立多对多的映射关系。
For example:

<column
 name="roles"
 type="Collection"
 entity="Role"
 mapping-table="Groups_Roles"
/>

id-type和id-param的用来创建一个自动生成,自动增加的关键字,当向数据库中插入一条记录时,关键字自动增加。
根据不同类型的数据库,可以用四种不同的方法来实现。所有的情况,模型实体的值应该是null,hibernate自动用自增的关键字代替null.如果id-type没有使用,关键字自动生成但不自动增加。
一、用一个类来生成关键字

For example:

<column
 name="id"
 type="Integer"
 primary="true"
 id-type="class"
 id-param="com.liferay.counter.service.persistence.IDGenerator"
/>

二、当没有另外的进程插入数据到同一个数据库的时,自动生成唯一的标识符。这种方法不应该用到群集环境中,但是适用所有的数据库
For example:

<column
 name="id"
 type="Integer"
 primary="true"
 id-type="increment"
/>
三、使用一个列标识符生成一个关键字
For example:

<column
 name="id"
 type="Integer"
 primary="true"
 id-type="identity"
/>
.
无论什么时候插入,实体生成一个标识列(自动生成的关键字)
The fourth implementation uses a sequence to generate a primary key.
四、用一个序列产生一个关键字。
For example:

<column
 name="id"
 type="Integer"
 primary="true"
 id-type="sequence"
 id-param="id_sequence"
/>
用这种实现方法,产生一个序列的SQL命令基于id-param的值(存储在/sql/sequences.sql).这个序列是自动生成唯一标别。仅DB2,ORACLE ,POSTGRESQL 和SAPDB能使用。
convert-null指定,如果数值为null是否自动转化成一个非空的值。当实体涉及到一个只读的表或视图的时候,特别有用,hibernate就不会进行没必要的更新。默认值是true.
-->
<!ATTLIST column
 name CDATA #REQUIRED
 db-name CDATA #IMPLIED
 type CDATA #REQUIRED
 primary CDATA #IMPLIED
 entity CDATA #IMPLIED
 mapping-key CDATA #IMPLIED
 mapping-table CDATA #IMPLIED
 id-type CDATA #IMPLIED
 id-param CDATA #IMPLIED
 convert-null CDATA #IMPLIED
>

<!--
order指定索引数据库时候的默认排列顺序。
-->
<!ELEMENT order (order-column+)>

<!--
by用来设定排列的顺序是asc(升序)或desc(降序)
-->
<!ATTLIST order
 by CDATA #IMPLIED
>

<!--
order-column根据指定的列来进行排序。
-->
<!ELEMENT order-column (#PCDATA)>

<!--

For example:

<order by="asc">
 <order-column name="parentLayoutId" />
 <order-column name="priority" />
</order>
For example:

<order by="asc">
 <order-column name="name" case-sensitive="false" />
</order>

The above settings will order by name and will not be case sensitive.

For example:

<order>
 <order-column name="articleId" order-by="asc" />
 <order-column name="version" order-by="desc" />
</order>

-->
<!ATTLIST order-column
 name CDATA #REQUIRED
 case-sensitive CDATA #IMPLIED
 order-by CDATA #IMPLIED
>

<!--
finder 生成一个查找的方法。
-->
<!ELEMENT finder (finder-column+)>

<!--
-->
<!ATTLIST finder
 name CDATA #REQUIRED
 return-type CDATA #REQUIRED
 where CDATA #IMPLIED
 db-index CDATA #IMPLIED
>

<!--
finder-column指定按照那一列来查找。
-->
<!ELEMENT finder-column (#PCDATA)>

<!--
name指定查找的方法名。
For example:

<finder name="CompanyId" return-type="Collection">
 <finder-column name="companyId" />
</finder>

The above settings will create a finder with the name findByCompanyId that will
return a Collection and require a given companyId. It will also generate
several more findByCompanyId methods that take in pagination fields (int begin,
int end) and more sorting options. The easiest way to understand this is to
look at a generated PersistenceImpl class. The Service Builder will also
generate removeByCompanyId and countByCompanyId.

See com.liferay.portal.service.persistence.LayoutPersistenceImpl for a good
example.

The attribute comparator takes in the values =, !=, <, <=, >, >=, or LIKE and is
used to compare this column.

The attribute case-sensitive is a boolean value and is only used if the column
is a String value.
-->
<!ATTLIST finder-column
 name CDATA #REQUIRED
 db-name CDATA #IMPLIED
 case-sensitive CDATA #IMPLIED
 comparator CDATA #IMPLIED
>

<!--
The reference element allows you to inject services from another service.xml
within the same class loader. For example, if you inject the Resource entity,
then you'll be able to reference the Resource services from your service
implementation via the methods getResourceLocalService and getResourceService.
You'll also be able to reference the Resource services via the variables
resourceLocalService and resourceService.
-->
<!ELEMENT reference (#PCDATA)>

<!--
See the comments in reference element.
-->
<!ATTLIST reference
 package-path CDATA #IMPLIED
 entity CDATA #IMPLIED
>

<!--
The tx-required element has a text value that will be used to match method names
that require transactions. By default, the methods: add*, check*, clear*,
delete*, set*, and update* require propagation of transactions. All other
methods support transactions but are assumed to be read only. If you want
additional methods to fall under transactions, add the method name to this
element.
-->
<!ELEMENT tx-required (#PCDATA)>

<!--
The exceptions element contain a list of generated exceptions. This doesn't save
a lot of typing, but can still be helpful.
-->
<!ELEMENT exceptions (exception*)>

<!--
See the comments in exceptions element.
-->
<!ELEMENT exception (#PCDATA)>

还没有翻译完,是service.xml使用的dtd文件

内容概要:本文围绕不确定环境下的多式联运路径优化问题展开研究,提出并实现了基于AFO算法、遗传算法(GA)和粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力和稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化问题时展现出更快的收敛效率和更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划问题提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标函数设计、约束条件处理及参数敏感性分析部分,可通过调整问题规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。
内容概要:本文研究了基于QLearning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,通过Matlab代码实现了控制算法的仿真验证。该方法融合强化学习的在线自适应能力与传统PID控制的稳定性优势,利用QLearning算法动态优化PID控制器的比例、积分、微分参数,以应对水下复杂流体环境、模型不确定性及外部干扰等挑战,从而提升AUV轨迹跟踪的精度、鲁棒性与动态响应性能。文中系统阐述了AUV的六自由度非线性动力学建模过程、QLearning算法的状态空间与动作空间设计、奖励函数构造及训练机制,并详细说明了PID参数自整定的闭环控制架构。仿真结果表明,相较于传统固定参数PID控制器,该智能控制策略在多种工况下均展现出更优的控制效果,有效抑制了超调,加快了响应速度,并增强了抗干扰能力。; 适合人群:具备自动控制理论、强化学习基础及Matlab/Simulink仿真能力,从事水下机器人、智能控制、海洋工程、自动化等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于AUV、UUV等无人水下平台的高精度自主导航与运动控制;②为解决非线性、强耦合、时变系统的控制器参数自适应整定问题提供智能化解决方案;③作为强化学习与经典控制理论深度融合的技术范例,推动智能控制算法在海洋装备中的工程化应用。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点剖析QLearning的状态-动作-奖励机制设计、PID参数更新逻辑及仿真对比实验结果,有条件者可在更复杂的动力学模型或实际硬件平台上进一步验证与优化算法性能。
内容概要:本文围绕新能源发电接入弱电网所引发的宽频带振荡问题展开深入研究,系统探讨了其振荡机理及抑制策略。通过构建Matlab代码与Simulink仿真模型,复现博士论文中的核心技术环节,涵盖系统建模、序阻抗分析、扫频辨识、稳定性判据等关键步骤,重点剖析新能源并网系统在弱电网条件下的动态交互特性与失稳机制。研究内容包括LCL型逆变器的分序阻抗建模、锁相环(PLL)引起的频率耦合效应、正负序阻抗特性及其对系统稳定性的影响,并揭示了宽频带耦合振荡的形成机理。在此基础上,提出针对性的振荡抑制方法,如阻抗重塑、控制参数优化与自适应调控策略。配套提供的完整代码与仿真模型为理论验证、算法迭代与二次开发提供了坚实的技术支撑。; 适合人群:具备电力系统、电力电子或自动化等相关专业背景,熟练掌握Matlab/Simulink仿真工具,从事新能源并网、电力系统稳定性分析、并网逆变器控制等方向研究的研究生、高校科研人员及电力行业工程技术人员。; 使用场景及目标:① 深入理解新能源发电系统在弱电网条件下产生宽频带振荡的物理本质与动态演化过程;② 掌握基于序阻抗的建模方法与扫频分析技术,用于评估并网系统的交互稳定性;③ 利用所提供的Matlab代码和Simulink仿真模型进行精确复现、算法验证、参数敏感性分析,并进一步开展创新性研究与工程应用。; 阅读建议:建议读者结合原始博士论文进行对照学习,按照理论推导、模型搭建、仿真运行、结果分析的流程逐步实践,重点关注系统参数设置、模块化建模逻辑、扫频算法实现细节以及稳定性判据的应用,以全面提升对新能源并网系统稳定性问题的分析与解决能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值