Esempio: programmare un report
Per programmare un report utilizzando il Software Development Kit, creare un oggetto schedule e impostare i valori appropriati per le sue proprietà. Quindi, utilizzare il metodo add(parentPath, objects,
options) per aggiungerlo all'archivio dei contenuti.
Questi esempi di codice mostrano come programmare un report. Ad esempio, alcuni gruppi dell'organizzazione potrebbero aver bisogno dei dati di un report aggiornati al minuto. Per soddisfare questa esigenza, si imposta una vista di report, si pianifica l'esecuzione del report ogni minuto e si verifica che sia stato pianificato correttamente.
Metodi
È possibile utilizzare il metodo add(parentPath,
objects, options) per pianificare un rapporto.
Per le autorizzazioni e le capacità necessarie per questo metodo, consultare il capitolo Metodi della Guida per gli sviluppatori del Software Development Kit.
Codice java
Per vedere il codice nel suo contesto, si veda il seguente esempio:
installation_location/sdk/vb/Scheduler/NewScheduler.java
I seguenti frammenti di codice Java™ dimostrano come si può programmare un report.
Passi per un programma Java
- Assicurarsi che l'account attualmente connesso abbia una credenziale e ottenere un riferimento a tale credenziale.
if (! Credentials.hasCredential(connection)) { Credentials newCred = new Credentials(); newCred.addCredential(connection); } Account logonInfo = Logon.getLogonAccount(connection); Credential credential = new Credential(); StringProp credentialPath = new StringProp(); String credentialPathString = logonInfo.getSearchPath().getValue(); credentialPathString = credentialPathString + "/credential[@name='Credential']"; credentialPath.setValue(credentialPathString); credential.setSearchPath(credentialPath); BaseClassArrayProp credentials = new BaseClassArrayProp(); credentials.setValue(new BaseClass[] {credential} ); - Impostare la data e l'ora di inizio del programma.
public DateTimeProp setScheduleStartDate(Calendar startOnDate) { DateTimeProp startDate = new DateTimeProp(); //If start date not passed set to today/now if (startOnDate != null) startDate.setValue(startOnDate); else startDate.setValue(Calendar.getInstance()); return startDate; } - Impostare la data e l'ora di fine della pianificazione.
public DateTimeProp setScheduleEndDate( Calendar endOnDate, String endOnTime) { DateTimeProp endDate = new DateTimeProp(); if (endOnTime.compareToIgnoreCase("onDate") == 0) if (endOnDate != null) { endDate.setValue(endOnDate); } else System.out.println( "Parameter endOnTime cannot be onDate if no enddate provided"); return endDate; } public NmtokenProp setScheduleEndTime(String endOnTime) { NmtokenProp endTime = new NmtokenProp(); if (endOnTime != null) { endTime.setValue(endOnTime); } else System.out.println( "Parameter endOnTime cannot be null! Options: indefinite or onDate"); return endTime; } - Assegna all'utente corrente il ruolo di proprietario.
BaseClass[] owners = new BaseClass[] { Logon.getLogonAccount(connection) }; BaseClassArrayProp ownersProp = new BaseClassArrayProp(); ownersProp.setValue(owners); - Impostare le opzioni.
OptionArrayProp roap = new OptionArrayProp(); String reportPath = report.getBaseClassObject().getSearchPath().getValue(); //Set options roap.setValue( this.setSchedulerOptions( outFormat, delivery, reportPath, printerName, saveasName, pageOrientation, paper, emails, connection)); ... RunOptionSaveAs saveAs = new RunOptionSaveAs(); MultilingualToken[] obj = new MultilingualToken[1]; //Set the name of the reportView obj[0] = new MultilingualToken(); obj[0].setLocale("en-us"); //If no name provided use default if (saveasName != null) { obj[0].setValue(saveasName); } else { obj[0].setValue("View of Report " + reportPath); } //Save the object as report view with name saveasName saveAs.setName(RunOptionEnum.saveAs); saveAs.setObjectClass(ReportSaveAsEnum.reportView); saveAs.setObjectName(obj); saveAs.setParentSearchPath(csh.getParentPath(connection, reportPath)); - Impostare le proprietà dell'oggetto
schedulee aggiungerlo al report.newSchedule.setActive(isActive); newSchedule.setCredential(credentials); newSchedule.setEndDate(this.setScheduleEndDate(endOnDate, endOnTime)); newSchedule.setEndType(this.setScheduleEndTime(endOnTime)); newSchedule.setOwner(ownersProp); newSchedule.setParameters(pv); newSchedule.setOptions(roap); newSchedule.setStartDate(this.setScheduleStartDate(startOnDate)); newSchedule.setType(howOften); // add the schedule to the report AddOptions ao = new AddOptions(); ao.setUpdateAction(UpdateActionEnum.replace); BaseClass newBc = connection.getCMService().add( new SearchPathSingleObject(reportPath), new BaseClass[] { newSchedule }, ao)[0];
Codice C#
Per vedere il codice nel suo contesto, si veda il seguente esempio:
posizione_di_installazione/sdk/csharp/Schedule/Schedule.cs
Prima di poter utilizzare questo esempio, è necessario creare un oggetto credenziale per l'account che verrà utilizzato per eseguire l'esempio. Per ulteriori informazioni sulla creazione di credenziali, consultare la Guida all'amministrazione e alla sicurezza.
I seguenti frammenti di codice C# dimostrano come si può programmare un report.
Passi per un programma C#
- Assicurarsi che l'account attualmente connesso abbia una credenziale e ottenere un riferimento a tale credenziale.
//get the credential for the schedule credential schedCred = connection.getCredential(); baseClassArrayProp credentials = new baseClassArrayProp(); credentials.value = new baseClass[] {schedCred}; newSched.credential = credentials; - Impostare le date e gli orari di inizio e fine del programma.
// set schedule time to now + 2 minutes System.DateTime startTime = new DateTime(); startTime = DateTime.Now; startTime = startTime.AddMinutes(2); dateTimeProp schedStartTime = new dateTimeProp(); schedStartTime.value = startTime; newSched.startDate = schedStartTime; // set schedule end time to now + 5 minutes System.DateTime endTime = new DateTime(); endTime = DateTime.Now; endTime = endTime.AddMinutes(5); dateTimeProp schedEndTime = new dateTimeProp(); schedEndTime.value = endTime; newSched.endDate = schedEndTime; // set the schedule end type nmtokenProp endType = new nmtokenProp(); endType.value = "onDate"; newSched.endType = endType; - Assegna all'utente corrente il ruolo di proprietario.
//set the owner baseClassArrayProp ownersProp = new baseClassArrayProp(); baseClass[] owners = new baseClass[] { SamplesConnect.getLogonAccount(connection) }; ownersProp.value = owners; newSched.owner = ownersProp; - Impostare le opzioni.
//Set the name of the reportView multilingualToken[] reportViewName = new multilingualToken[1]; reportViewName[0] = new multilingualToken(); reportViewName[0].locale = "en-us"; reportViewName[0].value = "View of Report " + reportToSchedule.baseclassobject.defaultName.value; //Save the output as report view with name saveasName runOptionSaveAs saveAs = new runOptionSaveAs(); saveAs.name = runOptionEnum.saveAs; saveAs.objectClass = reportSaveAsEnum.reportView; saveAs.objectName = reportViewName; saveAs.parentSearchPath = reportToSchedule.parentPath.value; //Turn off prompting runOptionBoolean prompt = new runOptionBoolean(); prompt.name = runOptionEnum.prompt; prompt.value = false; //set the output format runOptionStringArray format = new runOptionStringArray(); format.name = runOptionEnum.outputFormat; format.value = new string[] { "HTML" }; //put the run options where they need to go runOption[] schedRunOptArr = new runOption[3]; schedRunOptArr[0] = saveAs; schedRunOptArr[1] = prompt; schedRunOptArr[2] = format; runOptionArrayProp schedRunOptions = new runOptionArrayProp(); schedRunOptions.value = schedRunOptArr; newSched.runOptions = schedRunOptions; - Impostare le proprietà dell'oggetto
schedulee aggiungerlo al report.//mark the schedule as active booleanProp isActive = new booleanProp(); isActive.value = true; newSched.active = isActive; //Set the type of schedule cognosdotnet_10_2.nmtokenProp scheduleType = new nmtokenProp(); scheduleType.value = "daily"; newSched.type = scheduleType; //make the schedule for every x minutes nmtokenProp period = new nmtokenProp(); period.value = "minute"; newSched.dailyPeriod = period; //set that every x minutes to be every 1 minute positiveIntegerProp runFreqProp = new positiveIntegerProp(); runFreqProp.value = "1"; newSched.everyNPeriods = runFreqProp; ... searchPathSingleObject reportSearchPath = new searchPathSingleObject(); reportSearchPath.Value = ((baseClass) reportToSchedule.baseclassobject).searchPath.value; // add the schedule to the report addOptions ao = new addOptions(); ao.updateAction = updateActionEnum.replace; baseClass newBc = connection.CBICMS.add( reportSearchPath, new baseClass[] { newSched }, ao)[0];
Spiegazione
Per creare la pianificazione, si crea prima un oggetto schedule e si specificano i valori delle sue proprietà. Di seguito sono riportati alcuni esempi di proprietà che possono essere specificate:
activecredentialdailyPeriodendDateendTypeeveryNPeriodsoptionsstartDate
Per un elenco completo e una descrizione delle proprietà, vedere la descrizione della classe schedule nel capitolo sulle classi della Software Development Kit Developer Guide.
Se il report contiene richieste, è necessario specificare anche i parametri nella proprietà parameters .
Il programma in un array schedule viene passato al metodo add(parentPath,
objects, options) e il programma viene creato nell'archivio dei contenuti.
Passi da compiere per scrivere i propri programmi
- Crea un array di oggetti
schedule. - Creare un nuovo oggetto
schedule. - Creare un nuovo oggetto
addOptions. - Creare un oggetto
dateTimePropper la data e l'ora di inizio dell'oggettoschedulee impostare il suo valore sulla data e l'ora di inizio richieste. Assegnare questo oggettodateTimePropalla proprietàstartDatedel programma previsionale. - Costruire un array di oggetti
optionper l'oggettoschedule. Queste opzioni si applicano ogni volta che viene eseguito il rapporto pianificato. Assegnare questa matrice alla proprietàvaluedella proprietàoptionsdell'oggettoschedule. - Impostare i valori delle altre proprietà dell'oggetto
schedule. - Aggiungere l'oggetto
scheduleall'arrayschedule. - Impostare i valori desiderati per le proprietà dell'oggetto
addOptions. - Richiamare il metodo
add(parentPath, objects, options), passando come parametri il percorso di ricerca, l'arrayschedulee l'oggettoaddOptions.