Appearance
5.1 打开P6项目 · 两种路径,一个目标
阅读提示: 本章基于 Primavera Risk Analysis(PRA)与 Primavera P6 联合使用场景编写。菜单、按钮、字段名保留英文原文。
把 P6 中的项目"搬"进 PRA 进行风险分析,是 PRA 区别于独立风险分析工具的核心能力。你可以选择离线模式(XER文件)或在线模式(数据库直连),两者各有适用场景。
两种数据传递路径
PRA 可以读取以下格式的项目数据:P3 项目文件(.P3 / .PRX)、XER 文件、P6 EPPM 数据库和 P6 Professional 数据库。还可通过 Web Services(v8.0 和 v8.1)连接。
| 方式 | XER文件 | 数据库直连 |
|---|---|---|
| 连接要求 | 无需安装 P6 软件 | 需要 P6 已安装并配置连接 |
| 操作流程 | P6 导出 XER → PRA 打开 | PRA 直接登录 P6 数据库 |
| 风险数据回写 | 不支持(单向导入) | 支持(双向:读 + 更新回 P6) |
| 资源导入 | 全部导入为单项资源 | 可按 Labor / Non-Labor / Material / Expense 汇总 |
| 适用场景 | 分包单位、异地协作、无 P6 环境 | 总包单位、在线协作、完整风险闭环 |
XER 文件的优势与局限
优势:
- 无需安装任何 P6 软件。别人发你一个 .xer 文件即可直接打开
- 操作简单,入门门槛最低
局限:
- 始终以单项资源方式导入项目资源,无法选择按成本汇总(Labor、Non-Labor、Material、Expense)
- 无法用来更新 P6 数据库(只能读取,不能回写)
数据库直连的优势
- 支持完整的读写闭环:从 P6 读数据 → PRA 分析 → 结果写回 P6
- 资源可按类别汇总导入,减少数据量
- 利用 P6 的安全机制(用户权限控制),各用户只能访问自己被授权的项目
选择建议:如果你只需做一次独立的风险评估(如投标阶段的风险量化),XER 文件就够了。如果你需要建立持续更新的风险基线,把 P80 日期写入 P6 的月报计划,则必须用数据库直连。
连接向导(Primavera Connection Wizard)
要使用数据库直连,首先需要通过 Connection Wizard 建立 PRA 与 P6 数据库之间的连接。
操作路径:先关闭所有已打开的计划(File | Close),然后点击 File | Primavera | Connection Wizard。
安全机制
所有 PRA 到 P6 数据库的连接均使用 P6 自带的安全体系。用户登录时需输入 P6 的用户名和密码,只能访问自己有权查看的项目。
Oracle 建议在可用的情况下使用 SSL(Secured Socket Layer)加密连接。
连接选项说明
Connection Wizard 根据 P6 版本提供不同连接方式:
| P6 版本 | 可用连接方式 |
|---|---|
| P6 v6 (API) / P6 v7 (API) | ① Native Connection(推荐) ② Primavera Integration API |
| P6 EPPM R8 / R8.1+ | Web Services(需安装 Web Services) |
| P6 Professional R8.1+ (API) | API 方式(API 随 P6 Professional 安装),需指定 JRE 路径 |
Auto Synchronize Primavera User Fields
P6 中的用户自定义字段(User Defined Fields)可用于存储风险数据。当登录 P6 数据库时,PRA 会自动搜索自上次连接以来新增的用户字段。如果不需要每次都检查新字段,可以关闭此选项。
关闭此选项且之前从未同步过用户字段时,系统会弹出提示询问是否同步。
额外数据库连接设置
| 设置项 | 说明 |
|---|---|
| Batch Size | 批处理大小。通常无需调整。Oracle 推荐 P6 v6.0 和 v7.0 使用 1024 |
| Connection Timeout | 连接超时时间。遇到 "Server Busy" 提示时(网络慢或数据量大),可增大此值 |
| Always display import log | 即使无错误也显示导入日志 |
| Use these connection settings for all PRA users | 将连接设置写入 PRA 安装目录下的 PrimaveraRiskAnalysis.ini,所有用户共享 |
Native Connection(原生连接)详解
适用版本
P6 v6.x 和 v7.x,无需安装额外组件即可实现安全连接。
要求
- P6 6.x 或 7.x(Oracle 或 SQL / MSDE 安装方式)
配置步骤
- 安装 P6 6.x 或 7.x(如未安装)
- 安装 PRA 软件
- 启动 P6,打开任意一个项目
- 在 P6 中运行菜单命令:
Tools | Primavera Risk Analysis
如果没有打开任何项目,该菜单命令会呈灰色不可用状态。
运行此命令后,系统自动创建一个连接配置文件 BREBootStrap.xml,PRA 通过此文件连接到 P6 数据库。文件位置可通过 PRA 中的 Help | Support Files | Show Application Data Folder 查看。
配置完成后,即可在 PRA 中(或从 P6 发起)打开 P6 项目。
切换数据库连接
如果 P6 连接了多个数据库,按以下步骤确保 PRA 连接到正确的数据库:
- 启动 P6 并登录到希望 PRA 连接的数据库
- 打开任意项目
- 运行
Tools | Primavera Risk Analysis
此操作将把连接指向当前数据库。
故障排查
- 检查
BREBootstrap.xml是否存在(通过Help | Support Files | Show Application Data Folder查看)。如不存在,重新执行配置步骤 - 检查 P6 的 "Claim Digger" 工具是否能正常运行——它与 PRA 使用相同的连接方式。如果 Claim Digger 无法运行,重新安装 P6 客户端可能解决问题
- 如果 P6 生成的
BREBootstrap.xml无效:重命名现有文件,从C:\Program Files\Common Files\Primavera Common\Java复制一份替换。注意此文件仅在安装了 Claim Digger 时存在
Primavera Integration API 连接详解
API 连接方式适用于 P6 v6、v7 和 P6 Professional R8.1+。
要求
- P6 使用 Oracle 或 SQL / MSDE 安装(不支持 Interbase)
- Primavera Integration API 已安装
Step 1:安装 API
Primavera Integration API 随 P6 软件一同发布(在 API 安装光盘中),可安装在服务器或本地 PC 上。
Step 2:配置 PRA 使用 API
重要: 务必先确认 API 能正常运行(使用 API demo 程序测试数据库连接和项目读取)。
- 启动 PRA
File | Close关闭所有已打开的计划File | Primavera | Connection Wizard- 选择 P6 v6 (API) / P6 v7 (API) 或 P6 Professional database R8.1 or higher (API)
- 点击 Next >
- 选择 Primavera Integration API 选项
- 浏览并找到 API 安装位置
- 浏览并找到 Java JRE 位置(包含
...\bin\client\jvm.dll的目录,例如\Program Files\Primavera\Claim Digger\_jvm或\Program Files\Java\j2re1.4.2) - 完成向导
完成后即可通过 File | Primavera | Open Primavera P6 Project 连接到 P6 数据库。
ADVANCED:远程连接设置
| 参数 | 说明 |
|---|---|
| Server | Java Application Server 的名称或 IP 地址 |
| RMI-port | RMI 服务端口号(如 9099) |
| Mode | 数据传输模式:Standard(默认)/ Compression(压缩)/ Encrypted(加密)/ HTTP(HTTP隧道,跨防火墙)/ HTTPS(HTTP + SSL) |
| HTTP(S) Port | HTTP 或 HTTPS 模式下的端口号 |
| Batch Size | 远程连接时如需加快大 EPS 加载速度,可增大至 1024 |
| Connection Timeout | 仅在连接超时但配置正确时增大 |
注册表设置
Connection Wizard 会创建注册表设置,PRA 通过这些设置连接 P6 数据库。位置: [HKEY_CURRENT_USER\Software\ORACLE\Primavera Risk Analysis\Primavera]
切换数据库连接
PRA 将显示与 API 相同的数据库连接(跟随 API 配置)。
输入映射(Input Mappings)
P6 中的用户字段(User Defined Fields)可用于存储风险输入数据(如最小/最可能/最大工期)。当 PRA 打开 P6 项目时,需要将这些字段映射到 PRA 的对应字段。
建议的输入映射
| PRA 字段 | P6 用户字段 | 说明 |
|---|---|---|
| Minimum Duration | Risk Input - Minimum Duration | 最乐观工期 |
| Likely Duration | Risk Input - Likely Duration | 最可能工期 |
| Maximum Duration | Risk Input - Maximum Duration | 最悲观工期 |
| Duration Function | Risk Input - Duration Function | 分布函数(如 Uniform(2;10)) |
| Duration Correlation | Risk Input - Duration Correlation | 工期相关性([Unique ID][%]) |
| Probabilistic Branch | Risk Input - Probabilistic Branch | 概率分支(0090[80];0100[20]) |
| Task Existence | Risk Input - Task Existence | 任务存在概率(0~100%) |
| Resource Functions | Risk Input - Resource Functions | 资源分布函数 |
设置默认导入映射
两种方式:
- 导入项目时勾选 Use as a default for new projects
- 在无打开计划时使用
File | Primavera | Edit Default Import Mappings

Tasks 选项卡
Duration Distribution(工期分布)
- 勾选「Create Distribution」后,PRA 将用选定的 P6 字段创建三角分布
- 若 Minimum 和 Maximum 值均为 0,则不创建分布
- 若创建的分布无效(如最小 > 最大),运行风险分析时会显示警告
Alternative Duration Distribution(替代工期分布)
- 使用函数定义非三角分布,例如输入
Uniform(20;30)创建均匀分布 - 支持缩写:u = uniform,t = triangle
Duration Correlation(工期相关性)
- 格式:
[Activity ID][相关性%],如0070[95] - 为多个分布设置相同的 Activity ID 可实现多分布关联

Probabilistic 选项卡
Probability an activity will occur(任务存在概率)
- 映射到 Task Existence 字段,值为 0.01~100 之间的百分比
Probabilistic Branching(概率分支)
- 格式:
[Activity ID][概率%];[Activity ID][概率%] - 例如
0090[80];0100[20]表示 80% 走活动 0090,20% 走活动 0100 - 此分支数据必须分配给拥有分支后继活动的前置活动
Resources and Costs 选项卡
| 导入选项 | 说明 |
|---|---|
| Do not import any P6 resources or costs | 不导入任何资源和成本 |
| Import Roles, Resources, Assignments and Activity Expense Costs | 导入所有资源分配(均为 Duration Independent) |
| Import Activity Costs summarized as Labor, Non-Labor, Materials and Expenses | 按类别汇总导入成本 |
Duration Dependent(工期依赖) 勾选后成本随工期成比例变化。通常劳动力和非劳动力成本(Labor / Non-Labor)应设为 Duration Dependent。工期越长,人力和设备投入越多,成本越高。
Duration Independent(工期独立) 勾选后成本不随工期变化。通常材料和费用(Material / Expense)应设为 Duration Independent。材料用量是固定的,不随工期波动。
同一作业可以同时使用两种类型:劳动成本依赖工期,材料成本独立于工期。这在工程实践中非常常见。
Create distribution(创建分布)
- 为作业成本创建三角分布。通常用于 Duration Independent 成本,为费用成本添加不确定性
- 如果为 Duration Dependent 成本启用创建分布,则作业成本的不确定性来自两部分:日成本的不确定性 + 工期的不确定性
Create alternative distributions from a function in field(从函数创建替代分布)
- 格式:[资源名][分布函数]
,如LAB[u(1;2)]` 为 LAB 资源分配均匀分布
Activity Codes 和 User Defined Fields 选项卡
用于选择导入哪些 P6 活动代码和用户自定义字段,以便在 PRA 中按这些维度组织项目。

货币处理(Currencies)
Base Currency 与 Viewing Currency
PRA 始终使用 P6 的Base Currency(基准货币)读取作业剩余成本。Base Currency 在 Admin | Currencies 中设置。
P6 中的 Viewing Currency(视图货币,在 Edit | User Preferences | Currency 中设置)被 PRA 忽略。
为什么必须用 Base Currency
当 Base Currency 与 Viewing Currency 不同时,P6 数据库中的值始终以 Base Currency 存储。例如:
- Base Currency = US Dollars(美元)
- Viewing Currency = GB Pounds(英镑),汇率 1.5
- 界面上显示 £1000 → P6 转换为 Base Currency 存入数据库 = $1500
PRA 打开项目时会使用 $1500 这个值。
因此,如果在 P6 的用户定义字段中输入最小/最大作业成本,必须以 Base Currency 为单位。原因是这些值输入的是用户自定义字段,P6 并不知道它们实际是货币值,不会自动转换。
PRA 中的货币符号
P6 项目在 PRA 中打开后,显示的是 PRA 默认货币符号。修改路径: Plan | Plan Options → Currency 选项卡。
如需固定使用某一货币符号,勾选 "Use as default for all new plans" 即可。
打开P6项目的完整流程
从数据库打开(Step by Step)
- 在 P6 中创建项目(如使用风险分析,可用 P6 用户字段存储最小/最可能/最大工期等数据)
- PRA 中:
File | Primavera | Open Primavera P6 Project... - 输入 P6 用户名和密码登录
- PRA 连接到数据库并读取项目列表
- 选择按 EPS(企业项目结构)或 Portfolio(项目组合)显示
- 选择目标项目,点击 OK
- 选择导入精度:最近天 / 最近小时 / 最近15分钟
- 如果已在 P6 中设置风险输入,在此处映射字段
- PRA 显示导入进度对话框,完成后显示警告信息
- PRA 加载选定的工作区(默认
Primavera.wkspc),包含名为 Import Check 的工作表,用于对比 P6 和 PRA 的日期
从 P6 端发起打开
P6 v6 或 v7 的项目也可直接从 P6 中打开:在 P6 中使用菜单命令 Tools | Risk Analysis(对应 PRA v8)。
此菜单项在 PRA 首次运行时自动注册到 P6。如果不想自动添加,可在 PrimaveraRiskAnalysis.ini 中设置:
[Primavera]
AddToToolsMenu=FALSE从 XER 文件打开
- PRA 中:
File | Primavera | Open Primavera XER file - 定位并选择 .xer 文件,点击 Open
- 如果 P6 项目中已设置用户字段中的风险数据,映射对应字段
- PRA 显示导入进度,完成后显示警告
- PRA 加载工作区
打开多项目
从 EPS 打开项目时,可以选择多个项目。PRA 会构建一个包含所有选中项目的统一计划,并保留项目间的逻辑关系。
Data Date 对齐
打开多个项目前,建议在 P6 中将各项目的 Data Date(数据日期)对齐。
如果多个项目的 Data Date 不同,PRA 始终使用最晚的 Data Date,并提供两个选项:
- Assume no progress(假设无进展):更早 Data Date 的项目中所有未完成作业从最晚 Data Date 之后开始
- Assumed progressed according to plan(假设按计划进展):更早 Data Date 的项目假定已按计划推进到最晚 Data Date
项目间逻辑关系
如果只打开一个包含跨项目逻辑关系的 P6 项目,PRA 会为每条链接显示警告,然后忽略这些链接。
如果同时打开有链接关系的多个项目,PRA 会创建这些跨项目链接。
作业分组(Grouping)
按 WBS 组织
导入时勾选 "Import the WBS Structure" 选项后,PRA 将使用 P6 的 WBS 结构组织导入的项目。
按 Activity Code 组织
导入时可以选择 P6 的 Activity Code 和 User Defined Fields。导入后可使用任何已导入的活动代码或用户字段来组织项目。
P6/P3/Suretrak 与 PRA 的差异
活动类型差异
| P6 活动类型 | PRA 处理方式 |
|---|---|
| 零工期活动 | PRA 结束日期 = 开始日期前 1 天;P6 中开始 = 结束日期。这会导致 Finish Check 显示差异,不影响分析结果 |
| Level of Effort | 导入为 Hammock 活动 |
| WBS Summary | 按 WBS 组织时,资源转移到汇总任务;不按 WBS 时,创建汇总任务降级下级任务 |
| Start / Finish 标志 | 导入为里程碑 |
| Meeting / Independent 活动 | 作为普通任务导入 |
Activity ID
P6 中活动 ID 开头的空格在 PRA 中会被移除。例如 P6 中 " 10" 和 "10" 是两个不同活动,但 PRA 中会视为同一个 "10"。
时间精度
导入时选择 Day / Hour / Quarter Hour 作为 Planning Unit。如果 P6 中的工期或日历非工作时间精度更高,PRA 会按所选单位舍入,并在日志中显示差异。
日历
- PRA 不支持 "Make nearest workday a holiday" 选项
- PRA 支持重复假日(Repeating Holidays)
- XER 文件中不记录 "hours per day" 设置。默认设为 8 小时/天,导入时可按需调整
逻辑关系
支持 FS(完成-开始)、SS(开始-开始)、FF(完成-完成)三种主线类型。正负滞后均支持。
虽然 PRA 也读取 SF(开始-完成)类型,但不建议使用——PRA 和 P6 之间可能存在调度差异。可用 Reports | Schedule Check Report 找出所有 SF 连接。
约束条件
建议进行风险分析的 P6 项目中尽量少用约束条件(Constraints)。
| P6 约束 | PRA 等价约束 |
|---|---|
| Start On | Start On |
| Start On or Before | Start On or Before |
| Start On or After | Start On or After |
| Finish On | Finish On |
| Finish On or Before | Finish On or Before |
| Finish On or After | Finish On or After |
| As Late As Possible | As Late As Possible |
| Mandatory Start | Must Start On |
| Mandatory Finish | Must Finish On |
PRA 不读取 P6 中的 Secondary Constraint(次要约束)。
进度计算差异
若导入前未在 P6 中进行进度计算,Import Check 工作表中的 Start Check 和 Finish Check 列会显示差异。这不影响分析结果,但会干扰排查真正的调度差异。建议在 P6 中先进行进度计算(F9 | Schedule)再导出。
实战案例:某核电项目的 P6 导入
案例:某三代核电常规岛建设项目
项目背景
沿海某核电基地 2×1200MW 三代机组常规岛建设工程,EPC 总承包合同金额约 ¥63 亿。总工期 58 个月,共约 8500 条作业,使用 P6 Professional R8.3 管理进度。
导入策略选择
项目团队面临决策:用 XER 还是数据库直连?
| 决策维度 | XER 方案 | 数据库方案 | 最终选择 |
|---|---|---|---|
| 分析频率 | 季度 | 月度 | 月度 |
| 风险数据回写 P6 | 不支持 | 支持 | 数据库 |
| 8500 条作业导入时间 | ~2 分钟 | ~45 秒 | 数据库 |
| 多人协同风险分析 | 需每个副本手动合并 | 中央数据库同步 | 数据库 |
最终选择:数据库直连(API 方式 + Oracle 数据库),P6 和 PRA 均安装在本地服务器上。
导入映射配置
在 P6 中创建了以下用户自定义字段用于风险数据交换:
| P6 用户字段 | 映射到 PRA | 映射类型 |
|---|---|---|
| UDF_Min_Dur (Start Date) | Minimum Duration | 输入 |
| UDF_Max_Dur (Start Date) | Maximum Duration | 输入 |
| UDF_Dur_Corr (Text 250) | Duration Correlation | 输入 |
| UDF_Criticality (Number) | Criticality Index | 输出 |
| UDF_P80_Finish (Start Date) | P80 Finish Date | 输出 |
| UDF_P80_Start (Start Date) | P80 Start Date | 输出 |
成本导入选择按 Labor / Non-Labor / Material / Expense 四类汇总,大幅减少数据量(从 12,000+ 条资源分项降至 ~5,000 条)。
踩坑记录
- **坑1:**首次未在 P6 中做进度计算就导入 PRA,Import Check 显示 127 个活动有日期差异,排查耗时 3 小时。教训:导入前务必 F9!
- **坑2:**P6 中 Viewing Currency 设置为人民币 ¥,但 Base Currency 是美元 $,导致 PRA 中成本数值凭空放大 6 倍。教训:核对 Base Currency,必要时在 P6 Admin Preferences 中统一调整。
- 坑3: Connection Timeout 默认值对 8500 条作业加 12000 条资源分配不够用,出现 "Server Busy"。增大至 120 秒后解决。
导入成果
成功在 PRA 中建立完整的项目模型:8,500 条作业、36 个 WBS 节点、4 类汇总成本。首次导入耗时约 6 分钟(含映射配置),后续月度更新只需 2 分钟(使用默认映射)。
本章小结
| 要点 | 一句话 |
|---|---|
| 两种方式 | XER 文件(离线导入,不能回写)vs 数据库直连(在线双向) |
| Connection Wizard | File |
| Native Connection | P6 v6/v7 推荐方式,通过 BREBootStrap.xml 实现,无需额外组件 |
| API Connection | 需安装 API 和 JRE,支持远程连接(HTTP/HTTPS 等模式) |
| 输入映射 | 将 P6 用户字段映射到 PRA 风险字段(Tasks / Probabilistic / Resources 选项卡) |
| 货币 | PRA 使用 P6 的 Base Currency,忽略 Viewing Currency |
| 多项目 | 支持同时打开,Data Date 不一致时有两条处理策略 |
| 导入前必做 | 在 P6 中执行进度计算(F9),否则 Import Check 会产生误导性差异 |
英文原版内容版权归 Oracle Corporation 所有。中文翻译、案例、习题由 计划工程师 独立创作。
