cancel
Showing results for 
Search instead for 
Did you mean: 

FPM step navigation.

Former Member
0 Kudos

Hi,

We have just begun to develop applications with the FPM and we have a serious problem. We need your help.

In a roadmap with a number of steps we are not able to change perspective (and thus move from one step to the next) launching an user event (eg SELECT).

In the onEvent () method we get the event launched but the step does not change.

Anyone knows that it can be? is very rare ...

Regards.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

That would mean your SELECT perspective is not getting created or atleast identified...

make sure that the Interface controllers of all the components that you create is connected with component controller of the same component with a data link. No need to map the context just a data link

Former Member
0 Kudos

Hi,

I have ensured that all the Interface controllers of all the components that I create are connected with component controller of the same component with a data link.

One thing I see is that changing the start navigation path setting the "SELECT" perspective as target perspective of IFPM.EVENT_START event, this second perspective is shown well.

Why are not changing perspectives when t raise an event?

The getNextPerspective() method catches the eventname well (SELECT or BACK)....but active perspective doesn't change...?

Please give me any idea....I need solve this soon.

Thanx again.

Former Member
0 Kudos

Hi,

I continue with the problem of navigation between perspectives.

Could you please give me a simple example that works for you?

I can send you also my example and you can try it and see what fails.

I'm desperate.

I will appreciate your help forever.

I need your help.

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi,

When I faced a similar problem I did following modifications (Which worked)

the id of the button and the event raised is same eg if event raised was fpm.EVENT_REVIEW then I changed button id to REVIEW (all caps similar to event name)

in helper class wrote a code something like as follows

Perspective reviewPerspective = new Perspective("REVIEW", Perspective.LAYOUT_ROW, VAC[]review);

NavigationPath npDetailConfirm = new NavigationPath(Perspective.getName(), IFPM.EVENT_REVIEW, reviewPerspective.getName());

NavigationPath[] navigationPaths = new NavigationPath[] { ...., npDetailConfirm, ....};

Former Member
0 Kudos

Hi Aishwarya,

I tried what you told me and do not work for me....I need your help.

Looking at my logs I found that the method getNextPerspective () my CC captures the event well and calculate the perspective to navigate. But after this, the onEvent () is not executed in the VAC, as if it were not to be launched the event or like the start event of fpm...

These are the event raisings in th two actions:

VAC1.- fpm.raiseEvent(IFPM.EVENT_SELECT, new VAC("sap.com/PruebaSteps", "com.ibermatica.pruebas.vc1.Vc1"));

VAC2.- fpm.raiseEvent(IFPM.EVENT_BACK, new VAC("sap.com/PruebaSteps","com.ibermatica.pruebas.vc2.Vc2"));

The ids of the buttons are "SELECT" and "BACK" respectively.

And there is part of my code for the CC:

String dcName = "sap.com/PruebaSteps";

String packageName = "com.ibermatica.pruebas.";

//VACs

VAC vac1 = new VAC(dcName, packageName + "vc1.Vc1");

VAC vac2 = new VAC(dcName, packageName + "vc2.Vc2");

//perspective composition

VAC[] startVac = new VAC[] ;

VAC[] selectVac = new VAC[] ;

//Perspectives

Perspective startPerspective = new Perspective("START", Perspective.LAYOUT_ROW, startVac);

Perspective selectPerspective = new Perspective("SELECT", Perspective.LAYOUT_ROW, selectVac);

// fill the perspectives

perspectives = new HashMap();

perspectives.put(startPerspective.getName(), startPerspective);

perspectives.put(selectPerspective.getName(), selectPerspective);

//Navigation Paths

NavigationPath start = new NavigationPath("", IFPM.EVENT_START,

startPerspective.getName());

NavigationPath toStep2 = new NavigationPath(startPerspective.getName(),

IFPM.EVENT_SELECT,

selectPerspective.getName());

NavigationPath toStep1 = new NavigationPath(selectPerspective.getName(),

IFPM.EVENT_BACK,

startPerspective.getName());

NavigationPath[] navigationPaths = new NavigationPath[]

{ start, toStep2, toStep1 };

...

Please, I need your help.

Thanks again.

Former Member
0 Kudos

Hi,

Your code seems fine, can you provide rest of the code like creation of ROP steps in loadConfiguration()

Former Member
0 Kudos

Hi Aishwarya,

There is the entire code of my Configuration Component Interface:

public void loadConfiguration( com.sap.pcuigp.xssfpm.java.IFPM fpm )

{

//@@begin loadConfiguration()

log4j.info("Inicio del Cc Prueba: loadConfiguration");

this.fpm = fpm;

String dcName = "sap.com/PruebaSteps";

String packageName = "com.ibermatica.pruebas.";

//VACs

VAC vac1 = new VAC(dcName, packageName + "vc1.Vc1");

VAC vac2 = new VAC(dcName, packageName + "vc2.Vc2");

//perspective composition

VAC[] startVac = new VAC[] {vac1};

VAC[] selectVac = new VAC[] ;

//Perspectives

Perspective startPerspective =

new Perspective("START", Perspective.LAYOUT_ROW, startVac);

Perspective selectPerspective =

new Perspective("SELECT", Perspective.LAYOUT_ROW, selectVac);

// fill the perspectives

perspectives = new HashMap();

perspectives.put(startPerspective.getName(), startPerspective);

perspectives.put(selectPerspective.getName(), selectPerspective);

//Navigation Paths

NavigationPath start =

new NavigationPath("", IFPM.EVENT_START,

startPerspective.getName());

NavigationPath toStep2 = new NavigationPath(startPerspective.getName(),

IFPM.EVENT_SELECT,

selectPerspective.getName());

NavigationPath toStep1 = new NavigationPath(selectPerspective.getName(),

IFPM.EVENT_BACK,

startPerspective.getName());

NavigationPath[] navigationPaths =

new NavigationPath[]

{start, toStep2, toStep1};

//Navigation graph

navigationGraph = new NavigationGraph(navigationPaths);

//Roadmap steps

ROPStep ropStep1 = new ROPStep(startPerspective.getName(),

"Paso 1",

null);

ROPStep ropStep2 = new ROPStep(selectPerspective.getName(),

"Paso 2",

null);

//Roadmap

ROPStep[] ropes = new ROPStep[]

{ropStep1, ropStep2};

ROPState rop1State = new ROPState

(ropes, ropStep1.getId());

ROPState rop2State = new ROPState

(ropes, ropStep2.getId());

//ROP States HashMap

ropStates = new HashMap();

ropStates.put(startPerspective.getName(),rop1State);

ropStates.put(selectPerspective.getName(),rop2State);

//@@end

}

public com.sap.pcuigp.xssutils.java.CAPState getCAPState( com.sap.pcuigp.xssfpm.java.Perspective perspective )

{

//@@begin getCAPState()

log4j.info("CcPrueba: getCAPState");

return null;

//@@end

}

public com.sap.pcuigp.xssfpm.java.Perspective getNextPerspective( com.sap.pcuigp.xssfpm.java.Perspective currentPerspective, java.lang.String eventName )

{

//@@begin getNextPerspective()

log4j.info("CcPrueba: getNextPerspective");

if(currentPerspective != null)

log4j.info("current perspective: "currentPerspective.getName()" "+currentPerspective.getEmbeddedVACs()[0].getComponentName());

log4j.info("event name: "+eventName);

String currentPerspectiveName =

(currentPerspective == null) ? "" : currentPerspective.getName();

String toPerspectiveName =

navigationGraph.getNextNode(currentPerspectiveName, eventName);

if (toPerspectiveName == null) {

fpm.getMessageManager().raiseException(

wdThis.wdGetAPI().getComponent(), null,

IMessageManager.DEFAULT_EXCEPTION,

wdThis.wdGetAPI().getComponent().getTextAccessor().getText("err_no_next_perspective"));

return null;

}

Perspective toPerspective = (Perspective) perspectives.get(toPerspectiveName);

if(toPerspective == null) {

fpm.getMessageManager().raiseException(

wdThis.wdGetAPI().getComponent(), null,

IMessageManager.DEFAULT_EXCEPTION,

"The next perspetive "" + toPerspectiveName

+ "" not defined");

return null;

}

log4j.info("To Perspective: "toPerspective.getName()" , VACs:"+toPerspective.getEmbeddedVACs()[0].getComponentName());

return toPerspective;

//@@end

}

public com.sap.pcuigp.xssfpm.java.Perspective getStartPerspective( )

{

//@@begin getStartPerspective()

log4j.info("CcPrueba: getStartPerspective");

return getNextPerspective(null, IFPM.EVENT_START);

//@@end

}

public com.sap.pcuigp.xssutils.java.ROPState getROPState( com.sap.pcuigp.xssfpm.java.Perspective perspective )

{

//@@begin getROPState()

log4j.info("CcPrueba: getROPState");

log4j.info("CcPrueba: Llega la perspectiva con estado activo: "+perspective.getName());

ROPState ropState = (ROPState) ropStates.get(perspective.getName());

log4j.info("ropState activo: "+ropState.getActiveStep());

return ropState;

//@@end

}

I hope this will help more.

Thank you very much for your effort Aishwarya.

Thanx¡¡

Edited by: Jon Elizondo on Jun 11, 2009 2:28 PM

Former Member
0 Kudos

Hi,

what is the use of following code in the load configuration



ROPState rop1State = new ROPState (ropes, ropStep1.getId()); 
ROPState rop2State = new ROPState (ropes, ropStep2.getId()); 
//ROP States 
HashMap ropStates = new HashMap(); 
ropStates.put(startPerspective.getName(),rop1State); 
ropStates.put(selectPerspective.getName(),rop2State); 

please try once by commenting this code and modifying getROPState() as follows


public com.sap.pcuigp.xssutils.java.ROPState *getROPState*( com.sap.pcuigp.xssfpm.java.Perspective perspective ) { 
//@@begin getROPState() log4j.info("CcPrueba: getROPState"); 
log4j.info("CcPrueba: Llega la perspectiva con estado activo: "+perspective.getName()); 
String activeStep;
if (perspective.getName().equals(START)) {
    activeStep = START;
}
else if (perspective.getName().equals(SELECT)) {
    activeStep = SELECT;
}
else {
    activeStep = perspective.getName();
}
log4j.info("ropState activo: "+ropState.getActiveStep()); 
return new ROPState(ropes, activeStep);
//@@end 

Former Member
0 Kudos

Hi Aishwarya,

I tried this and after raising event, to getROPState(perspective) method comes the perspective value "START" and therefore activeStep has the value "START"...

I am totally desperate and I do not understand what is happening.

Thank God that you are helping me.

What could be wrong?

Thanks again.

Former Member
0 Kudos

Hi,

I gave the exact id in the view and in the event for my FPM application..........

I created a button with id as REVIEW and then called an action method which has code


fpm.raiseEvent(fpm.EVENT_REVIEW, thisVAC);

if you check EVENT_REVIEW in IFPM interface it equates to a tring review.

Former Member
0 Kudos

hi,

I develop my own CC for not using the configuration of the application of PCD.

The method getNextPerspective () of my CC give me back the next perspective to show (second one) when i raised up the event IFPM.EVENT_SELECT in a button 'next'..., is everything ok up there.

However, the perspective and the application returns to the first.

I am desperate, please help ....

Thank you

Former Member
0 Kudos

Did you create the perspetive and provided the next perspetive for on event change?

Former Member
0 Kudos

Hi,

I have even created the 'event link' with the 'target' pointing to the second perspective ... I do not understand because it does not work.

One thing, the 'event link id' and id of the event in fpm view should be equal?

There is something else I am overlooking?

Thanks and regards.

Former Member
0 Kudos

Hi,

i am working on the FPM cocepts of EP7.

create a fpm application.

Define road map steps.

define prespectives,

provide the FPP application ID as base configuration ID for your webdynpro application property.

deploy the application.

back to portal.

create FPM views for each Vc you have in your application.

create event links for each fpm views.

add the FPM views to the FPM application prespectivies.

define the navigation like next and back and exit.

it may be help ful for u. if not reply me, i will help u

Cheers,

Apparao

Former Member
0 Kudos

hi,

Yes I am also in EP7 and I followed the steps literally.

Still, I have not managed to change to second perspective.

What I've noticed is that deleting the 'event link' of the FPM application in PCD, my application in the method onEvent () captures the launched event, however if I add the 'event link' in cnfiguration the onEvent () is not called....it seems that the event has not been launched.

Any leads?

Thanks again.