It's all about the answers!

Ask a question

CRJAZ0447I SQL statement execution when creating Team Area


Amaury Quintero (901217) | asked Aug 22 '11, 9:53 a.m.
Hello

When I try to create a Team Area associated to a Project Area that I create previously with the same code, is giving me the following error

com.ibm.team.repository.common.InternalRepositoryException: CRJAZ0447I SQL statement execution failed.Integrity constraint violation
SQL: INSERT INTO PROCESS.PROCESS_AREA (STATE_ID, ITEM_ID, CONTEXT_ID, MODIFIED, MODIFIED_BY_ITEM_ID, ARCHIVED, NAME, UNIQUE_NAME, PROJECT_AREA_ITEM_ID, PROJECT_AREA_PROCSS_DFNTN_TM_D, PROJECT_AREA_IS_INITIALIZED, PROJECT_AREA_INTERNAL_PUBLIC, PROJECT_AREA_RED_CCSS_LST_TM_D, PRJCT_R_NTRNLPRJCTDVLPMNTLNTMD, PROJECT_AREA_OWNING_APPLICTN_K, PRJCT_R_NTRNL_PRCSS_PRVDR_TM_D, PROJECT_AR_NTRNL_S_PRCSS_PRVDR, JZ_DISCRIMINATOR) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 7)
SQL Exception #1
SQL Message: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'PROCESS_AREA_PK6' defined on 'PROCESS_AREA'.
SQL State: 23505
Error Code: 20000
Class: com.ibm.team.repository.service.internal.dataaccess.write2.Row
Item Handle: com.ibm.team.process.internal.common.impl.ProjectAreaImpl@314c314c (stateId: , itemId: , origin: <unset>, immutable: true) (contextId: , modified: 2011-08-22 13:25:38.804, workingCopy: <unset>) (mergePredecessor: null, workingCopyPredecessor: <unset>, workingCopyMergePredecessor: <unset>, predecessor: null) (descSummary: PA example project based on the Scrum project template, archived: false, name: PA - 1314012315370, uniqueName: PA - 1314012315370(JTS-Sentinel-Id)) (isInitialized: false, internalPublic: false, internalVisibleToMembers: true, internalVisibleToAccessList: false, owningApplicationKey: JTS-Sentinel-Id, internalIsProcessProvider: false)

The code used to do that is the following:

IProcessDefinitionHandle processDefinitionHandle = processServerService. findProcessDefinition(SCRUM_PROCESS, null, null);
IProcessDefinition processDefinition = (IProcessDefinition) processDefinitionHandle.getFullState();

// create Project Area
IProjectArea area = (IProjectArea) IProjectArea.ITEM_TYPE.createItem();
String actualProjectName = projectName + " - "
+ System.currentTimeMillis();
area.setName(actualProjectName);
area.setProcessDefinition(processDefinition);
IDescription description = area.getDescription();
description.setSummary(projectName + " example project based on the Scrum project template");
IItemsResponse itemResponse = processServerService
.saveProcessItemWithOverride(area, false);

// create Team Area
ITeamArea teamArea = (ITeamArea) ITeamArea.ITEM_TYPE.createItem();
String actualTeamName = teamName + System.currentTimeMillis();
teamArea.setName(actualTeamName);
teamArea.addMember(getContributor());

area = (IProjectArea) area.getWorkingCopy();
teamArea.setProjectArea(area.getProjectArea());

area.getTeamAreaHierarchy().addRoot(teamArea,
area.getDevelopmentLines());
itemResponse = processServerService
.saveProcessItemsWithOverride(new IProcessItem[] { area, teamArea }, true);

itemResponse = processServerService.initializeProjectArea(area, null);

Can any giveme a clue about that?

Thanks

Amaury

2 answers



permanent link
Andrés Fernández (6) | answered Dec 29 '14, 12:22 p.m.
edited Dec 29 '14, 12:24 p.m.
 hola, yo tenía el mismo problema. Lo que hice fue:
1. Crear el TimeLine.
2. Buscar el TimeLineCreado y settearlo en la nueva Iteración.
3. Crear la iteración.


/**
* Crear una linea de tiempo (plan).
* @param fechaInicio
*            Fecha inicio TimeLine.
* @param fechaFin
*            Fecha fin TimeLine.
* @param nombre
*            Nombre de TimeLine.
*/
public void crearTimeLines(Date fechaInicio, Date fechaFin, String nombre) {

try {

IProcessItemService service = (IProcessItemService) teamRepository.getClientLibrary(IProcessItemService.class);
IProjectArea projectAreaCopy = (IProjectArea) PROJECT_AREA.getWorkingCopy();

IDevelopmentLine developmentLine = (IDevelopmentLine) IDevelopmentLine.ITEM_TYPE.createItem();
developmentLine.setId(nombre);
developmentLine.setName(nombre);
developmentLine.setProjectArea(projectAreaCopy);
developmentLine.setStartDate(fechaInicio);
developmentLine.setEndDate(fechaFin);

projectAreaCopy.addDevelopmentLine(developmentLine);

IProcessItem[] items = service.save(new IProcessItem[] { projectAreaCopy, developmentLine }, MONITOR);
MONITOR.subTask("[" + developmentLine.getId() + "] creado");

crearIteracion(developmentLine.getId(), "Iteracion1");
crearIteracion(developmentLine.getId(), "Iteracion1");
crearIteracion(developmentLine.getId(), "Iteracion1");

} catch (Exception e) {
e.printStackTrace();
}

}

/**
* Permite crear una iteración y asignarla a una línea de tiempo (plan).
* @param idTimeLine
*            Id de la línea de tiempo a la cual se le va a asignar la iteración.
* @param nombreIteracion
*            Nombre de la iteración.
*/
public void crearIteracion(String idTimeLine, String nombreIteracion) {
try {
IAuditableClient fAuditableClient = (IAuditableClient) teamRepository.getClientLibrary(IAuditableClient.class);
IDevelopmentLineHandle[] devLines = PROJECT_AREA.getDevelopmentLines();
IDevelopmentLine developmentLine = null;
for (IDevelopmentLineHandle developmentLineHandle : devLines) {
developmentLine = fAuditableClient.resolveAuditable(developmentLineHandle, ItemProfile.DEVELOPMENT_LINE_DEFAULT, MONITOR);
if (idTimeLine.equals(developmentLine.getId()))
break;
}

IProcessItemService service = (IProcessItemService) teamRepository.getClientLibrary(IProcessItemService.class);

IIteration newIteration = (IIteration) IIteration.ITEM_TYPE.createItem();
newIteration.setName(nombreIteracion);
newIteration.setId(nombreIteracion + new Date());

IDevelopmentLine workingDevLine = (IDevelopmentLine) developmentLine.getWorkingCopy();
workingDevLine.addIteration((IIterationHandle) newIteration.getItemHandle());

newIteration.setDevelopmentLine(workingDevLine);

service.save(new IProcessItem[] { workingDevLine, newIteration }, MONITOR);
MONITOR.subTask("[" + newIteration.getId() + "] creado");
} catch (Exception e) {
e.printStackTrace();
}
}

permanent link
Thomas Yu (45183) | answered Aug 23 '11, 9:17 p.m.
Hello

When I try to create a Team Area associated to a Project Area that I create previously with the same code, is giving me the following error

com.ibm.team.repository.common.InternalRepositoryException: CRJAZ0447I SQL statement execution failed.Integrity constraint violation
SQL: INSERT INTO PROCESS.PROCESS_AREA (STATE_ID, ITEM_ID, CONTEXT_ID, MODIFIED, MODIFIED_BY_ITEM_ID, ARCHIVED, NAME, UNIQUE_NAME, PROJECT_AREA_ITEM_ID, PROJECT_AREA_PROCSS_DFNTN_TM_D, PROJECT_AREA_IS_INITIALIZED, PROJECT_AREA_INTERNAL_PUBLIC, PROJECT_AREA_RED_CCSS_LST_TM_D, PRJCT_R_NTRNLPRJCTDVLPMNTLNTMD, PROJECT_AREA_OWNING_APPLICTN_K, PRJCT_R_NTRNL_PRCSS_PRVDR_TM_D, PROJECT_AR_NTRNL_S_PRCSS_PRVDR, JZ_DISCRIMINATOR) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 7)
SQL Exception #1
SQL Message: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'PROCESS_AREA_PK6' defined on 'PROCESS_AREA'.
SQL State: 23505
Error Code: 20000
Class: com.ibm.team.repository.service.internal.dataaccess.write2.Row
Item Handle: com.ibm.team.process.internal.common.impl.ProjectAreaImpl@314c314c (stateId: , itemId: , origin: <unset>, immutable: true) (contextId: , modified: 2011-08-22 13:25:38.804, workingCopy: <unset>) (mergePredecessor: null, workingCopyPredecessor: <unset>, workingCopyMergePredecessor: <unset>, predecessor: null) (descSummary: PA example project based on the Scrum project template, archived: false, name: PA - 1314012315370, uniqueName: PA - 1314012315370(JTS-Sentinel-Id)) (isInitialized: false, internalPublic: false, internalVisibleToMembers: true, internalVisibleToAccessList: false, owningApplicationKey: JTS-Sentinel-Id, internalIsProcessProvider: false)

The code used to do that is the following:

IProcessDefinitionHandle processDefinitionHandle = processServerService. findProcessDefinition(SCRUM_PROCESS, null, null);
IProcessDefinition processDefinition = (IProcessDefinition) processDefinitionHandle.getFullState();

// create Project Area
IProjectArea area = (IProjectArea) IProjectArea.ITEM_TYPE.createItem();
String actualProjectName = projectName + " - "
+ System.currentTimeMillis();
area.setName(actualProjectName);
area.setProcessDefinition(processDefinition);
IDescription description = area.getDescription();
description.setSummary(projectName + " example project based on the Scrum project template");
IItemsResponse itemResponse = processServerService
.saveProcessItemWithOverride(area, false);

// create Team Area
ITeamArea teamArea = (ITeamArea) ITeamArea.ITEM_TYPE.createItem();
String actualTeamName = teamName + System.currentTimeMillis();
teamArea.setName(actualTeamName);
teamArea.addMember(getContributor());

area = (IProjectArea) area.getWorkingCopy();
teamArea.setProjectArea(area.getProjectArea());

area.getTeamAreaHierarchy().addRoot(teamArea,
area.getDevelopmentLines());
itemResponse = processServerService
.saveProcessItemsWithOverride(new IProcessItem[] { area, teamArea }, true);

itemResponse = processServerService.initializeProjectArea(area, null);

Can any giveme a clue about that?

Thanks

Amaury


Hi,

When you first saved the Project area using
IItemsResponse itemResponse = processServerService
.saveProcessItemWithOverride(area, false);

You should first get the saved project area area = (IProjectArea)itemResponse.getFirstItem(); before you use it to add team area to it

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.