[JWF]Special Buttons 执行生命周期

特殊的Button

一个特殊用途的Button同样是请求AdobeFormServer执行一个特殊的动作。

特定的Button有:

  • FSSUBMIT_
  • FSPRINT_
  • FSSIGN_[name of signature object]
  • FSVERIFY_[name of signature object]
  • FSPREVIOUS_
  • FSNEXT_
  • FSRESET_

FSSUBMIT_ button

当用户点击FSSUBMIT_按键时,Web应用程序被请求,将表单上的数据发送给Adobe Form Server,并且允许Adobe Form Server执行当前表单上的脚本,执行脚本有

  • Click event for the FSSUBMIT_ button
  • OnCalculate event for all fields
  • OnCalculate event for the page
  • OnValidate event for all fields , including checks for mandatory fields
  • OnValidate event for the page , provided that all field validations were successful
  • OnFormClosing event , provided than the validations were successful

当FSSUBMIT_ button被点击后,这个表单上的所有其它处理被终止,除非:

  • 应用程序发现有其它的动作需要提前执行
  • 有验证错误产生时

下表显示动作的执行过程

step User/Client actions (HTML) Application Actions (ASP) Adobe Form server actions (Object)
1 点击了名为FSSUBMIT_的按键   执行客户端脚本
2 浏览器向TargetURL发送HTTP Post请求    
3   创建FormServer object,调用ProcessHTTPRequest()方法,发送IIS请求(发送的内容包括客户端上的数据)  
4     打开XFT表单,如果先前已经将表单数据通过ProcessHTTPRequest方法发送给了Adobe Form Server,Adobe Form server将重新保存前面的代码数据,数据保存到模板中。
5     将新的数据填充到表单模板中,对于多页表单,Server会分清应该填充哪个表单的。
6     执行XFA模板中的点击脚本
7     运行实例表单中所有的OnCalculate()脚本
8     运行实例表单中的所有OnValidate()脚本。
每一个表单中的组件都会经过验证。Form Server不会发现一个错误后就停止,而是全部进行验证,然后将出错的组件用都显示出来。
9a 终端用户显示一个网页,网页内容有表单的全部组件内容及出错的组件列表。 判断Adobe From Server返回的FSAction代码,如果是FSValidate那么就继续执行后面的用户操作。
向客户端浏览器执行BinaryWrite,将HTML写到客户端IE中。
如果验证过程出错,显示至少一个错误,Form Server返回一个新的HTML网页,内容有:
   当前填写的数据表单
   一个框,里面记录了表单中的错误

返回FSAction代码为FSValidate
9b     如果没有错误,Adobe Form Server执行:
1.执行OnFormClosing()脚本
2.生成XML数据
3.转换数据成UTF-8格式
4.返回给调用的应用程序

返回FSAction代码为FSSubmit
10   确认Adobe Form Server返回的FSAction为FSSubmit

确认表单已经处理完了FSSIGN_BUTTON ,Server返回了XML数据

执行其它符加的处理
 
11 根据Web应用程序的类型显示相应的结果    

文章来源:http://ms.mblogger.cn/xuzhong/posts/16442.aspx
原文地址:https://www.cnblogs.com/xuzhong/p/232233.html