- 浏览: 151280 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
hx0637:
楼主!小弟要面临面试了,能否指导下小弟?
面试 深圳一家公司的 -
kljismi:
你好,我现在正在开这项目的代码,但是我不明白@Privileg ...
权限管理模块分析 -
yzhw:
终于找到了
ImageSizer.java -
sunloveny:
国
struts国际化 -
jackotty:
谢谢楼主的分享
struts validator验证框架
oa_20:
1、创建动态表单的领域模型
FieldInput.java
FieldItem.java
FieldType.java
FlowForm.java
FormField.java
FieldInput.hbm.xml
FieldType.hbm.xml
FlowForm.hbm.xml
FormField.hbm.xml
2、修改hibernate.cfg.xml,把动态表单相关的hbm.xml文件添加上去
3、创建动态表单定义的业务逻辑接口以及实现类
FormManager.java
FormManagerImpl.java
4、修改init_datas.xml和InitSystemDataImpl.java,
添加动态表单相关数据的初始化代码
【请drop掉数据库,并重新创建数据库之后,运行InitSystemDatasTest.java,重新初始化数据】
1、创建动态表单的领域模型
FieldInput.java
FieldItem.java
FieldType.java
FlowForm.java
FormField.java
FieldInput.hbm.xml
FieldType.hbm.xml
FlowForm.hbm.xml
FormField.hbm.xml
2、修改hibernate.cfg.xml,把动态表单相关的hbm.xml文件添加上去
3、创建动态表单定义的业务逻辑接口以及实现类
FormManager.java
FormManagerImpl.java
4、修改init_datas.xml和InitSystemDataImpl.java,
添加动态表单相关数据的初始化代码
【请drop掉数据库,并重新创建数据库之后,运行InitSystemDatasTest.java,重新初始化数据】
package com.bjsxt.oa.manager; public class InitSystemDatasTest extends BaseUnitTest { private InitSystemDatas initSystemDatas; public void testAddOrUpdateInitDatas() { initSystemDatas.addOrUpdateInitDatas("init_datas.xml"); setComplete(); } public void setInitSystemDatas(InitSystemDatas initSystemDatas) { this.initSystemDatas = initSystemDatas; } }
package com.bjsxt.oa.manager.impl; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.bjsxt.oa.manager.InitSystemDatas; import com.bjsxt.oa.manager.OrgManager; import com.bjsxt.oa.manager.Permission; import com.bjsxt.oa.manager.SystemException; import com.bjsxt.oa.manager.UserManager; import com.bjsxt.oa.model.ACL; import com.bjsxt.oa.model.FieldInput; import com.bjsxt.oa.model.FieldType; import com.bjsxt.oa.model.Module; import com.bjsxt.oa.model.Organization; import com.bjsxt.oa.model.Person; import com.bjsxt.oa.model.Role; import com.bjsxt.oa.model.User; public class InitSystemDatasImpl extends AbstractManager implements InitSystemDatas { private static Log logger = LogFactory.getLog(InitSystemDatasImpl.class); private String file; private OrgManager orgManager; private UserManager userManager; public void addOrUpdateInitDatas(String xmlFilePath){ try { String filePath = null; if(xmlFilePath == null || xmlFilePath.trim().equals("")){ filePath = file; }else{ filePath = xmlFilePath; } //DOM4J使用示例 Document document = new SAXReader().read( Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath) ); importModules( document.selectNodes("//Modules/Module") ,null); importRoleAndAcl(document.selectNodes("//Roles/Role")); importOrgAndPerson(document.selectNodes("//Organizations/Org"),null); importFieldDefinition(document.selectNodes("//FieldTypes/FieldType"),document.selectNodes("//FieldInputs/FieldInput")); } catch (Exception e) { e.printStackTrace(); throw new SystemException("初始化数据生成有误!"); } } //导入模块信息 protected void importModules(List modules,Module parent){ for (Iterator iter = modules.iterator(); iter.hasNext();) { Element element = (Element) iter.next(); Module module = new Module(); module.setName(element.attributeValue("name")); module.setSn(element.attributeValue("sn")); module.setUrl(element.attributeValue("url")); module.setOrderNo(Integer.parseInt(element.attributeValue("orderNo"))); module.setParent(parent); getHibernateTemplate().save(module); logger.info("导入模块【"+module.getName()+"】"); importModules( element.selectNodes("Module") , module); } } protected void importRoleAndAcl(List roles){ for (Iterator iter = roles.iterator(); iter.hasNext();) { Element element = (Element) iter.next(); Role role = new Role(); role.setName(element.attributeValue("name")); getHibernateTemplate().save(role); //给角色授权 List acls = element.selectNodes("Acl"); for (Iterator iterator = acls.iterator(); iterator.hasNext();) { Element aclElem = (Element) iterator.next(); Integer moduleId = (Integer)getSession() .createQuery("select m.id from Module m where m.name = ?") .setParameter(0, aclElem.attributeValue("module")) .uniqueResult(); ACL acl = new ACL(); acl.setPrincipalType(ACL.TYPE_ROLE); acl.setPrincipalId(role.getId()); acl.setModuleId(moduleId); if("true".equals(aclElem.attributeValue("C"))){ acl.setPermission(Permission.CREATE, true); } if("true".equals(aclElem.attributeValue("R"))){ acl.setPermission(Permission.READ, true); } if("true".equals(aclElem.attributeValue("U"))){ acl.setPermission(Permission.UPDATE, true); } if("true".equals(aclElem.attributeValue("D"))){ acl.setPermission(Permission.DELETE, true); } getHibernateTemplate().save(acl); } } } protected void importOrgAndPerson(List orgs,Organization parent){ for (Iterator iter = orgs.iterator(); iter.hasNext();) { Element element = (Element) iter.next(); Organization org = new Organization(); org.setName(element.attributeValue("name")); orgManager.addOrg(org, parent == null?0:parent.getId()); //查找机构下的人员信息,并初始化 List persons = element.selectNodes("Person"); for (Iterator iterator = persons.iterator(); iterator.hasNext();) { Element personElem = (Element) iterator.next(); Person person = new Person(); person.setName(personElem.attributeValue("name")); person.setOrg(org); getHibernateTemplate().save(person); //给人员分配登陆帐号 User user = new User(); user.setUsername(personElem.attributeValue("username")); user.setPassword(personElem.attributeValue("password")); user.setPerson(person); getHibernateTemplate().save(user); //给用户分配角色 String roles = personElem.attributeValue("roles"); String[] roleNames = roles.split(","); for(int i=0; i<roleNames.length; i++){ int roleId = (Integer)getSession() .createQuery("select r.id from Role r where r.name = ?") .setParameter(0, roleNames[i]) .uniqueResult(); userManager.addOrUpdateUserRole(user.getId(), roleId, i+1); } } //初始化此机构下的子机构信息 importOrgAndPerson( element.selectNodes("Org") , org); } } protected void importFieldDefinition(List fieldTypes,List fieldInputs){ //首先导入fieldInputs for (Iterator iter = fieldInputs.iterator(); iter.hasNext();) { Element element = (Element) iter.next(); FieldInput input = new FieldInput(); input.setName(element.attributeValue("name")); input.setTemplate(element.attributeValue("template")); getHibernateTemplate().save(input); } for (Iterator iter = fieldTypes.iterator(); iter.hasNext();) { Element element = (Element) iter.next(); FieldType type = new FieldType(); type.setName(element.attributeValue("name")); type.setType(element.attributeValue("type")); getHibernateTemplate().save(type); } } public void setFile(String file) { this.file = file; } public void setOrgManager(OrgManager orgManager) { this.orgManager = orgManager; } public void setUserManager(UserManager userManager) { this.userManager = userManager; } }
发表评论
-
oa_22
2009-02-04 22:20 1816oa_22: 结合Freemarker,将动态表单显示在公文 ... -
oa_21
2009-02-04 22:18 1221oa_21: 添加动态表单呈现层代码 - 理解批量数据的 ... -
oa_18
2009-02-04 22:07 863oa_18: 实现WorkflowManager接口,以及流 ... -
oa_17
2009-02-04 22:03 1229集成JBPM到OA系统,并实现JbpmFacade接口 - ... -
oa_16
2009-02-04 21:58 949oa_16: 根据用例分析的结果,创建WorkflowMan ... -
oa_15:
2009-02-04 21:55 888oa_15: 根据公文流转领域模型创建相关的实体类,并使用x ... -
oa_14
2009-02-04 21:51 1338利用JSTL函数实现即时认证 - SecurityFunc ... -
oa_13
2009-02-04 21:35 1392oa_13: 实现登录功能 - LoginAction ... -
oa_11
2009-02-04 20:51 917初步实现授权管理的界面,重点在于: 1、理解DWR如何使用,理 ... -
oa_10
2009-01-18 12:54 1136提供初始化数据的代码 ... -
oa_09
2009-01-18 12:48 1780提供人员管理、模块管理、角色管理、用户管理相关的代码。 同时 ... -
oa_08
2009-01-18 12:08 1065创建AclManager接口,并实现 - 理解权限管理子系统 ... -
oa_07
2009-01-18 11:54 1290引入Ant和Xdoclet的支持, ... -
oa_06
2009-01-18 11:48 1059利用ThreadLocal实现分页参数的透明传输(通过使用Th ... -
oa_05
2009-01-18 11:41 988从现有的分页处理方案中,抽象出AbstractManager, ... -
oa_04
2009-01-18 11:30 1172利用Pager-Taglib实现机构 ... -
oa_03
2009-01-18 11:22 1190在做完机构管理的业务逻辑之后,下面考虑呈现层的实现。 1、 ... -
oa_02
2009-01-18 11:05 1024整合Spring和Hibernate之后,对于业务逻辑类的测试 ... -
oa_01+
2009-01-18 10:55 1242package com.bjsxt.oa.manager.im ... -
oa_01
2009-01-18 10:48 1280oa_01: 1、建立机构管理的实体类,并映射【重点理解多对 ...
相关推荐
【OA.rar】是一个压缩包文件,其中包含了C#语言开发的OA(Office Automation,办公自动化)系统的源代码和相关资源。这个系统是基于ASP.NET框架构建的,这意味着它使用了微软的.NET Framework来运行和处理Web应用...
总之,"通达OA_2015_免注册_20人_不稳定版"是一个有价值的参考资料,无论是对于初学者熟悉OA系统,还是开发者探索系统架构,都能提供宝贵的学习机会。但要注意,由于其不稳定性和潜在的安全风险,不建议在生产环境中...
"oa_20"和"oa_18"可能涉及到数据库操作,这是为了存储和检索工作流实例和任务的相关信息,确保数据的安全性和一致性。 7. **异常处理与日志** "oa_4"和"oa_3"可能包含了错误处理和日志记录的代码,这些对于系统的...
20. **代码质量**:代码要求清晰、简洁,易于阅读和维护,同时具备良好的扩展性和高复用性,提高执行效率和安全性。 21. **文档记录**:每个功能的实现和修改都需要有相应的文档记录,便于后期的查阅和维护。 通过...
《OA_ICESat2_guide.pdf》使用说明详细解读 该文档是关于如何使用开放测高系统(OpenAltimetry)的指南,特别是针对ICESat-2(冰川卫星2号)的数据处理和分析。ICESat-2是美国国家航空航天局(NASA)发射的一颗卫星...
根据压缩包子文件的文件名称列表"oa_20",我们可以推测这可能是项目的版本号或者数据库文件名的一部分。例如,它可能是项目源代码的第20个迭代版本,或者包含有系统数据的第20个数据库备份。不过,没有具体的文件...
在“oa_20”这个压缩包文件中,很可能包含了OA系统Activiti5的源代码、配置文件、数据库脚本、部署说明等相关资料。开发者可以通过这些资源,深入了解OA系统Activiti5的架构设计、开发实践以及具体应用场景。通过...
20. **OA_PlotWksCols**:根据工作表中的列绘制图形。 21. **OA_Save**:保存Origin项目或工作簿。 22. **OA_Wks-Get-2Cols**:获取两个列的数据。 23. **OA_Wks-GetCell(numeric/string)**:获取单元格的数值或字符...
本压缩包"OA.rar_oa"中的"JavaPrj_20"可能是一个基于Java开发的OA系统项目,我们可以从这个项目中学习到许多关于OA系统开发的知识点。 1. **Java编程基础**:OA系统通常使用Java作为后端开发语言,因为Java具有跨...
OA系统的基本概念源于20世纪70年代,当时主要以电子邮件、文档管理等基础功能为主。随着技术的发展,现代OA系统已演变成一个综合性的平台,涵盖了事务处理、信息管理、协同工作等多个方面。它通过提供各种工作模块,...
- **EXT_ATTR_11 至 EXT_ATTR_20**: 类型为`DECIMAL(19,4)`,表示数字类型的扩展字段。这些字段可以用于存储数值信息,例如评分、数量等。 - **EXT_ATTR_21 至 EXT_ATTR_30**: 类型为`DATETIME`,表示日期类型的扩展...
全能通用OA办公系统 V20 是一款专为企事业单位设计的高效、全面的办公自动化解决方案。这款系统旨在提升组织内部的工作效率,优化流程管理,实现信息化办公,减少纸张浪费,提高协同工作的能力。OA(Office ...
IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'OA_UserInfo') DROPTABLE OA_UserInfo; CREATETABLE OA_UserInfo ( [Id] SMALLINT IDENTITY(1,1), UserName VARCHAR(20) NOT NULL, UserPwd VARCHAR(150...
- **conTact_phone**: 联系电话,使用`nvarchar(20)`类型。 - **User_Name**: 发送人编号,采用`nvarchar(50)`类型。 通过以上对OA办公系统数据结构的详细解析,我们可以清晰地了解到OA系统是如何组织和管理各种...
购买 ERP 接口约 4 万元,打开 OA 与 ERP 数据接口实现管理流程,需投入约 15-20 万。合计约需万元。 如果要求尽快使用OA 系统实现审批采购订单、采购三方报价、生产订单,建议请南京千度软件公司开发OA 系统。因为...
通达OA(Office Automation System)是一款企业级的协同办公软件,其数据结构是支撑系统运行的基础,用于存储和管理各种业务数据。以下是对文件中提到的一些核心数据表及其字段的详细说明: 1. **address** 表:...
oci8.statement_cache_size = 20 oci8.old_oci_close_semantics = Off ``` 4. **更新系统路径**:将php_oci8.dll及其依赖项所在的目录添加到系统环境变量PATH中。 5. **重启服务**:完成上述操作后,重启Web...
第20-21周_MyBatis实现OA系统项目实战-RBAC部分源代码_imooc-oa-rbac
- **USER_ID**:记录创建该地址条目的用户的ID,是varchar类型,长度为20,不允许为空。 - **GROUP_ID**:表示所属的组别,用于分组管理,int类型,长度为11,可为空。 - **PSN_NAME**:联系人的姓名,varchar...