Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Autres
Autres Vos questions sur les autres bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/06/2009, 15h54   #1
Vlad Tepesch
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 3
Points : 3
Par défaut API Content Manager 8.3 C++, création de DKDDO

Bonjour,

Avant toute chose, j'espère être dans la bonne zone concernant mon problème.

Je viens vers vous parce que je me prend la tête sur un problème avec les API IBM Content Manager 8.3 et impossible de trouver de la documentation pour la version C++ des API, j'espère que l'un d'entre vous connait un peu le sujet (J'espère parce qu'on est pas nombreux en France)

Le but rechercher est d'injecter un document au format DKDDO dans la base de données de Content. Tant que le document se limite à un ICMBASE avec des attributs, tout va bien, j'y arrive, je sais faire.

Le problème survient quand je dois injecter un document contenant un ICMBASE, un ICMNOTELOG et un ICMANNOTATION. Je pense que je ne forme pas proprement le DKDDO avant de l'insérer dans Content Manager.

Voici mon code qui me sert à l'injection :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
for(int i = 0; i < Image; i++)
	{
		pExtFile = GetMimeType(FileNames[i]);
		if(strcmp(pExtFile, "dkparts/dkannotation") == 0)
		{
			printf("ANNOTATIONS %s!\n", FileNames[i]);
			/*try
			{
				part = (DKLobICM *)dsICM->createDDO("ICMANNOTATION", DK_ICM_SEMANTIC_TYPE_ANNOTATION);
				//Est ce pertinent de mettre une mime type? Je ne pense pas !
				//part->setMimeType (GetMimeType(FileNames[i]));
				//Par contre, on doit mettre le contenu dedans
				part->setContentFromClientFile(FileNames[i]);		//Recommande par IBM
			}
			catch(DKException &exc)
			{
				ErrNonI +=1;
 
				fprintf(LogFile, "Erreur Ddo Annotation\n");
				fprintf(stderr, "Erreur Ddo Annotation\n");
				ShowErr(exc);
 
				return(ERR);
			}*/
		}
		else
		{
			if(strcmp(pExtFile,"dkparts/notelog") == 0)
			{
				try
				{
					printf("Notelog %s!\n",FileNames[i]);
					part = (DKLobICM *)dsICM->createDDO("ICMNOTELOG", DK_ICM_SEMANTIC_TYPE_NOTE);
					printf("Contenu !\n");
					part->setContentFromClientFile(FileNames[i]);	
					printf("On a réussi !\n");
				}
				catch(DKException &exc)
				{
					ErrNonI +=1;
 
					fprintf(LogFile, "Erreur Ddo Notelog\n");
					fprintf(stderr, "Erreur Ddo Notelog\n");
					ShowErr(exc);
 
					return(ERR);
				}
			}
			else
			{
				try
				{
					printf("Part %s !\n",FileNames[i]);
					part = (DKLobICM *)dsICM->createDDO("ICMBASE", DK_ICM_SEMANTIC_TYPE_BASE);
					printf("MimeType !\n");
					part->setMimeType (GetMimeType(FileNames[i]));
					printf("Contenu !\n");
					part->setContentFromClientFile(FileNames[i]);		//Recommande par IBM
					printf("On a réussi !\n");
				}
				catch(DKException &exc)
				{
					ErrNonI +=1;
 
					fprintf(LogFile, "Erreur Ddo Basique\n");
					fprintf(stderr, "Erreur Ddo Basique\n");
					ShowErr(exc);
 
					return(ERR);
				}
			}
		}
		try
			{
				dkParts->addElement((dkDataObjectBase*)(DKDDO*)part);
			}
			catch(DKException &exc)
			{
				ErrNonI +=1;
 
				fprintf(LogFile, "Erreur Part\n");
				fprintf(stderr, "Erreur Part\n");
				ShowErr(exc);
 
				return(ERR);
			}
	}
 
 
  try
  {
	printf("Le ddo est pret, on l'ajoute");
    ddo->add();
	printf("Le ddo est OK, on le sauvegarde");
    ddo->update();
  }
  catch (DKException &exc)
  {
    ErrNonI += 1;
 
    fprintf (LogFile, "Erreur Add\n");
    fprintf (stderr,  "Erreur Add\n");
    ShowErr (exc);
 
    return (ERR);
  }
Pour le moment, l'injection de l'annotation n'est pas finit donc commenté, mais même avec un simple Notelog, on part aux fraises.
Actuellement, on finit de le catch suite à l'instruction en erreur ddo->add.

Ma question est donc :
Quelqu'un a-t-il un exemple qui marche d'injection de notelog via les API, et/ou un exemple d'annotation (avec prise en compte des Annotation.ulPart, Annotation.ulPageNumber, Annotation.usX, Annotation.usY)?
Quelqu'un aurait-il réussi à dénicher la documentation C++ des API sur le site d'IBM, ou celle-ci sont perdu corps et bien?

Je vous remercie d'avance de vos suggestions.
Vlad Tepesch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2012, 11h43   #2
Vlad Tepesch
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 3
Points : 3
Je repasse sur ce sujet par hasard donc j'apporte la réponse.

La documentation C++ des api content se trouve ici => http://publib.boulder.ibm.com/infoce...2Ficmprmst.htm

Et la réponse m'est venu d'IBM :
Il est impossible d'insérer des annotations via les API en C++, cela ne marche pas, c'est tout
Vlad Tepesch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h57.


 
 
 
 
Partenaires

Hébergement Web