2010-12-23 73 views
1

我有一个名为“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”关联起来,但是怎么做?

回答

1

我发现了罪魁祸首。他们在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 

要解决这个问题,我设置ParentBuildSheetIDSetNameValue方法之前,我试图创建备案:

$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); 
} 

现在,工作!

+0

我对CQ钩子一无所知,但是你能否轻轻地建议他们在验证或提交时挂钩(假设这是可能的)。 – ysth 2010-12-28 21:03:58

0

不,我不认为你必须将任务记录与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了,所以我只是按照文档所说的(太少)。

+0

自从我使用ClearQuest或ClearCase已经过去了十多年。我曾希望两人都死于一场暴力而痛苦的死亡,并且有这个悲剧事件的录像带,所以我可以观看它。不是我很苦。但是,在这里,我在另一个CC/CQ商店,这意味着我已经死了,并且下地狱。 – 2010-12-28 19:04:16

相关问题