Primavera Integration API
使 用 手 册
上海普华科技发展有限公司 吕小妮
第一章 Primavera API 概要
11..11 简简介介
随着业务需求的不断增长,高速互联网/局域
网所催生的发展机遇,企业要求快速交换信息,实
现信息快速共享,以提高企业内部各个部门的共同
协作效率和水平,要求将企业生产信息,企业销售
信息,企业服务信息和企业管理信息集成在一起。
作为企业项目管理信息平台的 Primavera软件
也提供了快速与其他系统的集成方法:Primavera
Integration API。
Primavera Integration API 是在企业级应用
上,提供与其他的应用系统一个无缝的访问接口。
具有以下特征:
1、 一个支持所有的关键业务对象和功能的接
口;
2、 可升级,性能稳定,可以支持大型企业级
的集成;
3、 安全性高,无论是在应用层还是在网络层;
4、 以面向对象的方式封装了 Primavera 所有
的业务对象,每个业务对象都有自己的属
性和方法。用户所面对的是和 Primavera 程序
中一样的对象,如,项目,WBS,作业,资源
等等。用户不需要考虑数据库。
11..22 架架构构
Primavera Integration API 是遵循 Primavera
业务逻辑(Primavera Business Rule Engine BRE)
的,遵循 Primavera 的 myPrimavera 的业务对象逻
辑,技术上的连接池,缓存,许可和安全等基本原
理也同于 myPrimavera。
Primavera Integration API 有两种架构
“Local Mode”和“Remote Mode”。
Local Mode 模式,也就是 Standalone,那么,
Primavera Integration API 就不需要一个应用服
务器,这个模式最方便建立的。其架构图如下:
如果配置成 Remote Mode 模式,那么,
Primavera Integration API 就必须要有一台应用
服务器,这台服务器上要求有 JSP 服务器,也就是
J2EE 服务器,现在 Primavera 支持的 J2EE 服务器
有 BEA WebLogic, IBM WebSphere,或者是 Oracle
9iAS。其架构图如下:
55
技术问答
关于 Primavera Integration API 的 Remote Mode
连接逻辑对比 myPrimavera 的连接逻辑图如下:
注意:
1、myPrimavera 服务器包含一个
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示层组件
(Presentation Component),用于生成应用服务程
序中的 HTML,XML 和一些图片文件,远程客户通过
这个组件访问连接。而 Primavera Integration API
有一个集成组件(integration component),通过
这个组件让远程的客户连接。
2、在 myPrimavera 和 Primavera integration
API 中,他们是使用同样的连接许可,也就是说,
一个 myPrimavera 用户就有一个 myPrimavera 的许
可,Primavera Integration API 也是同样的原理,
一个通过 Primavera Integration API 访问用户就
得有一个许可。
3、在应用层的安全性上,由于 Primavera
integration API 的 RMI Client 上可以使用 SSL,
那么,对比 myPrimavera 和 Primavera integration
API 都是可以使用 SSL 的。因此,myPrimavera 和
Primavera integration API 都可以作为商业应用。
56
11..33 RReemmoottee MMooddee 配配置置图图和和集集成成时时序序图图
集成时序图
Java Remote Method Invocation(RMI)允许用户
写 Java 分布式对象。
RMI通过Java对象提供了一个简单直接的分布式计
算。
Java 信奉“write once,run anywhere”,RMI 不但
继承了 Java 这一特性,还更加发扬了其功能。由于
RMI 是基于 Java 开发的,所以,也秉承了 Java 的
安全,方便,分布计算的特性。
11..44 功功能能函函数数
尽管本章讲了一些功能函数,但只讲了一些核
心的功能函数,还有很多功能函数和周边功能函数
请 参 考 Primavera API 安 装 之 后 路 径 下 的
技术问答
\PrimaveraAPI\docs\api\index.html。
Primavera API 功能可读可写的模块有:
Activities
Activity Codes
Activity
Period Actuals
Activity
Relationships
Activity Steps
Baselines
Budget Change
Logs
Calendars
Collaboration
Documents
Cost Accounts
Expense
Categories
Financial
Periods
Funding
Sources
Notebooks
OBS
Overhead
Codes
Portfolios &
Teams
Projects
Project Codes
Project Issues
Project Risks
Project
Thresholds
Security
Settings
Resources
Resource
Assignments
Resource
Assignment
Period
Actuals
Resource
Codes
Resource
Rates
Roles
User Defined
Fields
Users
WBS
Primavera API功能只可读的模块有:
Date/Time Stamps
Project Initiation
Resource Planning
Spread Data
Summary Data
Timesheets
Primavera API另外增加的模块有:
Apply Actuals
Copy Project
Export/Import via XML
Run Batch Reports
Schedule and Level
Store Period Performance
Summarize
11..55 数数据据库库表表名名与与 AAPPII 类类名名对对应应说说明明
表名 类名
访问
权限
说明
ACCOU
NT
CostAccoun
t
RW
Cost
accounts
ACTVC
ODE
ActivityCo
de
RW
Activity
code values
ACTVT
YPE
ActivityCo
deType
RW
Activity
codes
BASET
YPE
BaselineTy
pe
RW
Baseline
types
BUDGC
HNG
EPSBudget
ChangeLog
RW
EPS Budget
change log
BUDGC
HNG
ProjectBud
getChangeL
og
RW
Project
Budget
change log
CALEN
DAR
Calendar RW
Calendars -
base,
project, and
resource
COSTT
YPE
ExpenseCat
egory
RW
Expense
categories
CURRT
YPE
Currency RW
Currency
information
DOCCA
TG
DocumentCa
tegory
RW
Categories
for
57
技术问答
documents
DOCST
AT
DocumentSt
atusCode
RW
Status codes
for work
products and
documents
DOCUM
ENT
Document RW
Documents
and work
products
FINDA
TES
FinancialP
eriod
RW
Financial
Periods
FUNDS
RC
FundingSou
rce
RW
Funding
sources
ISSUH
IST
IssueHisto
ry
RO
Issue
histories
MEMOT
YPE
NotebookTo
pic
RW
Notebook
topics
NONWO
RK
OverheadCo
de
RW
Overhead
codes
OBS OBS RW
Project
organization
al breakdown
structure
PCATT
YPE
ProjectCod
eType
RW
Project code
types
PCATU
SER
ProjectCod
eUser
RO
PCATV
AL
ProjectCod
e
RW
Project code
values
PFOLI
O
ProjectPor
tfolio
RW
Project
portfolios
PHASE
WBSCategor
y
RW
WBS
categories
PREFE
R
GlobalPref
erences
RO
Admin
preferences
PROCG
ROUP
ActivitySt
epTemplate
RO
Activity
Step
Template
PROCI
TEM
ActivitySt
epTemplate
Item
RO
Activity
Step
Template
Items
PROFI
LE
GlobalProf
ile
RW
User Global
security
profiles
PROFI
LE
ProjectPro
file
RW
User Project
security
profiles
PROJC
OST
ActivityEx
pense
RW
Expenses for
a project
PROJE
CT
BaselinePr
oject
RO
Project
Baseline
PROJE
CT
Project RW
PROJE
ST
ProjectEst
imate
RW
History of
estimates
done for
project
PROJF
UND
EPSFunding RW
EPS funding
sources
PROJF
UND
ProjectFun
ding
RW
Project
funding
sources
PROJI
SSU
ProjectIss
ue
RW
Project
issues
PROJR
ISK
ProjectRis
k
RW
Project
risks
PROJT
HRS
ProjectThr
eshold
RW
Project
thresholds
PROJW
BS
EPS RW
EPS work
breakdown
structure
PROJW
BS
WBS RW
Project work
breakdown
structure
58
技术问答
RCATT
YPE
ResourceCo
deType
RW
Resource
code types
RCATV
AL
ResourceCo
de
RW
Resource
code values
RFOLI
O
ResourceTe
am
RW
Resource
portfolios
RISKT
YPE
RiskType RW Risk types
RLFOL
IO
RoleTeam RW
Role
portfolio
dictionary
ROLER
ATE
RoleRate RO Role Rates
ROLES Role RW Roles
RPTBA
TCH
BatchRepor
t
RO
Report
series for
batch
printing
RSRC Resource RW Resources
RSRCC
URV
ResourceCu
rve
RW
Resource
curves
RSRCH
OUR
ResourceHo
ur
RO
Resource-tim
esheet hours
RSRCR
ATE
ResourceRa
te
RW
Time-varying
resource
prices and
maximum
units
RSRCR
OLE
ResourceRo
le
RW
Resource-rol
e
assignments
RSRCS
EC
ResourceAc
cess
RO
SHIFT Shift RW
Shift
definitions
for
resources
SHIFT
PER
ShiftPerio
d
RO
Work periods
within
shifts
TASK Activity RW Activities
TASKD
OC
ProjectDoc
ument
RW
Work
products and
documents
assigned to
activities
TASKF
IN
ActivityPe
riodActual
RW
Activity
Past Period
Actuals
TASKM
EMO
ActivityNo
te
RW
Activity
specificatio
ns
TASKP
RED
Relationsh
ip
RW
Activity
dependencies
TASKP
ROC
ActivitySt
ep
RW
Activity
steps
TASKR
SRC
ResourceAs
signment
RW
Resources
assigned to
activities
THRSP
ARM
ThresholdP
arameter
RO
Threshold
parameters
TIMES
HT
Timesheet RO
Resource
timesheets
TRSRC
FIN
ResourceAs
signmentPe
riodActual
RW
Resource
Assignment
Past Period
Actuals
TSDAT
ES
TimesheetP
eriod
RO
Timesheet
periods
UDFCO
DE
UDFCode RW
UDFTY
PE
UDFType RW
User-defined
Types
UMEAS UnitOfMeas RW Definitions/
59
技术问答
URE ure labels for
all Unit of
Measure
columns
USERC
OL
UserFieldT
itle
RO
Definitions/
labels for
all
user-defined
columns
USERE
NG
UserLicens
e
RW
Maps users to
database
engine types
for license
enforcement
USERO
BS
UserOBS RW
User-OBS
assignments
USERS Users RW
Application
users
USERS
ScheduleOp
tions
RO
Schedule
Options
WBSBU
DG
EPSSpendin
gPlan
RW
Periodic
(monthly)
budgets for
EPS
WBSBU
DG
ProjectSpe
ndingPlan
RW
Periodic
(monthly)
budgets for
projects and
WBS
WBSME
MO
EPSNote RW EPS notebook
WBSME
MO
ProjectNot
e
RW
Project and
WBS notebook
WBSRS
RC
ProjectRes
ource
RO
WBSRS
RC_QT
Y
ProjectRes
ourceQuant
ity
RO
WBSST
EP
WBSMilesto
ne
RW
WBS
milestones
WORKF
LOW
Initiation RO
第二章 Primavera Integration API 安装说明
22..11 系系统统需需求求
一、Java环境
1、Primavera Integration API要求应用客户端具有
JRE1.4x或1.5.0_x的运行环境。
2、在进行Primavera Integration API开发时,开发
环境需要Java SDK1.4x或1.5.0_x。
二、操作系统
1、windows
2、Solaris
3、Linux
三、数据库
Primavera 5.0 project management数据库:
1、MS SQL Server
2、Oracle
3、MSDE
四、应用程序服务器
1、Tomcat 5.0.x
2、BEA WebLogic Server 8.1x或7.0
3、IBM WebSphere Application Server v5.1
22..22 安安装装过过程程
Primavera Integration API程序光盘随Primavera
软件包一起发放,其光盘名称为API。如果用户没有
拿到,请与上海普华前台联系。
60
技术问答
1、运行Primavera API光盘根目录下的安装程序。
对于Windows操作系统,请运行setup.exe程序;
对于Linux系统平台,请运行setupLinux.bin程
序;
对于Solaris系统平台,请运行
setupSolaris.bin程序;
2、如果该机器上已经安装了J2SE或者是安装了
J2SDK,那么,直接出现欢迎界面,请点击下一步。
如果没有安装,那么要求先在这台机器上安装
JRE1.4.2、DK1.4.2或者以上。(关于J2SE1.4及
J2SDK1.4的安装,请参考其他的相关文档。)
3、接受许可
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
。
4、选择安装类型。
可选择的安装类型有:
z Local Mode Packages Only -- 本机安装
Local Mode,没有RMI。
z Client Side Package Only -- Remote
Mode Client安装,但是只安装Client端的
Java库,
XML导入/导出工
具,一些DEMO程序
以及
Primavera
Integration API
的参考文档。
z Weblogic 8.1x Server -- Remote
Mode Server安装,安装在Weblogic8.1x的
应
用服务器
上。
z Tomcat5.0 -- Remote
Mode Server安装,安装在Tomcat5.0的应
用
服务器上。
z Other supported J2EE compatible
application or Web servers
-- Remote
Mode Server安装,
安装在其他类型
的应用
服务器上。
¾ Local Mode 安装
① Local Mode安装是指在安装了Primavera数
据库的机器上安装Primavera Integration API程序,
Primavera API直接与数据库连接进行访问。在上述
步骤中选择了“Local Mode Packages Only”安装时,
进行本段的安装。
② Primavera API程序安装路径,默认为
C:\Program Files\Primavera\IntegrationAPI。用
户也可以自定义这个路径。
请在“Specify the location of the JDK”中选择
这台机器上已经安装的有效的JRE路径。默认情况下
安装向导程序自动查找到相应的JRE路径。
61
技术问答
③ 本节只安装Client端的Java库,一些DEMO程序以
及Primavera Integration API的参考文档。
④ 拷贝文件。
⑤ 点击完成,完成 Primavera Integrate API Local
Mode 的安装。
¾ Remote Mode Client 安装
① Remote Mode Client安装是指在一台客户
机上,只安装Primavera Integration API的客户端
程序,Remote Client与Primavera Integration API
服务器连接进行访问。在上述步骤中选择了“Client
Side Package Only”安装时,进行本段的安装。
② Primavera API 程序安装路径,默认为
C:\Program Files\Primavera\ IntegrationAPI。
用户也可以自定义这个路径。
请在“Specify the location of the JDK”中
选择这台机器上已经安装的有效的 JRE 路径。
62
技术问答
③ 本节只安装Client端的Java库,一些DEMO
程序以及Primavera Integration API的参考文
档。
④ 拷贝文件。
⑤ 数据库的连接配置,请参考Primavera5.0安装手
册中的相关章节。
点击完成,完成 Primavera Integrate API 在 Remote
Mode 模式的 Client 端的安装。
¾ Remote Mode Server(Weblogic)安装
① Remote Mode Server(Weblogic)安装是指
在一台安装了Weblogic的J2EE服务器上,安装
Primavera Integration API的服务器端程序,作为
Primavera Integration API服务器提供服务。在上
述步骤中选择了“Weblogic 8.1x Server”安装时,
进行本段的安装。
② 请在“Specify the location of the JDK”中
选择这台机器上已经安装的有效的 JDK 路径。
Primavera Integration API作为服务进,对外提供
HTTP服务的端口号默认为8080,对外提供HTTPS服务
的端口号默认为8081。用户也可以根据实际情况修改
成其他的端口号。
63
技术问答
③ 确认是否将这个Primavera Integration API 安
装成一个服务。用户也可以选择不安装成一个服务,
每次需要时手工启动。
④ 确认本节安装信息有Primavera Integration
API客户端组件,服务器端组件,Java的开发参考文
档以及Primavera Integration API的Web应用程序组
件。如果有变动,可以点击“上一步”进行修改。
⑤ 拷贝文件。
⑥ 点击完成,完成 Primavera Integrate API 服务
器端的安装。
⑦ 安 装 完 成 之 后 , 创 建 一 个 “ Primavera
Integration API5.0”程序组。如下图所示。
⑧ 如 果 在 第 ③ 步 中 选 择 了 “ Primavera
Integration API 安装成一个服务”,那么,
Primavera Integration API 安装完成之后,在服务
器 的 服 务 列 表 中 存 在 一 个 “ beasvc
PrimaveraAPI_PrimaveraAPI Server”的服务,让该
服务自动启动。
用 户 也 可 以 在 不 启 动 “ beasvc
PrimaveraAPI_PrimaveraAPI Server”服务的情况
下,启动程序组中的“Start Weblogic Server For
Primavera Integration API5.0 SP1”作为服务。如
64
技术问答
下图所示。
⑨ 至此,Primavera Integration API For Weblogic
的RMI服务器端安装完成。
¾ Remote Mode Server(Tomcat)安装
安装位置同于“Remote Mode Server(Weblogic)
安装”,只是此时是以Tomcat作为J2EE服务器。本文
档不详细讲解。
¾ Remote Mode Server(其他 J2EE)安装
安装位置同于“Remote Mode Server(Weblogic)
安装”,只是此时是以其他的 J2EE 服务器作为应用服
务器。本文档不详细讲解。
22..33 AAPPII 许许可可
Primavera Integration API 的许可与用户现有
产品许可绑定的,因此,用户如果需要 API 进行二次
开发,请与上海普华技术支持联系。
API 许可获取之后,要求加载到数据库,加载时,
要求注册,注册方法与本身许可的注册一致。具体请
参考《Primavera5.0 安装说明》第四章注册数据库。
API 加载成功之后,在 PM 程序中,帮助,关于
Primavera,单位页面,可以看到 Integration API 的
许可加载成功,如“Integration API NU(30),CU(0),
没有过期日期”。
确认 API 许可加载成功之后,对 Primavera 用
户授予 API 使用的许可。如下图所示,对 admin 这个
用 户 授 予 Integration API 的 使 用 许 可 。 在
Primavera API 客户端连接 API 服务器端时,只有授
予了 Integratin API 许可的用户方可通过 API 客户
端连接。
第三章 Primavera API 基础
33..11 PPrriimmaavveerraa AAPPII 基基础础 –– SSeessssiioonn
•打开 Primavera API 参考文件,可以查到 Session
类。
•在 Primavera API 中有很多静态成员函数(这些成
员函数在创建类的实例后就可以被引用。)•这些
Session 类有:
1. isLocalModeAvailable()
2. isRemoteModeAvailable()
3. getDatabaseInstances(String sUrl)
4. Login(String sUrl,StringsDbId, String
sUserName, String sPassword)
注:•Login 是一个静态成员函数,在引用它
时,将会创建一个实例 Session。
•其他的几个 Session 也是静态成员函
数,这些成员函数将帮助使用者获取登
录信息。
65
技术问答
•在的本机模式访问,
isLocalModeAvailable()返回一个 True
值。
1、如果使用的是 Local 模式,那么请在写系统
属性时,如下写:
System.setProperty("primavera.bootstrap
.home","C:\\Program
Files\\primavera\\PrimaveraAPI");
2 、 如 果 是 远 程 访 问 ,
isRemoteModeAvailable() 返 回 一 个
True 值。
• getDatabaseInstances(String sUrl)
的引用如下所示:
1、
Session.getDatabaseInstances
();
2、此处的输入为一个 API 服务器
的 URL 字符串;
3、如果是远程访问模式,那么这
个字符趾值为 RMIURL,即访问远
程机器的 URL;
4、如果是本地模式,那么这个值
为 NULL;
5 、
Session.getDatabaseInstances
()返回 DatabaseInstance 实例
对象类型;
6、从返回值可以知道连接访问的
数据库是哪一个;
7、用户可以同时得到数据库的
ID 和数据库名称;
8、每个数据库实例同时包括两个
成员函数:
•getDatabaseID – 包含数
据库 ID;
66
•getDatabaseName – 包含
数据库名称;
•另外一个静态成员函数为 Login,这个
函数返回一个 session 对象。
•Login 成员函数输入有 RMIURL,数据库
ID,用户 ID 和用户口令。
•在Java代码中获取一个Session对象的代码如下所
示:
Session mysession =
Session.login(null,”1”,”S
eanj”,”MyHardToGuessPasswo
rd”)
•所有通过 Login 成员函数登录的引用的 API 中的权
限,全部继承在 Project Management 中给用户所设
置的权限。这样确保了权限的一致性。
•一旦获取了 Session 对象,用户就可以引用非静态
成员函数。
•非静态成员函数有:
getDatabaseInstanceId() getUserName()
getXMLExporter getUserObjectId
getXMLImporter getJobManager()
getGlobalObjectManager logout()
•上述成员函数返回的是用户及数据库信息有:
•getUserName() 返回包含登录的用户名字符
串;
•getUserObjectId() 返回登录用户的对象 ID
号;
•getDatabaseInstanceId() 返回包含登录时
连接的数据库 ID 号;
•成员函数logout释放Session和所有的登录后引用
的资源。
•其他的 4 个成员函数用于生产环境中的 API。
•成员函数 getGlobalObjectManager 是这几个中非
常重要的,此处只讲其概貌。
33..22 PPrriimmaavveerraa AAPPII 基基础础 –– XXMMLL
•XMLImporter 和 XMLExporter 可以导入/导出包含
业务逻辑的数据到一个文件中。
技术问答
•这些导入/导入的文件是以 XML 格式存在。
•XML 支持可扩展标记语言(Extensible Markup
Language XML)。
•XML 是一种标准的用于描述数据的文件格式,正如
HTML 是一种标准的用于描述 Web 页的文件格式。
•成员函数 XMLExporter 支持单个业务逻辑的写入。
•成员函数 XMLImporter 支持项目级数据的导入。
33..33 PPrriimmaavveerraa AAPPII 基基础础 –– JJoobbss
•类 JobManager 提供 4 个 PM 的 API 函数。
•进度计算,本期进度更新,汇总这三个任务,一经
提交 Job 到数据库中,就由 Primavera Job Service
具体执行这些 Job。
•一旦提交任务,任务调度中心就调用成员函数实现
任务。
•用户也可以通过调用 JobManager.getJobStatus
来查看这些任务的状态,是否完成等。
•复制项目的操作,不通过 Job Service 来做,但是
这个工作是在 Java 客户端上进行。正因为这个原因,
任务调度中心在没有完成复制项目这个工作之前,是
不会调用任务成员函数的。
33..44 PPrriimmaavveerraa AAPPII 基基础础 –– GGOOMM
•大多数 API 对象可以是全局对象管理器(Global
Object Manager GOM)管理。
•全局对象管理器(Global Object Manager GOM)用于
访问所有的全局业务逻辑数据:
•EPS
•Projects
•Resources
•Roles
•全局对象管理器(GlobalObjectManager GOM)通过
引用 Session.getGlobalObjectManager()来取得准
确的 Session。
•全局对象管理器(Global Object Manager GOM)可
以创建,调用,更新,删除。
•全局对象管理器(Global Object Manager GOM)是
用户调用其他的 API 数据的入口。
第四章 BOIterator, Projects, Activities 和
Assignments
44..11 BBOOIItteerraattoorrss——PPrriimmaavveerraa 迭迭代代器器
•在上一章,我们学习到 GlobalObjectManger 这个
类,这让我们学会了怎么调用和使用数据库中很多业
务逻辑数据。
•调用 GlobalObjectManger(GOM)返回一个类型为
BOIterator 的对象。
•BOIterator 是 Primavera 类,支持标准的业务迭代
逻辑。
•查阅 Java 2 参考手册中,Iterator 一个是结构集的成
员,提供给用户访问集对象的一个标准方法。
•BOIterators 和 Java 2 标准的 Iterators 有些不一
样。
•BOIterators 没有远程访问方式,这就意味着初始
封装时 do not have the Remove method, meaning
its contents are frozen when initially
populated.
•BOIterators 有一个 getCount()函数,这个函数可
以返回 Iterator 对象个数。
•函数 getAll()返回所有的 Iterator 业务对象成数
组。(因为性能原因,不推荐使用这个函数)
44..22 PPrroojjeecctt 项项目目业业务务逻逻辑辑
•用户可以周遍查看一下整个项目数据库。
•首先可以得到 GOM。
•然后可以 set BOIterator 等于 LoadProjects 这个
成员函数的结果集。
67
技术问答
•loadProjects 将需要三个参数:
1、一个字符串数组,指定了被引用的字段名;
2、一个子句,指定了被引用的项目;
3、一个字符串指定项目的排序方式;
• GlobalObjectManager gom =
session.getGlobalObjectManager;
BOIterator boiProjects =
gom.loadProjects(Project.getAllFields(),
”Id like ‘y2k%’,”Id”);
•现在,用户可以通过以下方式创建一个单独的项目
对象:
if (boiProjects.hasNext() = true){
Project myProject = (Project)
boiProjects.next
….
•记住,从 Iterator(迭代器)中得到的对象,不能带
来自己的类的类型,因此,我们应该指出这些类的类
型。
•从上述的语句,现在可以创建一个名为“myProject”
的项目实例。接下测试一下对这个 myProject 所能进
行的操作。
•就这个 myProject 项目的业务逻辑,我们可以进行
如下操作:
1、新建和删除项目;
2、取项目级数据;
3、设置项目级数据;
4、创建和删除这个 myProject 项目下的对象,
如 WBS 等;
5、打开 myProject 项目的上一级和下一级对象;
6、更新 myProject 项目的下一级对象;
7、产生和排列包含所有项目级字段的可读和写
的字符串;
•有两种方法创建项目:
•方法 1 采用非静态方法创建:
•在内存中,使用项目构造器 project (Session
session)创建项目。
•引用成员函数 Projects.Create ()。
•返回项目创建后的 ObjectID 号(可能有
很多个 ID 号)。
•方法 2 采用静态方法创建:
•引用成员函数 Projects.Create(Session
session, Project [] projects)创建项目。
• 以 数 组 的 形 式 返 回 项 目 创 建 后 的
ObjectID 号。(区别于上方法 1,返回项目
对象 ID 形式不一样)
•有两种方法删除项目:
•方法 1 采用非静态方法删除:
•将要删除的项目装载到项目对象中。
•在项目对象上引用成员函数 delete()。
•非静态方法删除只有成功地将项目装载
到项目对象中了delete这个成员函数才有
效。
•方法 2 采用静态方法删除:
• 引 用 函 数 Projects.Delete(Session
session, Project [] projects)。
•删除传递到上述函数中参数中的项目数
组所指定的项目。
•取项目级数据
•Primavera API 通过 Get/Set 方法访问项目级
数据。
•Primavera API 在 Get/Set 项目数据内容时,
要求这些数据都在内存中:
•将数据读入内存时,可以在创建对象时就
装载这些数据。
•将数据读入内存时,也可以重新对相应的
项目运行一下装载命令。
•取到项目级数据后,After loading the fields,
they are retrieved with get commands:
•getActivityDefaultActivityType()—
返回一个作业类型对象,这个对象反映了
这个项目的默认的作业类型。
•getDataDate— 返回一个日期对象,这个
对象包含了这个项目的数据日期。
•getUserText2—返回一个字符串,这个字
68
技术问答
符串包含 UserText2 这个文本内容。
•写项目级数据
•写项目级数据与读项目级数据步骤是一样的,
如下几个写数据例子:
•setActivityDefaultActivityType(Acti
vityType acttype)— 对项目写入默认的
作业类型。
•setDataDate(Date dataDate)— 对项目
写入项目的数据日期。
•setUserText2(String usertext2)—对项
目写一个 UserText2 的文本内容。
•创建子对象
•首先为子对象创建一个对象。如下所示:
Activity activity = new
Activity(Session session)
•然后引用创建子对象的成员函数:
•createProjectLevelActivity(Activity
activity)
•createProjectLevelNote(ProjectNote
projectlevelnote)
•上述两个成员函数返回所创建对象的 ID
号。
• 删除子对象
•首先引用子对象级对象。
•调用 delete 成员函数:
•deleteActivities(Activity[]
activity)
•deleteProjectNotes(ProjectNote[]
projectnotes)
•Load Parent or Child Objects
•loadParentEPS(String[] fields) returns an
EPS Object that is the parent of the current
project. The EPS fields initially loaded
are passed as an array of Strings
•loadAllActivities(String[] fields, String
sWhereClause, String sOrderBy) returns a BO
iterator containing Activity Objects for every
activity in the project.
•更新子对象
•只要对象有所更新,用户必须将这些变更更新
到数据库中。
•这些变更的更新,是通过 Update 成员函数实
现。
•Rather than call the update method after
each change to an activity, we can call the
updateAllActivities(Activity []
allactivities) method. This sends the
changes for every task in the array to the
database at once.
•创建包含所有有效的项目级数据的数组
•这是通过 getAllFields()成员函数实现。
•这个成员函数返回一个字符数组,这个数组包
含项目中所有的非编码数据。(就是数据是实际
数据,不是以代码表示的数据)
•这是很有用处的,因为,用户可以直接知道数
据实体,而不是一个一个的数据代码。如,如
果某个所取数据为“Data
Date”,”DataDate”,”datadate”, “DD”
等情况。
•在打开一个项目,对这个项目中的字段直接进
行操作时,这个也很有用,比较直观。
44..33 AAccttiivviittyy 作作业业业业务务逻逻辑辑
•既然我们已经讲到了项目业务逻辑,接下来我们讨
论一下作业的业务逻辑。
•用户既可以在项目类中引用作业成员函数,也可以
在作业类中引用作业成员函数。
•这两种业务案例,是通过两种不同途径来实现的:
•1) 有时候用户只需要操作其中的一个项目,
和与此项目相关的作业。
•2) 有时候用户需要操作全部的项目,并不管
这些作业是在属于哪一个项目。
69
技术问答
•针对上述第二种情况,如,要求合并两个作业
的代码,这时候就不需要将作业的项目目信息
调用,而是仅从数据库中调用相关的作业进行
操作就可以了
•作业业务逻辑可以做的事项如下:
•增加和删除作业;
•读/写作业级字段;
•创建,更新和删除作业下的子对象;
•读取作业的上一级及下一级的子对象;
•生成包含所有的可用于读/写的作业级字段数
据的数组。
•作业的创建和删除操作:
•创建作业时,先创建一个对象:
Activity myactivity = new
Activity(Session session);
•然后调用成员函数:
Myactivity.Create();
•删除作业时,直接使用删除成员函数
Myactivity.delete()
70
•读作业的类和取项目类的方法是一样的。
•getStartDate 返回一个开始时间对象,包含作
业的开始时间。
•getType 返回一个作业类型对象,用户可以知
道这个作业是一个任务作业,独立作业,配合
作业等。
•写作业的类与写项目的类的方法是一样的。
•setName(String name)写入作业名称
•setId(String id)写入作业 ID 号, 如 AS100
•创建,更新,删除作业的子对象
•createActivityNote(ActivityNote
activitynote)函数是直接从数据库中对一个
作业新建一个记事本。
•deleteActivitySteps(ActivityStep[]
activitysteps)函数是直接从数据库中删除一
个作业的步骤。
•updateActivityExpenses(Activ