`
sslaowan
  • 浏览: 384850 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OAF个性化开发实例

阅读更多

EBS 11.5.10.2

 

 

需求

下图是Oracle标准页面,有一个简单的开发需求,当Expense Template等于“管理费用”时,Approver的LOV输入框默认为“XXX”,并且LOV 只读,不能进行选择。

oaf_per_example1

 

分析

 

这个看似极其简单的开发,其背后所隐藏的技术知识却是不那么简单的。

当Expense Template选择为“管理费用”时,Approver  LOV 输入框只读,这里牵涉到的开发基本为给Expense Template加上FireAction 的功能,

然后在Expense Template的Value Change事件 中去修改Approver  LOV 的只读属性。

因为开发规范是不允许直接修改Oracle的代码,所以此开发将通过集成标准的控制器类,在客户化的控制器类中实现添加Expense Template的FireAction功能,和修改Approver  LOV 只读属性,

然后通过个性化,将控制器类替换成客户化的控制器类。  

 

技术要点

 

1,修改Approver  LOV 的只读属性

刚刚进行OAF 开发的开发人员可能觉得这是很简单的事,只要在客户化的控制器类的processFormRequest ()方法中调用以下代码:

? View Code   JAVA
1
2
OAMessageLovInputBean lovBean =

 (

OAMessageLovInputBean)

webBean.findChildRecursive

(

"Approver"

)

;


lovBean.setReadOnly

(

true

)

;

就可以实现了,如果这样做开发,那么就错了,在运行时会抛出异常:

? View Code   TEXT
1
2
3
The OA passivation framework coding standard has been violated. 
Web bean properties cannot be modified in the controller processFormData or processFormRequest method. 
Web bean properties should be modified in the processRequest method only.

 

(这里有两个方法是例外,setValue()和setText(),因为Value并不影响控件树)为什么把LOV 设为只读会出错呢?这是因为OAF 在运行时,表现为一棵控件树。

当进入页面时,控件树被初始化创建,而当用户事件触发POST请求时,控件树并不会被重新生成(提高性能),要改变控件的属性只有两个办法,一个是重新生成控件树,二是使用PPR。

 

方法一:重构控件树

重构控件树就意味着在processFormRequest()方法处理事件时,需要Forward 到本页,并通过参数控制来设置Approver  LOV 只读,这样会刷新整个页面,而且对编码也带来困难。

方法二:使用PPR

实现方法是利用OAF 数据绑定机制 ,将Approver LOV的ReadOnly属性绑定到视图对象的属性,通过改变视图对象属性的值来控制Approver  LOV 的只读。

这里又引出第2个技术要点:

 

2,动态创建视图对象

 

创建视图对象需要首先创建OAViewDef 对象,然后利用OAViewDef对象来创建视图对象。

这里谈一下Oracle的一个开发规范,OAViewDef接口在oracle.apps.fnd.framework.server 包下,按照Oracle的规范,任何webui下的类不允许import任何server下的类。我是一个规范的严格遵守者,这样就会使开发变得更复杂。

要在server包下引用OAViewDef接口,就必须创建应用程序模块,将动态创建视图对象的代码移到应用程序模块中实现。在客户化控制器类中,动态创建应用程序模块,然后调用应用程序模块的方法。

 

实现步骤

 

假设开发人员对Oracle标准的页面结构都已经非常了解了,包括需要集成哪个标准的控制器,页面上所使用的视图对象。

1、创建客户化应用程序模块cux.oracle.apps.ap.oie.entry.server.CuxPVOAM

2、创建视图对象cux.oracle.apps.ap.oie.entry.server.CuxPVO,视图对象中只有一个临时属性ReadOnlyFlag,类型为Boolean(此步可选)

3、创建客户化控制器类,继承标准的控制器类

4、在CuxPVOAMImpl.java中创建两个方法:

? View Code   JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import

 oracle.apps.fnd.framework.OAViewObject

;


import

 oracle.apps.fnd.framework.server.OAViewDefImpl

;


import

 oracle.jbo.AttributeDef

;


import

 oracle.jbo.Row

;


……
 
public

 void

 initPVO(

)


{


    OAApplicationModuleImpl rootAM =

 (

OAApplicationModuleImpl)

getRootApplicationModule(

)

;


 
    // 创建视图对象


    OAViewDefImpl viewDef =

 (

OAViewDefImpl viewDef)

getOADBTransaction(

)

.createViewDef

(

)

;


    viewDef.setFullName

(

"CuxPVODef"

)

;


    viewDef.setViewObjectClass

(

"oracle.apps.fnd.framework.server.OAViewObjectImpl "

)

;


    viewDef.addTransientAttrDef

(

"ReadOnlyFlag"

,
                             "java.lang.Boolean"

,
                             null

,
                             false

,
                             AttributeDef.UPDATEABLE

)

;


 
    OAViewObject pvo =

 (

OAViewObject)

rootAM.createViewObject

(

"CuxViewPVO"

, viewDef)

;


    // 初始化PVO


    if

 (

!

pvo.isPreparedForExecution

(

)

)


    {


      pvo.executeQuery

(

)

;


    }


    pvo.setMaxFetchSize

(

1

)

;


    Row row =

 pvo.createRow

(

)

;


    pvo.insertRow

(

row)

;


    row.setAttribute

(

"ReadOnlyFlag"

, Boolean



.FALSE

)

;


  }


 
  public

 void

 handleTemplateChange(

)


  {


    OAApplicationModuleImpl rootAM =

 (

OAApplicationModuleImpl)

getRootApplicationModule(

)

;


    OAViewObject vo =

 (

OAViewObject)

rootAM.findViewObject

(

"XxxVO1"

)

;

 //标准的VO


    OAViewObject pvo =

 (

OAViewObject)

rootAM.findViewObject

(

"CuxViewPVO"

)

;


 
    if

 (

<

expense template的值等于X>

)

 
    {


      pvo.first

(

)

.setAttribute

(

"ReadOnlyFlag"

, Boolean



.TRUE

)

;


      vo.first

(

)

.setAttribute

(

"Xxx"

, <

value>

)

;

 // 设置Approver LOV绑定的视图对象属性值


    }


    else


    {


      pvo.first

(

)

.setAttribute

(

"ReadOnlyFlag"

, Boolean



.FALSE

)

;


    }

    
  }


}

 

5、在客户化控制器中添加相应代码

processRequest代码:

? View Code   JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public

 void

 processRequest(

OAPageContext pageContext, OAWebBean webBean)


{


  super

.processRequest

(

pageContext, webBean)

;


 
  // 启用Expense Template的FireAction功能


	OAMessageChoiceBean choiceBean =

 (

OAMessageChoiceBean)

webBean.findChildRecursive

(

"ExpenseTemplate"

)

;


  choiceBean.setFireActionForSubmit

(

"change"

,
                                null

,
                                null

,
                                true

)

;


 
  // 创建客户化应用程序模块


  OAApplicationModule rootAM =

 pageContext.getRootApplicationModule

(

)

;


  OAApplicationModule pvoAM =

 (

OAApplicationModule)

rootAM.findApplicationModule

(

"CuxPVOAM"

)

;


  if

(

pvoAM ==

 null

)


  {


      rootAM.createApplicationModule

(

"CuxPVOAM"

,"cux.oracle.apps.ap.oie.entry.server.CuxPVOAM"

)

;


      pvoAM =

 HssCustomizeHelper.getNestedAMInstance

(

rootAM, "CuxPVOAM"

)

;


  }


  pvoAM.invokeMethod

(

"initPVO"

)

;


 
  // 将ReadOnly属性绑定到视图对象属性


	OAMessageLovBean approverLov =

 (

OAMessageChoiceBean)

webBean.findChildRecursive

(

"Approver"

)

;


  approverLov.setAttributeValue

(

READ_ONLY_ATTR, new

 OADataBoundValueViewObject(

approverLov,"ReadOnlyFlag"

,"CuxPVO"

)

)

;


}

将开发测试后的代码发布到服务器。(测试可以在本地,将页面上的控制器类替换成客户化的控制器来进行)

 

processFormRequest代码:  

? View Code   JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public

 void

 processFormRequest(

OAPageContext pageContext, OAWebBean webBean)


{


  super

.processFormRequest

(

pageContext, webBean)

;


 
  OAApplicationModule rootAM =

 pageContext.getRootApplicationModule

(

)

;


  OAApplicationModule pvoAM =


      (

OAApplicationModule)

rootAM.findApplicationModule

(

"CuxPVOAM"

)

;


  if

(

pvoAM ==

 null

)


  {


      rootAM.createApplicationModule

(


          "CuxPVOAM"

,"cux.oracle.apps.ap.oie.entry.server.CuxPVOAM"

)

;


      pvoAM =

 HssCustomizeHelper.getNestedAMInstance

(

rootAM, "CuxPVOAM"

)

;


  }


 
  if

 (

"change"

.equals

(

pageContext.getParameter

(

EVENT_PARAM)

)

)

 
  {


    pvoAM.invokeMethod

(

"handleTemplateChange"

)

;


  }


}

 

HssCustomizeHelper.getNestedAMInstance()的代码如下:

? View Code   JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public

 static

 OAApplicationModule getNestedAMInstance(

OAApplicationModule parentAM, String



 nestedAMName)


{


  OAApplicationModule am =

 null

;


 
  String



[

]

 amNames =

 parentAM.getApplicationModuleNames

(

)

;


  for

 (

int

 i=

0

;

 i&

lt;

 amNames.length

;

 i++

)


  {


    if

 (

amNames[

i]

.endsWith

(

nestedAMName)

)


    {


      return

 (

OAApplicationModule)

parentAM.findApplicationModule

(

amNames[

i]

)

;


    }


    else


    {


      am =

 getNestedAMInstance(

(

OAApplicationModule)

parentAM.findApplicationModule

(

amNames[

i]

)

,nestedAMName)

;


      if

 (

am !=

 null

)


      {


        return

 am;


      }


    }


  }


  return

 am;


}

7、重启Apache

8、进入页面,设置个性化,替换标准的控制器类为客户化控制器类。

分享到:
评论

相关推荐

    OAF开发学习总结教程.doc

    1. **个人化和定制**:OAF允许用户根据业务需求对EBS进行深度个性化,包括页面布局、字段隐藏和业务流程的改变。 2. **安全与权限管理**:理解和配置OAF的安全模型,如责任、角色和访问控制,以确保数据安全和合规性...

    work flow& OAF

    4. **个性化和定制**:用户可以根据需求自定义界面,同时,开发者可以通过OAF提供特定角色的定制功能。 5. **安全性**:集成Oracle Identity Management,确保用户访问权限的安全控制。 6. **国际化和本地化**:支持...

    ORACLE EBS 开发基础

    - 配置文件(Profile)用于存储用户的个性化设置。 **33. 设置菜单导出的文件格式** - 通过配置菜单导出设置,可以控制导出文件的格式。 **34. IE打不开EBS** - 如果Internet Explorer无法打开EBS,可能是浏览器设置...

    Apollo 7.0行为预测模块升级:轨迹交互与评估器设计详解及其应用

    内容概要:本文详细解析了Apollo 7.0行为预测模块的关键升级点,主要包括新增的Inter-TNT模式、VECTORNET_EVALUATOR以及JOINTLY_PREDICTION_PLANNING_EVALUATOR。这些组件通过引入轨迹交互模拟、动态归一化、联合预测规划等创新机制,显著提高了障碍物轨迹预测的准确性和场景适应性。特别是在处理复杂交通场景如高速公路变道、十字路口交汇时表现出色。此外,文中还介绍了增量式特征更新机制的应用,有效减少了CPU占用,提升了系统的实时性能。 适用人群:适用于对自动驾驶技术感兴趣的开发者、研究人员和技术爱好者,尤其是那些希望深入了解Apollo平台行为预测模块工作原理的人群。 使用场景及目标:①帮助读者理解Apollo 7.0行为预测模块的技术细节;②指导开发者如何利用这些新技术提升自动驾驶系统的预测精度;③为研究者提供有价值的参考资料,促进相关领域的进一步探索。 其他说明:文章不仅提供了详细的代码解读,还包括了实际应用场景中的效果对比,使读者能够全面掌握新旧版本之间的差异。同时,附带的思维导图有助于快速理清各个子模块之间的调用关系和数据流向。

    基于S7-200 PLC与MCGS组态的智能交通灯控制系统设计及应用

    内容概要:本文详细介绍了利用西门子S7-200 PLC和MCGS组态软件构建智能交通灯控制系统的方法。首先阐述了系统的硬件配置,包括选用的PLC型号、输入输出设备及其具体的功能分配。接着深入探讨了梯形图编程的核心逻辑,如定时器嵌套、车流量检测与响应机制,确保红绿灯能够根据实际情况灵活调整。此外还讲解了MCGS组态界面的设计要点,通过图形化方式呈现交通状况并提供人机交互功能。最后分享了一些实际调试过程中遇到的问题及解决方案。 适合人群:从事工业自动化领域的工程师和技术人员,特别是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:适用于城市交通管理部门或相关科研机构进行智能交通系统的研究与开发;旨在提高道路交叉口的通行效率,减少拥堵现象。 其他说明:文中不仅提供了详细的理论指导,还包括了许多实践经验教训,对于初学者来说非常有价值。同时提到一些进阶话题,如加入V2V通信模块的可能性,为未来研究指出了方向。

    光伏特性曲线建模:基于Matlab与Simulink的分布式光伏系统仿真

    内容概要:本文详细介绍了光伏特性曲线模型的基本概念及其在Matlab和Simulink中的实现方法。首先阐述了光伏电池的电流-电压(I-V)和功率-电压(P-V)曲线的基础理论,包括理想二极管方程及相关参数的意义。接着展示了如何使用Matlab编写代码来计算并绘制简单的I-V曲线,随后探讨了Simulink环境下构建光伏特性曲线模型的方法,强调了图形化界面的优势。此外,还讨论了分布式光伏系统的特点,通过修改基础模型以适应多电池串联或并联系统的需求。文中不仅提供了具体的代码实例,还分享了一些实用的经验和技术细节,如温度系数、辐照度变化对模型的影响等。 适合人群:从事光伏系统研究的技术人员、高校相关专业师生、对光伏建模感兴趣的工程爱好者。 使用场景及目标:①理解和掌握光伏电池的工作原理及其数学模型;②学会使用Matlab和Simulink进行光伏特性曲线的建模与仿真;③能够分析不同环境条件下光伏系统的性能表现,为优化设计提供依据。 其他说明:文章中包含了大量详细的代码片段和操作指南,有助于读者快速上手实践。同时提醒读者关注模型参数的选择与调整,确保仿真结果贴近实际情况。

    Bergsoft NextSuite (VCL) v6.40.0 for Delphi & CB 6-12 Athens Full Source.7z

    BergSoft NextSuite 是一个强大的 Delphi 和 C++ Builder 组件套件。NextGrid 是一个易于使用的组件,具有设计时(带可视化列编辑器)和运行时的方法和属性理解。NextGrid 具有卓越的 StringGrid 功能和标准的 Delphi ListView。NextDBGrid 是一个基于著名的 NextGrid 组件的强大 Delphi 数据网格和 C++ Builder。

    中职计算机软件工程.pdf

    中职计算机软件工程.pdf

    基于Verilog的FPGA高性能伺服驱动系统实现:电流环、坐标变换、SVPWM及编码器协议

    内容概要:本文详细介绍了如何利用Verilog语言在FPGA平台上实现高性能伺服驱动系统。主要内容涵盖多个关键模块,包括电流环、坐标变换、速度环、位置环、电机反馈接口、SVPWM生成和编码器协议。每个模块都通过具体的Verilog代码片段展示了其功能和实现方式。电流环部分重点讲解了电流反馈和电压输出的计算;坐标变换部分讨论了从三相静止坐标系到两相旋转坐标系的转换;速度环和位置环则采用了PID控制算法实现对电机的速度和位置的精确控制;电机反馈接口和编码器协议确保了电机位置信息的准确获取;SVPWM模块生成了高效的三相PWM波形。这些模块共同协作,实现了对电机的高效、精准控制。 适合人群:具备一定硬件开发基础,特别是熟悉FPGA和Verilog编程的技术人员,以及从事电机控制和伺服系统开发的研究人员。 使用场景及目标:适用于需要深入了解和掌握FPGA平台上的伺服控制系统设计的专业人士。主要目标是帮助读者理解各模块的工作原理及其在实际应用中的实现方法,提升他们在伺服驱动系统设计方面的能力。 阅读建议:由于涉及大量具体代码和技术细节,建议读者在阅读过程中结合实际电路图和仿真工具进行理解和验证。此外,可以尝试自己动手实现部分模块,以便更好地掌握相关技术和优化设计。

    ffmepg windows 下载详细教程2025年(最新)

    ffmepg windows 下载详细教程2025年(最新)

    COMSOL模拟实现偏振无关BIC超表面的设计与验证

    内容概要:本文探讨了一种新型的超表面设计,能够在保持结构对称性的同时实现偏振无关的连续域束缚态(BIC)。传统的BIC设计通常需要破坏结构对称性,从而导致偏振依赖的问题。新的设计方案通过调整几何参数和模式耦合,使得不同偏振模式能够自然耦合并形成稳定的BIC。文中详细介绍了使用COMSOL进行仿真的步骤,包括参数扫描、模式特征分析以及实验验证。结果显示,新机制不仅能在较宽的偏振范围内保持高Q因子,而且对制造误差具有较高的容忍度。 适合人群:从事光学、电磁学研究的专业人士,尤其是对超表面设计和BIC感兴趣的科研人员。 使用场景及目标:适用于需要高精度、高稳定性和宽偏振适应性的应用场景,如LiDAR系统、光电探测、生化传感等领域。目标是提供一种创新的设计思路和技术实现路径,突破传统BIC设计的局限。 其他说明:文中提供了详细的MATLAB和COMSOL代码片段,帮助读者理解和复现实验结果。此外,强调了新机制在实际制备中的优势,特别是对制造误差的高容忍度。

    永磁同步电机MTPA与弱磁控制技术详解及其工程实现

    内容概要:本文详细探讨了永磁同步电机(PMSM)控制系统中的关键技术,尤其是最大转矩电流比(MTPA)控制和弱磁控制。首先介绍了MTPA的基本原理,包括基于查表法和公式的实现方式,以及应对温度变化引起的参数漂移的方法。接着讨论了速度环PI控制器的设计,强调了防积分饱和机制的重要性。对于弱磁控制,则着重讲解了电压极限圆的概念及其在过调制情况下的应用,同时提供了具体的Python和C语言代码示例。此外,还涉及到了SVPWM过调制处理的技术细节,如调制比超过1后的波形调整策略。最后分享了一些实际工程项目中的经验教训和技术挑战。 适合人群:从事电机控制领域的工程师、研究人员以及相关专业的学生。 使用场景及目标:帮助读者深入了解PMSM控制系统的内部运作机制,掌握MTPA和弱磁控制的具体实现方法,提高解决实际问题的能力。 其他说明:文中引用了多篇学术文献作为理论支持,并附上了大量源代码片段供参考学习。

    MiniTool重点技术共享Windows数据恢复软件.doc

    MiniTool重点技术共享Windows数据恢复软件.doc

    高速数据采集领域中ADS54J60 FMC子卡的硬件设计与FPGA实现

    内容概要:本文详细介绍了ADS54J60高速采集卡FMC子卡的设计与实现。该子卡支持4通道16位1G采样率,涵盖了硬件架构设计(原理图、PCB布局)、FPGA源码实现(Verilog代码)等方面。硬件方面,着重讨论了电源管理、时钟分配、信号完整性等问题;FPGA部分,则展示了ADC控制逻辑、数据同步及传输优化的具体实现方法。此外,文中还分享了许多实践经验,如电源纹波控制、LVDS接口配置、数据同步算法等,帮助开发者避免常见陷阱。 适合人群:从事高速数据采集系统的硬件工程师、FPGA开发人员、嵌入式系统设计师。 使用场景及目标:适用于需要高性能数据采集的应用场合,如通信系统、雷达信号处理等。目标是帮助读者掌握ADS54J60 FMC子卡的设计与实现,从而加速项目开发进程。 其他说明:文中提供的设计文件和代码可以直接用于制板生产,大大缩短了从设计到应用的时间。同时,作者还分享了一些实用技巧和经验教训,有助于提高系统的稳定性和性能。

    【Linux摄像头驱动开发】从原理到实战:V4L2框架与USB摄像头工作流程详解及开发指南

    内容概要:本文详细介绍了Linux摄像头驱动的工作原理及其开发流程。首先解释了摄像头驱动的重要性,它是Linux系统与摄像头硬件交互的桥梁,使系统能够识别并操作摄像头。接着深入探讨了V4L2框架作为Linux摄像头驱动的核心,它为视频设备提供了标准化接口,简化了应用与硬件间的交互。文章还具体分析了USB摄像头的工作流程,包括图像捕捉、信号转换、数据传输等环节。开发指南部分则强调了前期准备的重要性,如理解Linux内核架构、USB子系统原理及掌握C语言编程技能。随后阐述了开发步骤,涵盖编写内核模块、注册USB驱动程序以及适配不同摄像头。最后讨论了常见问题及解决方案,如驱动加载失败和图像显示异常,并展望了Linux摄像头驱动在未来智能安防和物联网等领域的应用前景。 适用人群:对Linux系统有一定了解,尤其是对设备驱动开发感兴趣的开发者和技术爱好者。 使用场景及目标:①帮助读者理解Linux摄像头驱动的工作原理,包括V4L2框架和USB摄像头的数据传输过程;②指导读者进行Linux摄像头驱动的开发,从前期准备到具体实现步骤;③解决开发过程中可能出现的常见问题,如驱动加载失败和图像显示异常。 其他说明:本文不仅提供了理论知识,还结合实际案例详细讲解了开发流程中的各个环节,旨在帮助读者更好地掌握Linux摄像头驱动的开发技巧,同时展望了其未来在智能安防和物联网等领域的应用潜力。

    MATLAB仿真中光伏板至蓄电池充电的Buck电路设计与优化

    内容概要:本文详细介绍了利用MATLAB进行光伏板向蓄电池充电仿真的全过程。主要内容涵盖光伏电池模型建立、Buck电路设计及其参数选择、PWM信号生成、闭环控制系统设计等方面。文中不仅提供了具体的MATLAB代码示例,还深入探讨了如何通过调整电感、电容值及PWM占空比等参数来优化充电效果,确保输出电压稳定在10.8-14.4V之间,并能提供80A的大电流。此外,文章还讨论了针对不同充电阶段采用不同的充电策略,如强充、缓充和浮充,以保护蓄电池免受过充损害。 适合人群:从事电力电子、新能源技术研究的专业人士,尤其是那些对光伏系统有兴趣的技术人员。 使用场景及目标:适用于需要理解和掌握光伏板向蓄电池充电原理和技术细节的人群。目标是帮助读者学会构建完整的充电系统仿真模型,理解各部件的工作机制,并掌握优化方法。 其他说明:文中提到的一些具体数值和参数设置基于特定应用场景,实际应用时可根据实际情况进行适当调整。同时,文中提供的MATLAB代码片段可以直接应用于MATLAB环境,方便读者动手实践。

    APITable-Typescript资源

    vika.cnAirtable

    COMSOL变压器模型:时域与频域分析及磁致伸缩、噪声和洛伦兹力的多物理场仿真

    内容概要:本文详细介绍了如何使用 COMSOL Multiphysics 对变压器进行时域和频域分析,探讨了磁致伸缩、噪声和洛伦兹力的影响。文中通过具体的代码示例展示了如何设置时域和频域的边界条件,定义磁致伸缩系数,计算洛伦兹力,并通过多物理场耦合模拟变压器的振动和噪声。此外,还讨论了一些常见的仿真技巧和注意事项,如相位对齐、材料非线性特性和边界条件设置等。 适合人群:从事电力系统研究、变压器设计和仿真的工程师和技术人员。 使用场景及目标:适用于希望深入了解变压器内部物理机制及其对外界因素响应的专业人士。通过掌握这些方法,可以优化变压器设计,减少噪声,提升电力系统的稳定性和可靠性。 其他说明:文章不仅提供了理论背景,还给出了实用的代码片段和仿真技巧,帮助读者更好地理解和应用 COMSOL 进行变压器建模。

    2001-2022年分析师盈余预测质量,分析师预测偏差-误差和分析师预测分歧度(方法一)

    分析师预测偏差/分析师预测误差/分析师预测准确度/分析师盈余预测误差/分析师盈余 预测准确度 分析师预测分歧度/分析师盈余预测分歧度 方法一,分母为实际每股盈余( 此帖) 方法一,分母为实际每股盈余 分析师预测偏差(FERROR)是指分析师的盈 余预测值与实际盈余值的平均偏差 分析师预测分歧度(FDISP1和FDISP2)是 指每个分析师最近一次盈余预测值的标准差 本文参考周国开等的度量方法,首先剔除了分 析师预测公布日晚于年报公布日的样本,如果同一分析师在一年内对同一家公同发布了多份 预测,则仅保留该分析师在那年的最后一次预测值样本;其次剔除了每股实际收益和每股预 测收益缺失的样本;最后运用公式(1)和公式度量分析师预测偏差,运用公式(2)和公 式(3)度量分析师预测分歧度。 其中: FEPSit为i公司当年的分析师预测每股 盈余 Mean(FEPSi,t)为公司i第t年的所有证券分析师最近一次每股盈余预 测的平均值 Std(FEPSi,t)为公司i第t年的所有证券分析师最近一次每股盈 余预测的标准差 MEPSit为i公司当年的实际每股盈余 样本选择:全部A股200 1-2022年数

    永磁同步电机滑模观测器无感控制技术解析及其应用

    内容概要:本文深入探讨了永磁同步电机(PMSM)滑模观测器无感控制技术。首先介绍了滑模观测器的基本原理,通过构建观测器估计电机的状态变量,特别是转子位置和速度。文中展示了滑模观测器的C语言和MATLAB代码实现,详细解释了滑模控制律、符号函数的作用以及如何通过滑模面获取转子位置和速度。接着讨论了滑模观测器在实际应用中的优缺点,如低成本、高可靠性和抗扰动能力强,但也存在抖振等问题。针对这些问题,提出了改进措施,如引入滤波器和平滑处理方法。最后,通过具体案例展示了滑模观测器在工业现场的实际效果,强调了其在复杂环境下的稳定性和鲁棒性。 适合人群:从事电机控制系统研究与开发的技术人员,尤其是对永磁同步电机无感控制感兴趣的工程师。 使用场景及目标:适用于需要高精度、低成本电机控制的场合,如电动汽车、智能家居等领域。目标是掌握滑模观测器的工作原理和技术实现,提高电机控制系统的性能和可靠性。 其他说明:本文提供了详细的代码示例和调试技巧,帮助读者更好地理解和应用滑模观测器技术。同时,文中还分享了一些实际工程中的经验和教训,有助于解决实际问题。

Global site tag (gtag.js) - Google Analytics