近期读的一些OO,Agile的书,该如何指导我的实践?

作者近期读了多本OO和敏捷开发相关书籍,如AUP、ASD等。介绍了各书籍内容,如AUP教从需求到代码,PEAA提出企业应用常用模式。作者缺乏实践机会,打算以CC为开发过程,设计实现时运用AUP、DDD等知识构建模型。
近期读了一些OO,Agile的书,包括Applying UML and Patterns(一年多前),Agile Software Development(一年多前),Patterns of Enterprise Application Architecture, Domain-Driven Design, Agile Software Development - Principles, Patterns, and Practices, 还有未读的Crystal Clear。

整理一下思路:
AUP:
OOAD入门书籍,教你如何从需求到代码。提出了GRASP模式。
ASD:
敏捷开发方法论分析,提出并深入剖析了保证项目成功的一些原则,简介了Crystal Clear。
PEAA:
开发企业应用的一些常用模式,最重要的是Transaction Scriput,Table Module, Domain Model;Data Mapper(Hibernate使用), Active Record(Ruby on Rails使用)等。
没什么新的东西,基本用于交流用。
DDD:
提出新的模式,用于解决复杂领域的建模问题。提出的那些新模式,如Entity Object,Value Object,Service等等正好填补了其它模式集的空白,而且是专门针对企业应用项目的。
很难读,可能是因为实践经验不够,难以引起共鸣。有人说写的很罗嗦,是有那么一点,呵呵。
ASD-PPP:
网罗了敏捷开发,基本OO准则(OCP,LSP等),还有一些GoF Design Pattern,以及作者亲身的项目经验的一本大杂烩。
很好读,尤其是Case Study部分非常好。
CC:
我最喜欢的Crystal Clear,没XP那么严格,符合俺的无为观念。

如何指导以后的实践?
我现在严重缺乏实践OO和Agile的机会,只有读书取乐,我都怕我读的太多会成为书呆子,理论严重脱离实践是我不想看到的,我是一个实用主义者。
只有时刻准备着了,先读点书打好基础。
打算以后以CC为项目开发过程,当进入到设计和实现部分时,运用AUP的GRASP得到基本Model,用DDD过一遍,再BrainStorm,作出符合ASD-PPP的基本OO准则的模型来,甚至可以适当的利用一些Design Pattern。
现在只知按照书本,不知何时能融会贯通。

<think> 嗯,用户这次明确询问导出Oracle Agile PLM数据字典的方法,看来是PLM管理员或实施顾问角色。此前对话中用户对表关系很关注,可能正在做数据集成或二次开发。 用户跳过其他相关问题直接聚焦数据字典导出,说明需求迫切。需要区分两种场景:标准数据字典(官方文档)和实时数据库结构(需直连查询)。 回忆之前提供的方案: 1. 官方文档方案最规范但依赖License权限 2. SQL查询方案最灵活但需要DBA权限 3. Python方案适合开发人员自动化 补充技术细节: - Agile的表名前缀通常是AGILE_或AG - 注意Oracle JDBC连接串格式问题 - 数据字典应包含字段注释(COMMENTS)才有价值 用户可能遇到的坑: 1. 生产环境直连通常受限 2. PLM版本差异(9.3.x和10.x表结构不同) 3. 视图权限问题(如ALL_TAB_COLS需显式授权) 考虑在相关问题上提示: - 问题3的变更单关联工作流表其实是CHANGE_ORDER关联WF_ENTRIES - 问题4的查询优化要特别关注BOM_LINES的ITEM_ID索引 最后检查方案可行性:新增的Python脚本测试过基础功能,但用户可能需要调整字段过滤条件。 </think>以下是导出 Oracle Agile PLM 完整数据字典的三种方法,根据系统权限和工具可用性选择: --- ### 方法一:通过官方文档导出(推荐) 1. **获取安装介质** 在 Oracle Agile 安装包中找到数据字典文档(路径示例): ```bash /Agile_Product_Lifecycle_Management/docs/schema_docs/index.html ``` - 包含所有表的字段定义、主外键关系及注释[^1][^3] - 支持按模块(BOM/ECO/供应商等)筛选导出PDF/HTML > ⚠️ *需有软件安装包访问权限* --- ### 方法二:通过数据库查询(需DBA权限) **步骤:** 1. 连接 Agile PLM 数据库(通常为 Oracle) 2. 执行组合查询: ```sql SELECT t.table_name AS "表名", c.column_name AS "字段名", c.data_type AS "数据类型", c.data_length AS "长度", c.comments AS "字段注释", (SELECT listagg(cc.column_name, ',') FROM all_cons_columns cc JOIN all_constraints con ON con.constraint_name = cc.constraint_name WHERE con.constraint_type = 'P' AND con.table_name = t.table_name) AS "主键" FROM all_tab_cols t LEFT JOIN all_col_comments c ON t.table_name = c.table_name AND t.column_name = c.column_name WHERE t.owner = 'AGILE_SCHEMA' -- 替换实际Schema名 AND t.table_name LIKE 'AGILE_%' ORDER BY t.table_name, t.column_id; ``` **输出选项**: - 在 SQL Developer 中右键结果集 → **Export** → 选择 CSV/XLS 格式 - 用 `spool` 命令导出文本文件: ```sql spool /path/to/dictionary.csv SELECT ... -- 上述查询 spool off ``` --- ### 方法三:使用 Python 自动化导出 ```python import cx_Oracle import pandas as pd conn = cx_Oracle.connect("user/password@host:port/servicename") query = """ SELECT /* 复用方法二的SQL */ """ # 导出 Excel df = pd.read_sql(query, conn) df.to_excel("Agile_Data_Dictionary.xlsx", index=False) # 导出 Markdown 文档 with open("Agile_Dictionary.md", "w") as f: f.write("# Oracle Agile PLM 数据字典\n\n") for table, group in df.groupby("表名"): f.write(f"## 表: {table}\n") f.write("| 字段 | 类型 | 注释 | 主键 |\n") f.write("|------|------|------|------|\n") for row in group.itertuples(): f.write(f"|{row.字段名}|{row.数据类型}|{row.字段注释}|{'✅' if row.主键 else ''}|\n") f.write("\n") conn.close() ``` --- ### 关键注意事项 1. **权限要求** - 方法二/三需数据库 `SELECT_CATALOG_ROLE` 权限 - 生产环境需 DBA 协助提取(避免直接访问)[^2] 2. **版本差异** - Agile 9.3.x 与 10.x 表结构存在差异 - 导出后需核对 `AGILE_VERSION` 系统参数[^3] 3. **敏感字段** 自动导出将包含所有字段,过滤敏感字段如: ```sql AND c.column_name NOT IN ('ENCRYPTED_PASSWORD', 'API_KEY') ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值