ClearQuest Perl API - 将子记录添加到另一条记录

时间:2010-12-23 16:55:05

标签: perl api clearquest

我有一个名为“BuildSheet”的记录类型的ClearQuest数据库。在BuildSheet记录中,您可以附加另一种记录类型的任务。

我以为我可以通过BuildEntity会话方法创建任务记录类型,然后在BuildSheet记录上执行EditEntity会话方法,并通过{{1}添加任务ID字段实体方法。

不幸的是,我尝试创建Type记录失败了。它会被AddFieldValue语句绊倒:

eval

当我尝试创建# # Now Create the Record Type and Fill in the Fields # my $record; eval { $record = $cq->BuildEntity(TASK_RECORD_TYPE); }; if ($@) { croak qq(Error when attempting to create record type ") . TASK_RECORD_TYPE . qq("\n$@\n); } if (not $record) { die qq(Cannot create entity ") . TASK_RECORD_TYPE . qq("\n); } 记录时,eval失败。我收到以下错误消息:

TASK_RECORD_TYPE

现在,我可以打开一个BuildSheet记录,进入Child Record标签,单击Create并以这种方式构建我的任务记录,所以显然我有权限。

在我尝试创建它之前,我必须以某种方式将“任务”记录与“BuildSheet”相关联,但是如何?

2 个答案:

答案 0 :(得分: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

为了解决这个问题,在尝试创建记录之前,我使用ParentBuildSheetID方法设置SetNameValue

$cq->SetNameValue("ParentBuildSheetID", $buildsheetId);
my $record;
eval { $record = $cq->BuildEntity(TASK_RECORD_TYPE); };
if ($@) {
    croak qq(Error when attempting to create record type ")
    . TASK_RECORD_TYPE . qq("\n$@\n);
}
if (not $record) {
    die qq(Cannot create entity ") . TASK_RECORD_TYPE . qq("\n);
}

现在,这很有效!

答案 1 :(得分:0)

不,我认为您在调用BuildEntity时不必将Task记录与BuildSheet相关联。

您是否可以调用GetSubmitEntityDefNames并验证其结果中是否包含“任务”?

http://www.ibm.com/developerworks/forums/thread.jspa?threadID=179429是我看到的最接近的例子。如果是这样,一旦你超越了BuildEntity问题,而不是:

  

然后在BuildSheet记录上执行EditEntity Session方法,并通过AddFieldValue Entity方法添加Task Id字段。

您希望在提交之前将新任务上的正确关系字段设置为BuildSheet Id,而不是在BuildSheet记录上设置任务ID。

我希望这会有所帮助;十多年来我一直没有使用过ClearQuest,所以我只是按照文件所说的那样去做。