GPInvocationException:ERROR_ALREADY_STOPPED
Hi Experts,
I am using SAP EP 7.0 SP05.
I have created a GP process and started it from my Web Dynpro program using GP API and could not do that. The process was having a parallel dynamic block and the actions roles at the sequential block level were not visible at parallel dynamic block or process level. I found this happens when I consolidate roles at sequential block level. I was getting "Process initiation failed: can not read the activity" exception. However, if I pass the Recipient Address parameter as simple UserID, I could execute it through both manually and using GP API. (Anyone knows why?)
The structure of the process is:
Process
|__Parallel Dynamic Block
|__Sequential block
|___Action_Send (Notification CO)
| (Parameters)
| |___Recipient Address (Tech. Name: address)
| |___surveyId (Tech Name: survryId)
| |___empId(Tech Name: empId)
|___Action_Perform (Web Dynpro CO)
(Parameters)
|___ address(Tech. Name: address)
|___surveyId (Tech Name: survryId)
|___empId(Tech Name: empId)
So, I created another process template with same structure without role consolidation at seqential block level and was successfully running it manually even passing Recipient Address parameter as actual e****. Now, when I try to initiate this process using GP API, I am getting exception "GPInvocationException:ERROR_ALREADY_STOPPED."
This I found I am getting even at the very first line of my code when I try to get the GP User context:
(IGPUserContext userContext = GPContextFactory.getContextManager().createUserContext(user);)
Now I am trying to invoke the first process, which I could initiate earlier using GP API, though with wrong input values, and that also is ending with same error.
I do not what may possibly be the reason of this error and where should I dygnose to rectify this error.
Thanks in advance,
Aditya
I am using Notification email CO and all parameters are email_address/email rather than address but I could not post it that way because forum does not allow words like email. Please read parameters in that context only.
Thanks,
Aditya
Similar Messages
-
Error in deployment of ejbmodule
Hi folks,
I'm trying to start a GP process from a CAF Application Service. I have followed the follwing tutorial <a href="http://help.sap.com/saphelp_nw2004s/helpdata/en/43/fcdf77fc6510b3e10000000a11466f/frameset.htm">Starting GP Process</a>.
Here is my Code Snipplet:
public boolean startProcess() throws com.sap.caf.rt.exception.ServiceException {
// logging
java.lang.String CAF_user = sessionContext.getCallerPrincipal().getName();
java.lang.String CAF_methodHeader = CoordinationServiceASBean.JARM_REQUEST + ":" + "startProcess()";
Object[] CAF_parameters = new Object[] {};
com.sap.caf.rt.util.CAFPublicLogger.entering(CAF_user, CoordinationServiceASBean.JARM_REQUEST, CAF_methodHeader, CoordinationServiceASBean.location, CAF_parameters);
boolean retValue;
try {
//@@custom code start - startProcess()
retValue = false;
// obtain the process template
try{
IUser user = UMFactory.getUserFactory().getUser("test");
IGPProcess process =
GPProcessFactory.getDesigntimeManager().getActiveTemplate("7F727F90E04F11DB9FA0000C2931A604",user);
IGPRuntimeManager rtm = GPProcessFactory.getRuntimeManager();
IGPProcessRoleInstanceList roles = rtm.createProcesRoleInstanceList();
int rolenum = process.getRoleInfoCount();
for (int i = 0;i< rolenum; i++){
IGPProcessRoleInstance roleInstance = roles.createProcessRoleInstance(process.getRoleInfo(i).getRoleName());
roleInstance.addUser(user);
roles.addProcessRoleInstance(roleInstance);
IGPStructure params = GPStructureFactory.getStructure(process.getInputParameters());
String hi = "hi";
rtm.startProcess(process,"test","testdesc",user,roles,params,user);
retValue = true;
}catch(UMException ue){
}catch(GPInvocationException e){
}catch(GPEngineException e){
//@@custom code end - startProcess()
return retValue;
} finally {
com.sap.caf.rt.util.CAFPublicLogger.exiting(CAF_user, CoordinationServiceASBean.JARM_REQUEST, CAF_methodHeader, CoordinationServiceASBean.location, CAF_parameters);
I've added the the Public Part external caf/eu/gp/api to my ejbmodule. I have also no build errors in the CAF Project, but when I try to deploy the project the deployment of the ejbmodule fails.
In my sdm logfile I can see the following stacktrace:
ERROR: Not updated. Deploy Service returned ERROR:
java.rmi.RemoteException: Cannot deploy application xxxx.com/hello~test..
Reason: Exception during generation of components of application xxxx.com/hello~test in container EJBContainer.; nested exception is:
com.sap.engine.services.deploy.exceptions.ServerDeploymentException: Exception during generation of components of application xxxx.com/hello~test in container EJBContainer.
at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:681)
at com.sap.engine.services.deploy.server.DeployServiceImplp4_Skel.dispatch(DeployServiceImplp4_Skel.java:1278)
at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:320)
at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:198)
at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:129)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Caused by: com.sap.engine.services.deploy.exceptions.ServerDeploymentException: Exception during generation of components of application xxxx.com/hello~test in container EJBContainer.
at com.sap.engine.services.deploy.server.application.UpdateTransaction.makeComponents(UpdateTransaction.java:415)
at com.sap.engine.services.deploy.server.application.DeployUtilTransaction.commonBegin(DeployUtilTransaction.java:321)
at com.sap.engine.services.deploy.server.application.UpdateTransaction.begin(UpdateTransaction.java:164)
at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:292)
at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:326)
at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:3184)
at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:669)
... 10 more
Caused by: java.lang.NoClassDefFoundError: com/sap/caf/eu/gp/exception/api/GPEngineException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:1618)
at java.lang.Class.getConstructors(Class.java:865)
at com.sap.engine.services.ejb.deploy.verifier.BeanClassCheck.check(BeanClassCheck.java:33)
at com.sap.engine.services.ejb.deploy.verifier.session.SessionBeanCheck.check(SessionBeanCheck.java:51)
at com.sap.engine.services.ejb.deploy.verifier.Verifier.checkBean(Verifier.java:82)
at com.sap.engine.services.ejb.deploy.verifier.Verifier.check(Verifier.java:46)
at com.sap.engine.services.ejb.deploy.DeltaDeployAdmin.makeUpdate(DeltaDeployAdmin.java:175)
at com.sap.engine.services.ejb.EJBAdmin.makeUpdate(EJBAdmin.java:556)
at com.sap.engine.services.deploy.server.application.UpdateTransaction.makeComponents(UpdateTransaction.java:400)
... 16 more
For detailed information see the log file of the Deploy Service.
The deployment fails because of the java.lang.NoClassDefFoundError. He doesn't finds the GP Api.
I'm new to CAF and j2ee development, so can anyone say me how i can solve this error ?
Any help is appreciated.
Message was edited by:
Francesco IannazzoHi,
You need to add the GP API DCs as used DC to your development component. To get the GP APIs for local development using NWDS refer these documents:
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f7be53bb-0b01-0010-1c96-be3cb6799c1b">How to Get NW04s SP7 Guided Procedure APIs for Local Development</a>
<a href="/people/andre.truong/blog/2006/06/26/working-with-the-apis-of-caf-guided-procedures-nwdi-or-local-development">SAP Network Blog: Working with the APIs of CAF Guided Procedures: NWDI or Local Development?</a>
Thanks,
Dipankar -
How to log Exceptions raised in CAF Application Services
Hi All,
When there is an Exception rasing in CAF Application Service custom method implementation what are the steps need to follow for send that exception details to log files & where those log files will be generated i.e either in server, local system, etc.
If we use following 2 different lines please explain me where that trace is going to written:
1) System.out.println(e);
2) e.printStackTrace();
Thanks in Advance,
Uday.Hi Uday,
Try this (in my case I'm using that in Background CO that implements IGPBackgroundCallableObject ):
public static Location logger =
Location.getLocation(<yourClass>.class);
Catch block:
} catch (GPInvocationException e) {
throw new GPTechnicalCallableObjectException(
logger,
resourceAccessor,
"ERROR_PARAMETERS",
e);
} catch (GPEngineException e) {
throw new GPTechnicalCallableObjectException(
logger,
resourceAccessor,
e.getMessage(),
e);
Reward points if it's helpful. -
How To Get GP Process Parameters in a Webdynpro Application runtime
Hi ,
Iu2019 ll hope you can help me to solve my problem with GP process.
Iu2019 m trying to get GP process parameters from a Webdynpro application.
I have to get parameters during the process runtime in every step of the process using
a webdynpro application with the following code:
IGPRuntimeManager rtm = GPProcessFactory.getRuntimeManager();
try {
IGPProcessInstance processInst = rtm.getProcessInstance(processId,userContext);
IGPProcessInstanceInfo procInfo = rtm.getProcessInstanceInformation(processInst.getID(),
userContext.getSAPUser());
IGPStructureInfo inputstructInfo = processInst.getTemplate().getInputParameters();
IGPStructure inputparams = GPStructureFactory.getStructure(inputstructInfo);
} catch (GPEngineException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
manager.reportException("GPEngineException:"+getStackTrace(e), false);
} catch (GPInvocationException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
manager.reportException("GPInvocationException:"+getStackTrace(e), false);
But printing the values of attributes with u201Cinputparams.getAttributeAs... ("param name")u201C the value returned is always 0. On the contrary if I check the same parameters structure in the runtime
GP view of the portal, the values are those that I have set in the start process wizard.
Have you a solution for this question?
Thanks in advance
Lucahi Abhimanyu
I believe originally access to session was deliberately not made available inside WDA.
Growing security concerns due to misuse of session information and
perhaps other reasons as well.
X.509 is considered a better approach.
This may not help you in your problem.
But you may see a trend in WDA pushing more robust and client independent
approaches.
Full x.509 access should remove the need for session fiddling.
Also when developers access such session info directly, there is a possiblity
when they dont understand the technology exactly that they create a security hole.
You may know how to do safely, it is however discouraged.
Im not aware of a way to get at the session info inside the WDA framework.
Well not without a mod to the framework.
It may be possible without a mod, but I dont know the trick.
If someone has a little trick... please post.
You may need to use BSP, if your only solution requires access to the session info.
regards
Phil -
Error while setting input parameter for dynamic process - GP
Hi All,
I am using CAF 7.1 GP.
Here I have to start a process dynamically and it is working fine.
But, when I tried to set value for input parameter of this process by
IGPStructure params = GPStructureFactory.getStructure(process.getInputParameters());
params.setAttributeValue("Val","MyValue");
( <b>Val</b> is the name of grouped input parameter ), it is giving
com.sap.caf.eu.gp.exception.api.GPInvocationException: Structure with name input and namespace http://wwww.sap.com/nw/eup/gp does not have an attribute with name Val and namespace null.
But no where I have mentioned http://wwww.sap.com/nw/eup/gp.
I dont have any structures in my input and output.
Here is my full code
try
IGPProcess process = null;
IUser tl_user =UMFactory.getUserFactory().getUserByLogonID("fahad");
IGPUserContext userContext = GPContextFactory.getContextManager().createUserContext(tl_user);//, user.getLocale());
process =GPProcessFactory.getDesigntimeManager().getActiveTemplate("F5D76840A56F11DC983B001966243CAD",userContext);
wdComponentAPI.getMessageManager().reportSuccess("Title of process is "+process.getTitle());
IGPRuntimeManager rtm = GPProcessFactory.getRuntimeManager();
IGPProcessRoleInstanceList roles = rtm.createProcessRoleInstanceList();
int rolenum = process.getRoleInfoCount();
wdComponentAPI.getMessageManager().reportSuccess("Number is "+rolenum);
IGPProcessRoleInstance roleInstance=null;
IUser ho_User=null;
for (int i = 0; i < rolenum; i++)
wdComponentAPI.getMessageManager().reportWarning("Role Text is "process.getRoleInfo(i).getText()" Role Name is "+process.getRoleInfo(i).getRoleName());
if(i==1)
ho_User = UMFactory.getUserFactory().getUserByLogonID("poornendu");
roleInstance = roles. createProcessRoleInstance(process.getRoleInfo(i).getRoleName());
roleInstance.addRuntimeDefinedUser(ho_User);
roles.addProcessRoleInstance(roleInstance);
if(i==2)
ho_User = UMFactory.getUserFactory().getUserByLogonID("fahad");
roleInstance = roles. createProcessRoleInstance(process.getRoleInfo(i).getRoleName());
roleInstance.addUser(ho_User);
roles.addProcessRoleInstance(roleInstance);
wdComponentAPI.getMessageManager().reportSuccess(""+process.getStructure().getItemCount());
IGPStructure params = GPStructureFactory.getStructure(process.getInputParameters());
wdComponentAPI.getMessageManager().reportSuccess("Title of process is "+process.getTitle());
<b>params.setAttributeValue("Val","MyValue");</b>
String pName=wdContext.currentContextElement().getProcessName();
IGPProcessInstance prInstance = rtm.startProcess(process,pName,"This process has been started using the GP public API",tl_user,roles,params,tl_user);
catch(Exception e)
wdComponentAPI.getMessageManager().reportException(""+e);
Can anyone help me on this.
Thanks,
Fahad HamsaHi Experts,
I solved it myself.
The problem was, I have to make the input parameter as exposed. Thats all
Anyway, thanks for the support.
Regards,
Fahad Hamsa -
Error in starting new process in GP
Hi All
I am facing a problem is starting a new GP process dynamically.
On the following step I get a GP InvocationException
IGPUserContext userContext =GPContextFactory.getContextManager()
.createUserContext(processUser);.
Message:
ERROR_ALREADY_STOPPED
com.sap.caf.eu.gp.base.exception.InvocationException: ERROR_ALREADY_STOPPED
at com.sap.caf.eu.gp.base.caching.MemoryCache.checkActive(MemoryCache.java:231)
at com.sap.caf.eu.gp.base.caching.MemoryCache.getEntry(MemoryCache.java:282)
at com.sap.caf.eu.gp.model.context.impl.UserContextFactory.getUserContext(UserContextFactory.java:195)
at com.sap.caf.eu.gp.model.context.impl.UserContextFactory.getUserContext(UserContextFactory.java:181)
at com.sap.caf.eu.gp.context.impl.GPUserContext.<init>(GPUserContext.java:85)
I tried to restart the Server, even that does not help.
Please help
Deepuhi deepu
check this
http://help.sap.com/saphelp_nw04s/helpdata/en/44/7a056cdb0b6573e10000000a11466f/frameset.htm
http://help.sap.com/saphelp_nw04s/helpdata/en/43/fcdf77fc6510b3e10000000a11466f/frameset.htm
Can't start GP process by GP API
let me know u need any further info
bvr -
Iam new to GP.I have created a Model.Now how to define the parameters in the getDescription,getComplete,execute.
Please help me in this way or anyone can explain the functions in getDescription.How to pass values.
try {
IWDTextAccessor textAccessor = wdComponentAPI.getTextAccessor(); //To retrieve Messages from Message Pool
GPWebDynproResourceAccessor resourceAccessor = new GPWebDynproResourceAccessor(textAccessor);
IGPTechnicalDescription technicalDescription = GPCallableObjectFactory.createTechnicalDescription("CO_NAME","CO_DESCRIPTION",resourceAccessor,locale);
// Pre-existing structure for output parameters
IGPStructureInfo output = technicalDescription.getOutputStructureInfo();
// Create the attributes in the output structure
IGPAttributeInfo userId = output.addAttribute("UserID", IGPAttributeInfo.BASE_STRING);
userId.setMultiplicity(IGPAttributeInfo.MULITIPLICITY_1_1);
// add result state
IGPCOResultStateInfo success = technicalDescription.addResultState("Success");
success.setDescriptionKey("Success_desc");
return technicalDescription;
} catch (GPInvocationException e) {
return null;Hi,
in getDescription you must declare the input, output and the states of the co. Smth like that:
// Description of the future callable object
IGPTechnicalDescription technicalDescription =
GPCallableObjectFactory.createTechnicalDescription(
"SelectUserCO",
"Select from available users",
resourceAccessor,
locale);
// input structure
IGPStructureInfo input =
technicalDescription.getInputStructureInfo();
IGPStructureInfo providerProfileEntryInput =
input.addStructure("user1");
providerProfileEntryInput.setMultiplicity(IGPStructureInfo.MULITIPLICITY_0_N);
providerProfileEntryInput.addAttribute("name", IGPAttributeInfo.BASE_STRING);
// structure for output parameters
IGPStructureInfo output =
technicalDescription.getOutputStructureInfo();
IGPStructureInfo providerProfileEntryOutput =
output.addStructure("User2");
providerProfileEntryOutput.setMultiplicity(IGPStructureInfo.MULITIPLICITY_0_N);
providerProfileEntryOutput.addAttribute("name", IGPAttributeInfo.BASE_STRING);
//add result state
IGPCOResultStateInfo success =
technicalDescription.addResultState("Success");
success.setDescriptionKey("Success_desc");
Then in execute you should map your input to our context. You have node elements for your structure nodes and you can add the new elements you create/map to the user.
Important are maybe:
executionContext and the wdContext variables. Declare them under (//@@begin others, //@@end provided by SAP):
//@@begin others
private IGPExecutionContext executionContext;
IWDTextAccessor textAccessor;
GPWebDynproResourceAccessor resourceAccessor;
//@@end
and then instantiation in the constructor:
this.wdThis = wdThis;
this.wdContext = wdThis.wdGetContext();
this.wdControllerAPI = wdThis.wdGetAPI();
this.wdComponentAPI = wdThis.wdGetAPI().getComponent();
this help page can help:
http://help.sap.com/saphelp_nwce10/helpdata/en/fd/afb4429027da11e10000000a155106/content.htm
best regards,
v s -
GP: can not map the parameters
Hello,
I've created a Callable Object which runs at the background. The problem is that I get the following exception if I map the parameters with another CO and restart the process.
com.sap.caf.eu.gp.exception.api.GPInvocationException: Structure with name input and namespace http://wwww.sap.com/nw/eup/gp does not have an attribute with name pfad and namespace null.
at com.sap.caf.eu.gp.structure.impl.GPStructure.throwUnknownAttribute(GPStructure.java:806)
at com.sap.caf.eu.gp.structure.impl.GPStructure.setAttributeValue(GPStructure.java:107)
at com.sap.caf.eu.gp.structure.impl.GPStructure.setAttributeValue(GPStructure.java:730)
at com.sap.caf.eu.gp.structure.impl.GPStructure.setAttributeValue(GPStructure.java:738)
at de.oscare.kmc.test.Main$UsingJSPDynPagePage.run(Main.java:75)
at de.oscare.kmc.test.Main$UsingJSPDynPagePage.doInitialization(Main.java:55)
... 35 more
The test of this object works fine and without mapping the parameter the process runs.
How can I solve this problem?
Best Regards
MarcoHello Vani.
thanks for your answer.
I've found out that the right name of the parameter is "pfad.3" and now it works fine.
Did you (or someone else) know, how this name will be created? Because my WD should work with more than one process. I mean I will keep it dynamic.
Regards
Marco -
Start GP Process using GP APIs
Hello,
I am using GP APIs to start my process programatically in webdynpro.
When I test it in Web Service navigator I get PortalRuntimeException.
The exception occurs when execute
IGPContextManager gpCtxManager = GPContextFactory.getContextManager();
I have used the following code to start the GP Process:
IGPProcessInstance procInstance;
try {
userFactory = UMFactory.getUserFactory();
IUser user = userFactory.getUserByLogonID(user);
IGPContextManager gpCtxManager = GPContextFactory.getContextManager();
IGPUserContext userContext = gpCtxManager.createUserContext(user);
IGPProcess process =
GPProcessFactory.getDesigntimeManager().getActiveTemplate(
processTemplateId, userContext);
IGPRuntimeManager rtm = GPProcessFactory.getRuntimeManager();
IGPProcessRoleInstanceList roles =
rtm.createProcessRoleInstanceList();
IGPStructure processParams =
GPStructureFactory.getStructure(process.getInputParameters());
processParams.setAttributeValue(
requestIdParam,
req_id);
IGPRuntimeManager gpRuntimeManager =
GPProcessFactory.getRuntimeManager();
procInstance =
gpRuntimeManager.startProcess(
process,
processName,
processDescr,
user,
roles,
processParams,
user
} catch (Exception e) {
return e.getMessage();
Any help would be highly appreciated..
Thanks and regards,
LyudmilaHi,
Hope this code will help you,
String ProcessID = "<Process ID>";
IUser adminUser = null;
IUser userRequesterUser = null;
try {
adminUser = UMFactory.getUserFactory().getUserByLogonID("<User Id of Process Admin>");
userRequesterUser = UMFactory.getUserFactory().getUserByLogonID(RequesterUID);
IGPUserContext userContext = GPContextFactory.getContextManager().createUserContext(adminUser);
IGPProcess process = GPProcessFactory.getDesigntimeManager().getActiveTemplate(
ProcessID, userContext);
IGPRuntimeManager rtm = GPProcessFactory.getRuntimeManager();
IGPProcessRoleInstanceList roles = rtm.createProcessRoleInstanceList();
int rolenum = process.getRoleInfoCount();
String strRoleName = "";
// iterate over the required roles
for (int i = 0; i < rolenum; i++) {
// create a new role instance by specifying the role's unique name
IGPProcessRoleInstance roleInstance = roles. createProcessRoleInstance(process.getRoleInfo(i).getRoleName());
strRoleName = process.getRoleInfo(i).getRoleName();
if(strRoleName.startsWith("role.")) {
roleInstance.addUser(adminUser);
Collection users = roleInstance.getUserAsCollection();
IUser usr = null;
Iterator ietr = users.iterator();
while(ietr.hasNext()) {
usr = (IUser)ietr.next();
roles.addProcessRoleInstance(roleInstance);
//add values to the input parameters of the process
IGPStructure params = GPStructureFactory.getStructure(process.getInputParameters());
params.setAttributeValue("<Attribute Name>",<attribute value>);
//initiate the process template by passing the process template
IGPProcessInstance prInstance = rtm.startProcess(process,"<Process Name>",
"This process has been started using the GP public API", userRequesterUser,roles,params,userRequesterUser);
} catch (GPInvocationException e12) {
// wdComponentAPI.getMessageManager().reportSuccess("Invok ERR " + e12.getMessage());
// TODO Auto-generated catch block
e12.printStackTrace();
} catch (GPEngineException e2) {
wdComponentAPI.getMessageManager().reportException("Invok ERR 2 - " + e2.getMessage(),true);
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (Exception e2) {
wdComponentAPI.getMessageManager().reportException("Invok ERR 3 - " + e2.getMessage(),true);
// TODO Auto-generated catch block
e2.printStackTrace();
Regards,
Niraj -
Start GP Process through Webdynpro using GP APIs
Hello,
I am using GP APIs to start my process programatically in webdynpro using the link :
http://help.sap.com/SAPHELP_NW70EHP1/helpdata/EN/33/198141f906040de10000000a1550b0/frameset.htm
The first screen is a Webdynpro For Java Callable Object which has a Submit button ...on the click of this button i have written the code to start the process.....the process is getting started alright which i checked in NWA -> Guided Procedures -> Process Instance...but then it does not move to the next screen.....but just stays there........the structure params i am sending as blank since my process does not expose any input parameters.(as specified in the Library)....
Any help would be highly appreciated...
Regards,
AnilHi,
Try this code:
//@@begin startProcess()
wdContext.currentContextElement().setProcessID("/Process ID of GP process/");
IUser adminUser = null;
IUser userRequesterUser = null;
try {
IWDClientUser clientUser = null;
try {
clientUser = WDClientUser.getCurrentUser();
} catch (WDUMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
IUser user = clientUser.getSAPUser();
String loginUser = user.getUniqueName();
adminUser = UMFactory.getUserFactory().getUserByLogonID(/*Owner of process */);
userRequesterUser = UMFactory.getUserFactory().getUserByLogonID(loginUser);
} catch (UMException e1) {
wdComponentAPI.getMessageManager().reportException("UME ERR " + e1.getMessage(),true);
// TODO Auto-generated catch block
e1.printStackTrace();
try {
IGPUserContext userContext = GPContextFactory.getContextManager().createUserContext(adminUser);
IGPProcess process = GPProcessFactory.getDesigntimeManager().getActiveTemplate(wdContext.currentContextElement().getProcessID(), userContext);
IGPRuntimeManager rtm = GPProcessFactory.getRuntimeManager();
IGPProcessRoleInstanceList roles = rtm.createProcessRoleInstanceList();
int rolenum = process.getRoleInfoCount();
String strRoleName = "";
IGPStructure userStruct = null;
// iterate over the required roles
for (int i = 0; i < rolenum; i++) {
// create a new role instance by specifying the role's unique name
IGPProcessRoleInstance roleInstance = roles.createProcessRoleInstance(process.getRoleInfo(i).getRoleName());
strRoleName = process.getRoleInfo(i).getRoleName();
// wdComponentAPI.getMessageManager().reportSuccess("Roles - " + process.getRoleInfo(i).getRoleName());
// add a user to the role instance
if (strRoleName.startsWith("Requester")) {
roleInstance.addUser(userRequesterUser);
} else if (strRoleName.startsWith("role.")) {
roleInstance.addUser(adminUser);
Collection users = roleInstance.getUserAsCollection();
IUser usr = null;
Iterator ietr = users.iterator();
while (ietr.hasNext()) {
usr = (IUser) ietr.next();
roles.addProcessRoleInstance(roleInstance);
//add values to the input parameters of the process
IGPStructure params = GPStructureFactory.getStructure(process.getInputParameters());
params.setAttributeValue("/*Parameter Group Name of Process /", /Value to be passed*/);
IGPProcessInstance prInstance = rtm.startProcess(process, "/Name of Process/", "This process has been started using the GP public API", userRequesterUser, roles, params, userRequesterUser);
catch (ConnectionException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (CommandException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (GPInvocationException e12) {
wdComponentAPI.getMessageManager().reportException("Invok ERR " + e12.getMessage(),true);
//TODO Auto-generated catch block
e12.printStackTrace();
} catch (GPEngineException e2) {
wdComponentAPI.getMessageManager().reportException("Invok ERR 2 " + e2.getMessage(),true);
//TODO Auto-generated catch block
e2.printStackTrace();
//@@end
Regards,
Niraj
Edited by: Niraj Kumar on Dec 4, 2009 8:32 AM -
Modify the Due Date in a GP Process
Hello everybody,
I need to modify the Due Date on a given Process. All I have is the Process ID, that i get from a Parameter in my function... I got some code form several pages in the SAP Library, but i get an error in the line:
IGPProcessInstance procesInst = rtm.getProcessInstance(proc, userContext);
In this line a GPEngineException is raised, Any help will be greatly appreciated!!!
This is the Code I have:
IUser user = null;
IGPStructure params = null;
// Get current user
try {
IWDClientUser wdUser = WDClientUser.getCurrentUser();
user = UMFactory.getUserFactory().getUserByLogonID(wdUser.getSAPUser().getName());
// obtain the Process template
IGPProcess process =
GPProcessFactory.getDesigntimeManager().getActiveTemplate(
// by specifying its ID
processId,
// and the user accessing it
user);
// obtain the Run Time Manager
IGPRuntimeManager rtm = GPProcessFactory.getRuntimeManager();
// create a new, empty role assignment list
IGPProcessRoleInstanceList roles = rtm.createProcesRoleInstanceList();
// get the number of roles required
int rolenum = process.getRoleInfoCount();
// iterate over the required roles
for (int i = 0; i < rolenum; i++) {
// add a new role assignment to the list
roles.createProcessRoleInstance(
// by specifying the role's unique name
process.getRoleInfo(i).getRoleName()).addUser(
// add the current user to every process role
user);
// Here you see how to populate parameters with data.
// This example only works, if you initiate the "Time-Off process"
// that is delivered per default with the GP Framework.
// You find it in the gallery below "Examples".
// Otherwise no parameters are initialized.
String proc = processId; // Got it as a Parameter
IGPUserContext userContext = GPContextFactory.getContextManager().createUserContext(user);
/* En Exception is Raised in this line: */
IGPProcessInstance procesInst = rtm.getProcessInstance(proc, userContext);
Iterator notifs = (Iterator) procesInst.getNotificationInstanceEnumeration();
IGPNotificationManager notifManager = GPProcessFactory.getNotificationManager();
while(notifs.hasNext())
IGPNotificationInstance notif = (IGPNotificationInstance)notifs.next();
if(notif.isDueDateNotification())
IGPDeadline deadline = GPNotificationFactory.createDeadline(
IGPDeadline.DEADLINE_ABSOLUTE_POINT,
null,
0,
(java.sql.Date.valueOf("2008-02-29")).getTime());
notifManager.updateNotification(
proc,
notif.getActivityInstanceID(),
notif.getNotificationID(),
deadline);
params = GPStructureFactory.getStructure(process.getInputParameters());
if (process.getTitle().equals("Time-Off Process")){
IGPStructure struc = params.addStructure("Time_off_data.1");
struc.setAttributeValue("AbsenceTypeText", "Vacation");
struc.setAttributeValue("SimulationCode", 0);
struc.setAttributeValue("CompletionCode", 0);
struc.setAttributeValue("PaidFlag", true);
params.setAttributeValue("data", java.sql.Date.valueOf("2008-02-28"));
// initiate the process template by passing the Process template
rtm.startProcess(process,
// a name,
"Process started by API ",
// a description,
"This process has been started by an API",
// the initiating user
user,
// the role assignment,
roles,
// the initial parameters
params,
// and the user actually executing this action
user);
} catch (WDUMException ex) {
logger.traceThrowableT(Severity.ERROR,
"Current user could not be resolved: ", ex);
} catch (GPInvocationException ex) {
logger.traceThrowableT(Severity.ERROR,
"Exception raised when trying to start process: ", ex);
} catch (GPEngineException ex) {
logger.traceThrowableT(Severity.ERROR, "Exception raised when trying to start process: ", ex);
catch (UMException ex) {
logger.traceThrowableT(Severity.ERROR,
"Exception raised when trying to start process: ", ex);
Edited by: Francisco Perez on Mar 10, 2008 3:41 PMHello All,
You can change the deadline of a Due date notification of an process as given below:
IGPRuntimeManager rtManager = GPProcessFactory.getRuntimeManager();
String process = executionContext.getProcessId();
IUser admin = UMFactory.getUserFactory().getUserByUniqueName("administrator");
IGPUserContext userContext = GPContextFactory.getContextManager().createUserContext(admin);
IGPProcessInstance procesInst = rtManager.getProcessInstance(process,userContext);
Iterator notifs = (Iterator) procesInst.getNotificationInstanceEnumeration();
while(notifs.hasNext())
IGPNotificationInstance notif = (IGPNotificationInstance)notifs.next();
if(notif.isDueDateNotification())
IGPDeadline deadline = GPNotificationFactory.createDeadline( IGPDeadline.DEADLINE_ABSOLUTE_POINT,null,0,(new Date(108,2,1)).getTime());
notifManager.updateNotification(process,notif.getActivityInstanceID(),notif.getNotificationID(),deadline); -
Can't start GP process by GP API
When I start GP process using GP API, it report the following exception:
ERROR_ALREADY_STOPPED
com.sap.caf.eu.gp.base.exception.InvocationException: ERROR_ALREADY_STOPPED
at com.sap.caf.eu.gp.base.caching.MemoryCache.checkActive(MemoryCache.java:230)
at com.sap.caf.eu.gp.base.caching.MemoryCache.getEntry(MemoryCache.java:281)
at com.sap.caf.eu.gp.model.context.impl.UserContextFactory.getUserContext(UserContextFactory.java:195)
at com.sap.caf.eu.gp.model.context.impl.UserContextFactory.getUserContext(UserContextFactory.java:181)
at com.sap.caf.eu.gp.context.impl.GPUserContext.<init>(GPUserContext.java:89)
at com.sap.caf.eu.gp.context.impl.GPContextManager.createUserContext(GPContextManager.java:90)
at com.sinopec.mdmgp.util.workflow.MDMGPWorkflowUtil.startGPProcess(MDMGPWorkflowUtil.java:170)
at com.sinopec.mdmgp.util.workflow.MDMGPWorkflowUtil.startProcess(MDMGPWorkflowUtil.java:123)
at com.sinopec.mdmgp.wd.ui.grid.GPUIGridView.handleSubmit(GPUIGridView.java:479)
at com.sinopec.mdmgp.wd.ui.grid.wdp.InternalGPUIGridView.wdInvokeEventHandler(InternalGPUIGridView.java:239)
at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
at com.sap.tc.webdynpro.progmodel.controller.Component.fireEvent(Component.java:284)
at com.sinopec.mdmgp.wd.ui.grid.wdp.InternalDCUIGridCompInterface.wdFireEventEV_SUBMIT(InternalDCUIGridCompInterface.java:188)
at com.sinopec.mdmgp.wd.ui.grid.DCUIGridCompInterface.submitGuidedPrice(DCUIGridCompInterface.java:175)
at com.sinopec.mdmgp.wd.ui.grid.wdp.InternalDCUIGridCompInterface.submitGuidedPrice(InternalDCUIGridCompInterface.java:136)
at com.sinopec.mdmgp.wd.ui.grid.wdp.InternalDCUIGridCompInterface$External.submitGuidedPrice(InternalDCUIGridCompInterface.java:258)
at com.sinopec.mdmgp.wd.pricing.frame.DCGuidedPriceModifyView.onActionSubmitConfirm(DCGuidedPriceModifyView.java:288)
at com.sinopec.mdmgp.wd.pricing.frame.wdp.InternalDCGuidedPriceModifyView.wdInvokeEventHandler(InternalDCGuidedPriceModifyView.java:240)
at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
at com.sap.tc.webdynpro.clientserver.event.CustomEventProcessor.handleServerEvent(CustomEventProcessor.java:45)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleServiceEvent(WindowPhaseModel.java:361)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:128)
at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processPhaseLoop(WebDynproWindow.java:345)
at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:152)
at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:313)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingPortal(ClientSession.java:733)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:668)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
at com.sap.tc.webdynpro.clientserver.session.core.ApplicationHandle.doProcessing(ApplicationHandle.java:73)
at com.sap.tc.webdynpro.portal.pb.impl.AbstractApplicationProxy.sendDataAndProcessActionInternal(AbstractApplicationProxy.java:860)
at com.sap.tc.webdynpro.portal.pb.impl.localwd.LocalApplicationProxy.sendDataAndProcessAction(LocalApplicationProxy.java:77)
at com.sap.portal.pb.PageBuilder.updateApplications(PageBuilder.java:1257)
at com.sap.portal.pb.PageBuilder.SendDataAndProcessAction(PageBuilder.java:325)
at com.sap.portal.pb.PageBuilder$1.doPhase(PageBuilder.java:826)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processPhaseListener(WindowPhaseModel.java:755)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doPortalDispatch(WindowPhaseModel.java:717)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:136)
at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:313)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:713)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:666)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Is there something wrong with the UserContext?Hi Osukhovsky,
Thanks for your answer.
I am sure the process template is activated, beacause I can start it in GP Runtime.
After I restart the server process, the problem is resolved. But I want to know the reason why the code dosen't work suddenly? -
How to assign Action to multiple Users dynamically in GP
Hello Experts,
I have the following scenario in GP
I have created a Web Dynro GP Callable Object and from my Web Dynpro i need to a pass a list of Users to which a particular Action needs to be assigned.
I am able to return a single value from web dynpro to gp.
Can some one help me how to return a list of users to gp.
I have done the following: In the getDescription method I have added an attribute of multiplicity 1_N:
IGPStructureInfo outputStruct = technicalDescription.getOutputStructureInfo();
IGPAttributeInfo list1 = outputStruct.addAttribute("List1", IGPAttributeInfo.BASE_STRING);
list1.setMultiplicity(IGPAttributeInfo.MULITIPLICITY_1_N);
then in the complete method I am trying to set an Arraylist to this variable:
IGPStructure output = execContext.getOutputStructure();
output.setAttributeValue("List1", userList);
Here userList is an Arraylist which contains the list of User Id's..
However I get the following exception:
com.sap.caf.eu.gp.exception.api.GPInvocationException: Multiplicity of attribute with name List1 and namespace null does not allow single values to be set/received
at com.sap.caf.eu.gp.structure.impl.GPStructure.setAttributeValue(GPStructure.java:114)
Can someone help me in knowing how I can return a list as an output parameter to GP from Web Dynpro...
Regards
SundeepHi Srinivasan,
Of course the Role is Runtime defined...
I would brief you again the mapping that I have performed in the Design time at the processlevel.
From Web Dynpro I return a List of type String and Multiplicity 1..N.
I map this List with the leaf item User Identifier contained in the User List Input parameter of the Assign User to Process Role callable object.
However since the User Identifier parameter is of cardinality 0..1 only the first value in the returned list is getting assigned to it. Thus the task is getting assigned to only one user.
Now it is not possible in Design time to Group or consolidate parameters of different types. Thus the List which is of type String cannot be mapped to User List or the User_Item contained within it which are both of type Structure and multiple cardinality.
I even created a Structure in Web Dynpro of cardinality 1..N and withing it i included a List of type String and cardinality 1..N. Now I returned this Structure from Web Dynpro and tried to map it to the User Item Structure of the Assign User to Process Role Callable object, but doint this the task did not get assigned to any user..
One question:
Don't you think that in order for the task assignment to happen using the Assign User to Process Role Callable Object the leaf item User Identifier parameter contained in the User_List input parameter of this callable object needs to be populated with the required User Id's.
But if the cardinality of this parameter is always 0..1 , is it possible to achive the assignment of an Action to multiple Users at runtime using this Callable Object?
Can you please explain the parameter mapping you followed in order to achive this...
Regards
Sundeep
I want to ensure that you remain in the top 3 contributors in this forum
I will continue to reward points for your answers
Edited by: Sundeep Sethi on Sep 4, 2008 1:47 PM -
We are getting a runtime error when a person other than the initial creator of a process tries to initiate the process. Both people have the same roles and permissions within GP.
It is fine up until the point of clicking the 'initiate' button, that is when the error happens.
Below is the stack trace of the error.
Any help would be appreciated.
Thanks,
Cindy
java.lang.NoClassDefFoundError: com/sap/caf/eu/gp/exception/api/GPInvocationException
at com.sap.caf.eu.gp.ui.rt.wdp.InternalVRuntimeMain.<init>(InternalVRuntimeMain.java:175)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
... 47 more
Detailed Exception Chain:
com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Failed to create delegate for view com.sap.caf.eu.gp.ui.rt.VRuntimeMain. (Hint: Is the corresponding DC deployed correctly? Does the DC contain the component?)
at com.sap.tc.webdynpro.progmodel.generation.ControllerHelper.createDelegate(ControllerHelper.java:110)
at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.<init>(DelegatingView.java:41)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.createUninitializedView(ViewManager.java:638)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:675)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.bindRoot(ViewManager.java:560)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.init(ViewManager.java:155)
at com.sap.tc.webdynpro.progmodel.view.InterfaceView.initController(InterfaceView.java:43)
at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:690)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.bind(ViewManager.java:536)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.makeVisible(ViewManager.java:770)
at com.sap.tc.webdynpro.progmodel.view.ViewManager.onComponentCreated(ViewManager.java:258)
at com.sap.tc.webdynpro.progmodel.components.ComponentUsage.fireComponentCreated(ComponentUsage.java:568)
at com.sap.tc.webdynpro.progmodel.components.ComponentUsage.createComponentInternal(ComponentUsage.java:168)
at com.sap.tc.webdynpro.progmodel.components.ComponentUsage.createComponent(ComponentUsage.java:134)
at com.sap.caf.eu.gp.ui.inst.VRuntime.onPlugIPFromInstantiation(VRuntime.java:145)
at com.sap.caf.eu.gp.ui.inst.wdp.InternalVRuntime.wdInvokeEventHandler(InternalVRuntime.java:130)
at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:821)
at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144)
at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:297)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:706)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:660)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:228)
at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:56)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at com.sap.tc.webdynpro.progmodel.generation.ControllerHelper.createDelegate(ControllerHelper.java:74)
... 46 more
Caused by: java.lang.NoClassDefFoundError: com/sap/caf/eu/gp/exception/api/GPInvocationException
at com.sap.caf.eu.gp.ui.rt.wdp.InternalVRuntimeMain.<init>(InternalVRuntimeMain.java:175)
... 51 moreIt was deployed. It was working fine for me, just not the other person. We finally had them log into the portal through my pc and then it worked for them. They then tried it again on their pc and it worked ok. It might have been some sort of caching issue, but they had logged off and closed their browser several times over the course of trying to get it all to work. This is one error I doubt we could ever reproduce in a fashion to be able to have it diagnosed from the back-end.
-Cindy -
CAF GP APIs - Unable to add action to a block
Hi all,
I am trying to design a CAF GP Process using the GP APIs.
For creating a block using APIs, I am taking help from this help.sap link:
[Creating Blocks|http://help.sap.com/saphelp_nw04s/helpdata/en/44/7b3690e1da6572e10000000a11466f/content.htm]
For adding an action to a block, I have to use this line of code:
b.getModifiableStructure().addItem(a);
Here b is the instance of my block and a is the instance of my action. But on deploying the application, I am getting GPInvocationException as follows:
com.sap.caf.eu.gp.exception.api.GPInvocationException:
Invalid value at com.sap.caf.eu.gp.exception.impl.ExceptionUtil.convertTo(ExceptionUtil.java:143) at com.sap.caf.eu.gp.process.impl.GPModifiableBlockStructure.createItem(GPModifiableBlockStructure.java:150)
at com.sap.caf.eu.gp.process.impl.GPModifiableBlockStructure.addItem(GPModifiableBlockStructure.java:232)
at com.wipro.gpapi.GPAPIView.createProcess(GPAPIView.java:327)
So basically, the addItem() method is not accepting a as a valid value. Has anyone worked on GP APIs and come across such an issue?
Thanks in advance.
Regards,
AnkurHi,
I suspect that the addInstance() is attempting to work. Bear in mind that the addInstance() will create a new instance of the repeating object in it's initial state. Therefore if the repeating object is set to hidden, then if new instances are created they will also be hidden.
One work around would be to set the presence of the subform to visible in Design view (Object > Field palette). Then in the Object > Binding palette set the Min count to 0. This means that when the form is rendered, the subform will not be visible. Lastly, the script in the click event of the radio button would add an instance, instead of make it visible.
Hope that helps,
Niall
Maybe you are looking for
-
Petstore cannot finish the transaction
I have setup a iplanet application server 6.5, and web server 4.1sp9, i want to test the petstore 1.1.2. i according to http://developer.iplanet.com/appserver/samples/jps1.1.2/docs/index.html install, all the thing is okay, i can install database tab
-
How to handle NavigationController and TabBarController
I need a good explanation how can I handle the UINavigationControllers and the UITabBarControllers on iOS6 with StoryBoards. 1. When I load my app (1st ViewController) I need if (FB login = success) it jumps with segues to the 2nd ViewController auto
-
Hi,I am new to webcenter, and my situation is : I develop a very simple bounded task flow(using page fragement) which just shows the employees list and emplee detail info views, nothing special and it works well in the jsf page as region, then I crea
-
Libreoffice Crashing on Save again
Several months ago I noticed that there was a bug in which Libreoffice would crash while in the "save as" dialog. I simply waited it out for a while, and then a new version of Libreoffice fixed it. In retrospect, I believe it was the same issue as de
-
'More Info' Unavailable When Using FW Drive
Hi all, i have an external Maxtor FW drive with the oxford 911 chipset. I've noticed that when i select 'more info' under the Command I (Properties) i don't get the codec and resolution info that i get with media files that are on my internal drive.