Technology Blog Posts by Members
cancel
Showing results forĀ 
Search instead forĀ 
Did you mean:Ā 
Former Member
0 Likes
1,906

While working for  Business Object Java SDK 4.0 , we went through couple of business scenario where we did customization on BI Launchpad and perform schedule webi reporting. There is well known API which helps to set up desired prompts and their value to schedule the same. We have upgraded the BI from BI 4.0 to BI 4.1 and the customization we performed  for setting prompt broke. BI 4.1  doesn’t support set prompt API anymore.

There is recommendation to use RESTFul API from Business Objects support team but using RESTFul API is good with others functionality except to deal with setting prompts.

We found  a different approach to set prompt value back to report engine to run report on new prompt field values.

The following method helps to set prompts:

We have single value prompt, Multi value prompt and optional prompt to deal with.

Please find the attached sample code.

what we need to do to perform the job:

1) Workspace instance

2) WorkspaceService instance

3)Parameter list to pass

with the help of it, we can retrieve Answer  prompt instance. we have to work extensively if the answer prompt become null. we have to set it up manually by checking all type of prompt field.

Answer answer = srcPrompt.getAnswerInformation().getPreviousAnswer();

//sample code

if (answer instanceof SingleValueAnswer) {

//System.out.println("SingleValueAnswer");

AnswerValue answerValue = ((SingleValueAnswer) answer).getAnswerValue();

// setting up prompt value for single value prompt

// check up for optional prompt

if(srcPrompt.isOptional() ){

if( reportExcellPrompt[j].getValue() == null  ||

" ".equalsIgnoreCase(reportExcellPrompt[j].getValue()) || "".equalsIgnoreCase(reportExcellPrompt[j].getValue()) ){

// leave those as usual, taken care by own

} else {

Field lfg = answerValue.getCaptionField();

lfg.setString(reportExcellPrompt[j].getValue());

answerValue.setCaptionField(lfg);

                                                    

}

dstValues.add(formatAnswerInfoWithoutHierarchicalConsideration(answerValue, pvl, dataType));

dstDisplayedValues.add(formatAnswerInfo(answerValue, pvl, dataType));

// System.out.println("formatAnswerInfo(answerValue) " + formatAnswerInfo(answerValue, pvl, dataType));

dstIdxs.add(formatField(answerValue.getKeyField(), pvl, dataType));

}

else {

Field lfg = answerValue.getCaptionField();

lfg.setString(reportExcellPrompt[j].getValue());

answerValue.setCaptionField(lfg);

dstValues.add(formatAnswerInfoWithoutHierarchicalConsideration(answerValue, pvl, dataType));

dstDisplayedValues.add(formatAnswerInfo(answerValue, pvl, dataType));

// System.out.println("formatAnswerInfo(answerValue) " + formatAnswerInfo(answerValue, pvl, dataType));

dstIdxs.add(formatField(answerValue.getKeyField(), pvl, dataType));

}

                                        

} else if (answer instanceof MultiValueAnswer) {

//System.out.println("MultiValueAnswer");

EList<AnswerValue> answerList = ((MultiValueAnswer) answer).getAnswerValues();

                                        

// check up for optional prompt

if(srcPrompt.isOptional() ){

// retrieving the prompt from multi value and split those into comma separetd String array []

if( reportExcellPrompt[j].getValue() == null ||

" ".equalsIgnoreCase(reportExcellPrompt[j].getValue()) ||

"".equalsIgnoreCase(reportExcellPrompt[j].getValue())){

// skipping the values as there is null values to set back to prompt

dstPrompt.setSkipped(true);

} else {

// optional prompt but values to set back to prompt from excel sheet

String  multiPromptVl = new String(reportExcellPrompt[j].getValue());

String[] prmptMultiFiledVl = new String [multiPromptVl.split(";").length];

int  h= 0;

for(String prompt : multiPromptVl.split(";")){

prmptMultiFiledVl[h] = prompt;

h++;

// building multi answer values and set it back to the list

String caption = prmptMultiFiledVl[0];

Member memberValue = createMember(caption, null, dataType, pvl);

if (memberValue != null){

((MultiValueAnswer)answer).getAnswerValues().add(createAnswerValue(srcPrompt, caption, null, dataType, pvl));

}

}

answerList = ((MultiValueAnswer) answer).getAnswerValues(); // retrieve the multi value answer from list to set

// iterate through individual prompt and set the prompt value back

for(int p =0; p < answerList.size(); p++){

AnswerValue answerValue = answerList.get(p);

// setting up prompt value for single value prompt

Field lfg = answerValue.getCaptionField();

lfg.setString(prmptMultiFiledVl[p]);

answerValue.setCaptionField(lfg);

                                                                

dstValues.add(formatAnswerInfoWithoutHierarchicalConsideration(answerValue, pvl, dataType));

dstDisplayedValues.add(formatAnswerInfo(answerValue, pvl, dataType));

//System.out.println("formatAnswerInfo(answerValue) " + formatAnswerInfo(answerValue, pvl, dataType));

dstIdxs.add(formatField(answerValue.getKeyField(), pvl, dataType));

}

}

                                              

}





2 Comments