ClearQuest Perl API - 将子记录添加到另一个记录
我有一个名为“BuildSheet”的记录类型的ClearQuest数据库。在BuildSheet记录上,可以附加另一种记录类型的任务。ClearQuest Perl API - 将子记录添加到另一个记录
我以为我可以创建任务记录类型,通过BuildEntity
会话方法,那么做的BuildSheet记录一个EditEntity
会话方法,并通过AddFieldValue
实体方法添加任务ID字段。
不幸的是,我尝试创建Type记录失败。它得到由eval
声明跳闸:当我试图创建TASK_RECORD_TYPE
记录
#
# Now Create the Record Type and Fill in the Fields
#
my $record;
eval { $record = $cq->BuildEntity(TASK_RECORD_TYPE); };
if ([email protected]) {
croak qq(Error when attempting to create record type ")
. TASK_RECORD_TYPE . qq("\[email protected]\n);
}
if (not $record) {
die qq(Cannot create entity ") . TASK_RECORD_TYPE . qq("\n);
}
的EVAL失败。我收到以下错误信息:
Error when attempting to create record type "Task"
Permission denied for user WeintraubH to perform action Create (of type SUBMIT)
at D:/Program Files/Rational/Common/lib/perl5/site_perl/5.8.6/CQPerlExt.pm line 43.
at H:\svn\addTask.cqpl line 340
main::createTask('TASK', 'cm', 'HEADLINE',
'FMS-CWA_APP_B35_HF276', 'DESCRIPTION', 'FMS-CWA_APP_B35_HF276',
'PRIORITY', 2, 'EFFORT', ...) called at H:\svn\addTask.cqpl line 236
现在,我可以弹出一个BuildSheet记录,进入子记录标签,单击创建和建立我的任务记录这种方式,所以显然我有许可。
看来是我试图创建它之前必须以某种方式将“任务”记录与“BuildSheet”关联起来,但是怎么做?
我发现了罪魁祸首。他们在BuildEntity
方法上有一个钩子,以确保我尝试创建的任务记录连接到父记录。愚蠢的*#@#* * $ & @。
反正我发现钩子脚本(VB编写的),发现在那里他们试图绊倒了我,让
Set oSession = GetSession
pRequestIDValue = oSession.NameValue("ParentRequestID")
pTaskIDValue = oSession.NameValue("ParentTaskID")
pBuildSheetIDValue = oSession.NameValue("ParentBuildSheetID")
NewTaskPermittedValue = oSession.NameValue("NewTaskPermitted")
curUser = oSession.GetUserLoginName
if (pBuildSheetIDValue <> "") or (pTaskIDValue <> "") _
or ((pRequestIDValue <> "") and (NewTaskPermittedValue = "Yes")) then
task_AccessControl = TRUE
else
task_AccessControl = FALSE
end if
要解决这个问题,我设置ParentBuildSheetID
与SetNameValue
方法之前,我试图创建备案:
$cq->SetNameValue("ParentBuildSheetID", $buildsheetId);
my $record;
eval { $record = $cq->BuildEntity(TASK_RECORD_TYPE); };
if ([email protected]) {
croak qq(Error when attempting to create record type ")
. TASK_RECORD_TYPE . qq("\[email protected]\n);
}
if (not $record) {
die qq(Cannot create entity ") . TASK_RECORD_TYPE . qq("\n);
}
现在,工作!
不,我不认为你必须将任务记录与BuildSheet关联起来,因为你调用了BuildEntity。
你可以调用GetSubmitEntityDefNames并验证“Task”是否在其结果中?
http://www.ibm.com/developerworks/forums/thread.jspa?threadID=179429是我看到你正在尝试做的最接近的例子。如果是这样,一旦你过去的BuildEntity问题,而不是:
然后做在BuildSheet记录一个EditEntity会话方法,并通过AddFieldValue实体方法添加任务ID字段。
您希望在新建任务之前将正确的关系字段设置为Build之前的BuildSheet Id,而不是在BuildSheet记录上设置Task ID。
我希望这有助于;我已经有十多年没有使用过ClearQuest了,所以我只是按照文档所说的(太少)。
自从我使用ClearQuest或ClearCase已经过去了十多年。我曾希望两人都死于一场暴力而痛苦的死亡,并且有这个悲剧事件的录像带,所以我可以观看它。不是我很苦。但是,在这里,我在另一个CC/CQ商店,这意味着我已经死了,并且下地狱。 – 2010-12-28 19:04:16
我对CQ钩子一无所知,但是你能否轻轻地建议他们在验证或提交时挂钩(假设这是可能的)。 – ysth 2010-12-28 21:03:58