在party模块中让userLogin拥有的partyId的字段,这样一个用户登录了之后就能关联到他自己的party了。party模块下实体定义中UserLogin的扩展,代码如下:
--------------------------------------------------------------------------------
<extend-entity entity-name="UserLogin">
<field name="partyId" type="id"></field>
<relation type="one" fk-name="USER_PARTY" rel-entity-name="Party">
<key-map field-name="partyId"/>
</relation>
<relation type="one-nofk" rel-entity-name="Person">
<key-map field-name="partyId"/>
</relation>
<relation type="one-nofk" rel-entity-name="PartyGroup">
<key-map field-name="partyId"/>
</relation>
</extend-entity>
--------------------------------------------------------------------------------
这样给UserLogin表扩展了之后在任何其他有UserLogin的地方都能获得Party了。
具体扩展关联Party的表全在这个实体定义文件中。也就是那些扩展了partyId的扩展实体。
1.具体有登录历史记录UserLoginHistory中关联了参与者。在LoginServices.java中有如下代码记录了登录记录
--------------------------------------------------------------------------------
if (createHistory) {
Map<String, Object> ulhCreateMap = UtilMisc.toMap("userLoginId", username, "visitId", visitId, "fromDate", UtilDateTime.nowTimestamp(), "successfulLogin", successfulLogin);
ModelEntity modelUserLogin = userLogin.getModelEntity();
if (modelUserLogin.isField("partyId")) {
ulhCreateMap.put("partyId", userLogin.get("partyId"));
}
// ONLY save the password if it was incorrect
if ("N".equals(successfulLogin) && !"false".equals(UtilProperties.getPropertyValue("security.properties", "store.login.history.incorrect.password"))) {
ulhCreateMap.put("passwordUsed", password);
}
//Debug.logInfo(new Exception(), "=================== Creating new UserLoginHistory at " + UtilDateTime.nowTimestamp(), module);
delegator.create("UserLoginHistory", ulhCreateMap);
}
--------------------------------------------------------------------------------
这样一句ulhCreateMap.put("partyId", userLogin.get("partyId"));关联了Party。
2.类似的ServerHitBin.java 657行对服务调用记录ServerHit表进行了关联Party。
3.类似的VisitHandler.java 55和68行对网站访问记录Visit和Visitor表进行了关联Party。
4.另外还有个在登录的时候通过UserLogin获取Person(一种类型的Party)放在session中,代码在LoginWorker.java中。559行和771行。
感觉上Party是在后面加上去的,以前只有UserLogin的感觉,后来有了Party,把一些记录UserLogin的地方关联一下Party。比如登录记录什么的。
如我我们的Party的主键不止一个的时候我们可以有2中方法解决和ofbiz的兼容。
1.UserLogin中加上你的Party的所有主键。在所有出现modelUserLogin.isField("partyId")的地方,多put进去你在UserLogin中获取的主键。记得扩展上面我们1、2、3的表和修改上面这些应用的展示地方修改获取Party。
2.改Party的主键为一个类似工号的一个字段为partyId,保证唯一,原来主键的直接放在Party中。ofbiz中其他地方不变。
分享到:
相关推荐
OFBiz开发者装备系列:0006
opentaps 所有表关联,HTML的。
OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门
OFBiz集成Spring和Activiti,详细设计说明书。ofbiz版本12.04
ofbiz的获取与部署,主要用到了gradle 和 eclipse,注意:cmd部署时,需要一个较好的网络环境以下载gradle
ofbiz的helloworld例子,网上不好找到比较全的,这个比较全,可以了解ofbiz的整体架构和运行机制。
不用解压ofbiz-manual-zh-cn.zip 直接把.zip修改为.pdf即可 ofbiz-manual-zh-cn.pdf 博文链接:https://jiasudu.iteye.com/blog/157891
自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,适合初学者,可以下个看看
像 Tomcat, Ant, BeanShell, Jboss 等,构建了一个强大的系统平台,Ofbiz 已经完成了大部分商务类软件系统 都需要的部件,像用户认证、工作流、商务规则处理等,Ofbiz 的核心技术在于 Entity Engine,其他的组件基本...
里面是下载地址,如果逆向开发ofbiz,只要下载它就绝对没错了 Apache+OFBiz+开发初学者指南.rar OFBiz开发快速入门.rar OFBiz-技术文档.rar OFBiz API中文版.rar Apache OFBiz Cookbook Sep 2010.rar Opentaps ...
ofbiz权限非常介绍,ofbiz进阶之权限介绍!
ofbiz jar file, some jars for ofbiz
ofbiz sql 表结构
ofbiz数据结构
浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc
OFBIZ开发指南 英文2OFBIZ开发指南 英文2OFBIZ开发指南 英文2
关于ofbiz的资料,很多,用ofbiz技术的朋友们赶快下载吧
Ofbiz 和 Mysql中文乱码解决方法.docx
OFBiz 主题修改文档
apache-ofbiz-16.11.02.zip,ofbiz菜鸟笔记,Apache+OFBiz+开发初学者指南.chm