ClearQuest API Perl - Incorporación de un registro a otro registro de Niños
-
12-10-2019 - |
Pregunta
Tengo una base de datos de ClearQuest con un tipo de registro llamado "BuildSheet". En un registro BuildSheet, puede adjuntar tareas que son otro tipo de registro.
pensé que podría crear un tipo de registro de tarea, a través del método Sesión BuildEntity
, y luego hacer un método Sesión EditEntity
en el registro BuildSheet, y agregue el campo ID de tarea a través del método Entidad AddFieldValue
.
Por desgracia, mi intento de crear el registro de Tipo falla. Se pone tropezó por la declaración 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);
}
El eval está fallando cuando intento crear el registro TASK_RECORD_TYPE
. Me sale el siguiente mensaje de error:
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
Ahora, puede abrir un registro BuildSheet, entra en la etiqueta de registro hijo, haga clic en Crear y construir mi registro de tarea de esa manera, lo que al parecer yo no tiene permiso.
Lo que parece es que debo de alguna manera asociar el registro de "tareas" con un "BuildSheet" antes de tratar de crearlo, pero ¿cómo?
Solución
He encontrado el culpable. Tienen un gancho en el método BuildEntity
con el fin de garantizar que el registro de tareas que estoy tratando de crear está conectado a un registro padre. Estúpida * # * @ # $ & @.
De todos modos he encontrado el script gancho (escrito en VB) y encontré en el que estaban tratando de hacerme tropezar:
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
Para evitar esto, me puse ParentBuildSheetID
con el método SetNameValue
antes he tratado de crear el registro:
$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);
}
Ahora, que funcionó!
Otros consejos
No, no creo que usted tiene que asociar el registro de tareas con la BuildSheet como se llama a BuildEntity.
Se puede llamar GetSubmitEntityDefNames y verificar que la "tarea" es en sus resultados?
http://www.ibm.com/developerworks/forums/ thread.jspa? threadID = 179429 tiene el ejemplo más cercano que veo a lo que está tratando de hacer. Si es así, una vez que pasas el problema BuildEntity, en lugar de:
a continuación, hacer un método EditEntity sesión en el registro BuildSheet, y agregue el campo ID de tarea a través del método AddFieldValue Entidad.
que desea establecer el campo relación correcta en su nueva tarea a la identificación BuildSheet antes Comprometerse en lugar de establecer el identificador de tarea en el registro BuildSheet.
Espero que esto ayude; No he tenido que usar ClearQuest en más de una década, por lo que sólo voy por lo que dice la (demasiado escasa) documentación.