Highlighted

Digital Signatures in multi step processes

MichaelDeiss

09-05-2008

I have a form with several digital signatures, so I am passing the form around using a xfaForm variable. So, after user1 fills out the form, signs it and then send it back to the process. The process creates a task for user2 with the same form. If user2 opens the task in his workspace the signature of user1 is missing. I think I have to use another variable type for the form. But what type? I have played around with the different types but it comes always to errors. What type of variable should I use for the form? Or is there any example for such a process?



I found one sample (http://www.adobe.com/devnet/livecycle/articles/preserve_dig_sig_multisteps.html) but it is for version 7.x



Thanks in advance,



Michael

Replies

Highlighted

Jasmin_Charbonn

09-05-2008

The signature is missing on step 2 because when you use a xfaForm variable for the second user it'll call the render service again and re-render the form.



If you want to preserve the signatures, you'll have to do a few things.



First, on your submit button (on the xdp), make sure you submit the whole PDF and not just the data. You need the full PDF to preserve the signatures.



Create a DocumentForm variable (Doc1) and select your xdp and use the same render service as the one you had for the xfaForm variable.



Create a second DocumentForm (Doc2) variable and leave the URL and render service blank.



Put a setValue operation between the two users and assign the content submitted from user 1 to the second variable. Something like /process_data/Doc2/object/@document = process_data/Doc1/object/@document



Use the Doc2 variable for the data mapping on the second user. Since there is no render service on that second DocumentForm variable, it won't re-render the PDF. I'll just use whatever was submitted.



Jasmin
Highlighted

MichaelDeiss

13-05-2008

Hi Jasmin!



Thanks for your hints. I've tried your solution but I have a problem:



My Process now has two variables:



Doc1 (DocumentForm) Input

Doc2 (DocumentForm)



and two operations:



1. setValue

/process_data/Doc2/object/@document =

/process_data/Doc1/object/@document



2. Assign Task

Input form variable: /process_data/Doc2

Output form data: /process_data/Doc2



If I start the process the task is created. But if I open the task in the workspace the blue circle is running endless.



In the adminui everything looks good: setValue:complete, AssignTask: running. Also the log looks fine:



2008-05-13 10:35:27,372 INFO [STDOUT] 13.05.2008 10:35:27 com.adobe.workspace.tasks.TaskItemResult initialize

INFO: *** Content type from this document service is application/vnd.adobe.xdp+xml; charset=utf-8 ***



Any idea?



Thanks again,



Michael
Highlighted

Jasmin_Charbonn

13-05-2008

It's basically saying the content type is vnd.adobe.xdp+xml which is essentially xml.



Are you sure you changed the submit button in your xdp to submit PDF and not XDP.



Jasmin
Highlighted

MichaelDeiss

13-05-2008

Your right, I have used the "Process fields" object. Now I have removed these fields and added an submit button. The process works fine now!



Thank you very much for your support!



Michael
Highlighted

Jasmin_Charbonn

13-05-2008

Just as a note. You can stil use the "Process Fields".



The visible submit button (AWS_SUBMIT) calls a hidden submit button (FSSubmit_) to do the submision. If you change the property of the FSSubmit_ button and set it to submit PDF, it'll work.



Jasmin
Highlighted

johnqdaily

16-06-2008

Jasmin,



I have followed the directions you have above but I am receiving some sort of invocation error. Here is the error:



ALC-DSC-003-000: com.adobe.idp.dsc.DSCInvocationException: Invocation error.

at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.java:210)

at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor.java:134)

at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:44)

at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor$1.doInTransaction(TransactionInterceptor.java:74)

at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.execute(EjbTransactionCMTAdapterBean.java:336)

at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.doSupports(EjbTransactionCMTAdapterBean.java:212)

at sun.reflect.GeneratedMethodAccessor259.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.jboss.invocation.Invocation.performCall(Invocation.java:345)

at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:214)

at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:149)

at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:154)

at org.jboss.webservice.server.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor.java:54)

at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)

at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:106)

at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:363)

at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:166)

at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:153)

at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)

at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)

at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)

at org.jboss.ejb.Container.invoke(Container.java:873)

at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:415)

at org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionProxy.java:88)

at $Proxy171.doSupports(Unknown Source)

at com.adobe.idp.dsc.transaction.impl.ejb.EjbTransactionProvider.execute(EjbTransactionProvider.java:104)

at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor.intercept(TransactionInterceptor.java:72)

at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:44)

at com.adobe.idp.dsc.interceptor.impl.InvalidStateInterceptor.intercept(InvalidStateInterceptor.java:37)

at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:44)

at com.adobe.idp.dsc.interceptor.impl.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:80)

at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:44)

at com.adobe.idp.dsc.engine.impl.ServiceEngineImpl.invoke(ServiceEngineImpl.java:113)

at com.adobe.idp.dsc.routing.Router.routeRequest(Router.java:95)

at com.adobe.idp.dsc.provider.impl.base.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:88)

at com.adobe.idp.dsc.provider.impl.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:210)

at com.adobe.idp.dsc.provider.impl.base.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:57)

at com.adobe.idp.dsc.clientsdk.ServiceClient.invoke(ServiceClient.java:208)

at com.adobe.workflow.engine.PEUtil.invokeAction(PEUtil.java:553)

at com.adobe.workflow.engine.ProcessEngineBMTBean.continueBranchAtAction(ProcessEngineBMTBean.java:2851)

at com.adobe.workflow.engine.ProcessEngineBMTBean.asyncInvokeProcessCommand(ProcessEngineBMTBean.java:634)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.jboss.invocation.Invocation.performCall(Invocation.java:345)

at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:214)

at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:149)

at org.jboss.webservice.server.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor.java:54)

at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)

at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:106)

at org.jboss.ejb.plugins.AbstractTxInterceptorBMT.invokeNext(AbstractTxInterceptorBMT.java:158)

at org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:62)

at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:154)

at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:153)

at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)

at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)

at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)

at org.jboss.ejb.Container.invoke(Container.java:873)

at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:415)

at org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionProxy.java:88)

at $Proxy204.asyncInvokeProcessCommand(Unknown Source)

at com.adobe.workflow.engine.ProcessCommandControllerBean.doOnMessage(ProcessCommandControllerBean.java:145)

at com.adobe.workflow.engine.ProcessCommandControllerBean.onMessage(ProcessCommandControllerBean.java:94)

at sun.reflect.GeneratedMethodAccessor516.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.jboss.invocation.Invocation.performCall(Invocation.java:345)

at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:475)

at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:149)

at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:101)

at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:106)

at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:335)

at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:166)

at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:94)

at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)

at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:389)

at org.jboss.ejb.Container.invoke(Container.java:873)

at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:1077)

at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1379)

at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256)

at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:904)

at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:160)

at org.jboss.mq.SpySession.run(SpySession.java:333)

at org.jboss.jms.asf.StdServerSession.run(StdServerSession.ja
Highlighted

johnqdaily

16-06-2008

Part 2 of error:



at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)

at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)

at java.lang.Thread.run(Thread.java:595)

Caused by: com.adobe.idp.jobmanager.common.JobManagerException: java.io.NotSerializableException: java.beans.PropertyDescriptor

at com.adobe.idp.jobmanager.service.JobManagerService.serializeObject(JobManagerService.java:191)

at com.adobe.idp.jobmanager.service.JobManagerService.createJob(JobManagerService.java:73)

at sun.reflect.GeneratedMethodAccessor594.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.java:181)

... 87 more

Caused by: java.io.NotSerializableException: java.beans.PropertyDescriptor

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)

at java.util.ArrayList.writeObject(ArrayList.java:569)

at sun.reflect.GeneratedMethodAccessor262.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)

at java.util.ArrayList.writeObject(ArrayList.java:569)

at sun.reflect.GeneratedMethodAccessor262.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)

at java.util.ArrayList.writeObject(ArrayList.java:569)

at sun.reflect.GeneratedMethodAccessor262.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)

at java.util.HashMap.writeObject(HashMap.java:1039)

at sun.reflect.GeneratedMethodAccessor84.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)

at com.adobe.idp.jobmanager.service.JobManagerService.serializeObject(JobManagerService.java:185)

... 92 more
Highlighted

johnqdaily

16-06-2008

Here is my process:



Custom render that populates the form with user login data when they open it in Workspace. I changed the submit button to Submit As: PDF, it was XML Data Package (XDP).

After the user completes the form the process uses a webservice to get the manager's id to use for routing. Then it goes to an Set Value to set the initial form, visa_application, to Doc2. Then the rest is just like Michael described in a previous posting above.



Any thoughts? I can send the lca file if need be.



Thanks,



John