Various scripts to help playing with a SAP Business Object system.
GetAllWebi.java
will save webi files on diskRescheduleInstance.java
will generate instances to simulate a big system
package com.gbs.tools; | |
import java.io.File; | |
import java.io.FileOutputStream; | |
import java.io.InputStream; | |
import java.util.logging.Logger; | |
import com.crystaldecisions.sdk.exception.SDKException; | |
import com.crystaldecisions.sdk.framework.CrystalEnterprise; | |
import com.crystaldecisions.sdk.framework.IEnterpriseSession; | |
import com.crystaldecisions.sdk.framework.ISessionMgr; | |
import com.crystaldecisions.sdk.occa.infostore.IFiles; | |
import com.crystaldecisions.sdk.occa.infostore.IInfoObject; | |
import com.crystaldecisions.sdk.occa.infostore.IInfoObjects; | |
import com.crystaldecisions.sdk.occa.infostore.IInfoStore; | |
import com.crystaldecisions.sdk.occa.infostore.IRemoteFile; | |
class GetAllWebi { | |
protected static Logger log = Logger.getLogger(GetAllWebi.class.getName()); | |
protected static int METHOD = 1; | |
public static void main (String[] args) throws SDKException { | |
//LogController.setupLogger(); | |
String user = args[0]; | |
String password = args[1]; | |
String cms = args[2]; | |
String path = args[3]; | |
System.out.println("Get all webis file"); | |
ISessionMgr sm = CrystalEnterprise.getSessionMgr(); | |
IEnterpriseSession enterpriseSession = sm.logon(user, password, cms, "secEnterprise"); | |
IInfoStore iStore = (IInfoStore) enterpriseSession.getService("InfoStore"); | |
IInfoObjects objs = iStore.query("SELECT * FROM CI_INFOOBJECTS, CI_APPOBJECTS, CI_SYSTEMOBJECTS WHERE SI_KIND='Webi'"); | |
for(int i=0 ; i<objs.size(); i++) { | |
try { | |
IInfoObject object = (IInfoObject) objs.get(i); | |
IRemoteFile repFile = null; | |
IFiles files = object.getFiles(); | |
for(int f=0; f<files.size(); f++) { | |
//IFile file = (IFile) object.getFiles().get(f); | |
repFile = (IRemoteFile) files.get(f); | |
if(METHOD==1) { | |
// method download | |
log.info("Save on disk "+object.getTitle() + "_" + repFile.getName() + " from repository: "+(repFile.download(path + object.getTitle() + "_" + repFile.getName().replaceAll("/", "_"))?"true":"false")); | |
} | |
else { | |
// IS method | |
InputStream is = repFile.getInputStream(); | |
FileOutputStream outputStream = new FileOutputStream(new File(path + object.getTitle() + "_" + repFile.getName())); | |
int read = 0; | |
byte[] bytes = new byte[1024]; | |
while ((read = is.read(bytes)) != -1) { | |
outputStream.write(bytes, 0, read); | |
} | |
} | |
repFile.commit(); | |
} | |
} | |
catch (Exception e) | |
{ | |
System.out.println(" Doc error: " + e); | |
e.printStackTrace(); | |
//System.exit(-1); | |
} | |
} | |
} | |
} |
package com.gbs.test; | |
import java.util.Iterator; | |
import com.businessobjects.rebean.wi.model.engine.IDocumentInstance; | |
import com.businessobjects.rebean.wi.model.inputform.IInputForm; | |
import com.businessobjects.rebean.wi.model.inputform.IInputForms; | |
import com.businessobjects.rebean.wi.model.reportspec.IRSReport; | |
import com.businessobjects.rebean.wi.model.reportspec.IRSReportStructure; | |
import com.businessobjects.rebean.wi.services.IDocumentInstanceManagementService; | |
import com.businessobjects.rebean.wi.services.IInputFormService; | |
import com.businessobjects.rebean.wi.services.IReportSpecService; | |
import com.businessobjects.sdk.core.Core; | |
import com.businessobjects.sdk.core.context.ContextParams; | |
import com.businessobjects.sdk.core.context.IContext; | |
import com.businessobjects.sdk.core.session.cms.CmsOccaScheme; | |
import com.businessobjects.sdk.core.session.cms.CmsScheme; | |
import com.businessobjects.sdk.core.session.scheme.IScheme; | |
import com.crystaldecisions.sdk.exception.SDKException; | |
import com.crystaldecisions.sdk.framework.CrystalEnterprise; | |
import com.crystaldecisions.sdk.framework.IEnterpriseSession; | |
import com.crystaldecisions.sdk.framework.ISessionMgr; | |
import com.crystaldecisions.sdk.occa.infostore.IInfoObjects; | |
import com.crystaldecisions.sdk.occa.infostore.IInfoStore; | |
import com.crystaldecisions.sdk.occa.infostore.ISchedulable; | |
public class RescheduleInstance { | |
public static void main(String[] args) throws SDKException { | |
int count = 17000; | |
int instanceID = 148383; | |
String documentIDs = "148323,225900,225904,225905,225906,225907,225908,225909,225910,225911,225912,225913,225914,225915,225916,225917,225918"; | |
ISessionMgr sm = (ISessionMgr) CrystalEnterprise.getSessionMgr(); | |
IEnterpriseSession enterpriseSession = sm.logon("user", "pw", "cms", "secEnterprise"); | |
IInfoStore infoStore = (IInfoStore) (enterpriseSession.getService("InfoStore")); | |
IInfoObjects instances = infoStore.query("SELECT TOP 1000000 * FROM CI_INFOOBJECTS WHERE SI_PARENTID in (" + documentIDs + ")"); | |
for(Object obj : instances) { | |
ISchedulable instance = (ISchedulable) obj; | |
System.out.println("Instance: " + obj.hashCode()); | |
for(int i = 1;i <= count; i++) { | |
instance.schedule(); | |
System.out.println(i); | |
} | |
} | |
} | |
} |