收藏本站
我的资料
   
查看手机网站
OA系统选型网
采购软件系统 选型  免费咨询平台
按系统领域分
  • OA协同系统 • 移动应用
    OA协同系统
    无纸化系统
    移动OA
    协同管理
    移动应用
    移动考勤
    移动报销
    移动营销
  • HR人力资源 • 合同管理
    HR人力资源
    人事管理
    薪酬管理
    考勤管理
    招聘培训管理
    合同管理
    合同管理
  • CRM客户管理 • 项目管理
    CRM客户管理
    客户管理
    销售管理
    在线CRM
    项目管理
    项目管理
  • ERP系统 • 财务系统
    ERP系统
    生产制造ERP
    商贸ERP
    云ERP
    通用ERP
    财务系统
    资金管理
    财务管理
    报表管理
    财税一体化
  • 网站开发• 网络推广
    网站设计开发
    网站建设
    定制开发
    小程序
    网络推广
    SEO优化推广
    万词霸屏推广
    大搜竞价推广
  • 进销存 • 订货商城系统
    进销存管理
    库存管理
    采购管理
    存货核算
    在线进销存
    订货系统
    分销商城
    订货商城
    微信三级分销
  • 文档管理 • 流程管理
    文档管理
    文档查询
    文档存储管理
    文档安全管理
    流程管理
    流程管理
  • 预算管理 • 资产管理
    预算管理
    费用预算
    全面预算
    资产管理
    固定资产
    资产使用管理
  • 系统集成 • 生产制造• 其它
    系统集成
    安防监控
    远程管理
    生产制造
    生产管理
    设备管理
    产能管理
    生产计划
    其他
    硬件设备
    400号码
    教育系统
    其它

OA工作流程webservices文档(最新)

 二维码 841
发表时间:2020-07-02 15:59网址:http://www.gxskm.com


OA流程接口使用说明


检查部署发布接口

一、检查配置web.xml

1、用文本编辑器打开文件\ecology\WEB-INF\web.xml

2、检查系统web.xml中是否有XFireServlet的配置,如果没有需要增加servlet部署(参考系统中已有很多servlet部署),加入配置,重启resion   


<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <display-name>XFire Servlet</display-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>


注意:不要添加在注释中(即以“<!—”开始至“-->”结束为注释)!


二、检查配置services.xml

1、用文本编辑器打开文件\ecology\classbean\META-INF\xfire\services.xml

2、检查是否有如下内容,没有,请加上


   <service>
    <name>WorkflowService</name>
    <namespace>webservices.services.weaver.com.cn</namespace>
    <serviceClass>weaver.workflow.webservices.WorkflowService</serviceClass>
    <implementationClass>weaver.workflow.webservices.WorkflowServiceImpl</implementationClass>
    <serviceFactory>org.codehaus.xfire.annotations.AnnotationServiceFactory</serviceFactory>
   </service>


三、检查webservice是否成功部署

      1、访问webservice发布地

      2、项目启动后访问webservice地址:http://oa地址:端口号/services/

        出现如下图


四、查看wsdl

       点击WorkflowService[wsdl]出现下图,则webservice已部署成功。将地址上的wsdl地   

     址提供给调用接口的技术。




流程接口方法说明

场景:

    根据客户与第三方技术在在调用系统流程webservices接口过程中反馈的问题与使用中的一些疑问,对流程接口做一个文档介绍说明。针对常用的流程创建、流程提交、退回与流程查询进行示例说明。

一、创建工作流程


方法名
doCreateWorkflowRequest
方法定义
/**
    * 执行创建流程
    *
    * @param WorkflowRequestInfo 流程信息
    * @param userid 当前用户
    * @return String 返回结果
    */
public java.lang.String doCreateWorkflowRequest(WorkflowRequestInfo in0, int userid)
功能说明
创建一个工作流


参数说明

参数名
说明
userId
用户id
WorkflowRequestInfo
请求工作流信息文档下方WorkflowRequestInfo实体描述


返回值说明

返回值说明
requestid:流程请求id
报错类别:
-1:创建流程失败
-2:没有创建权限
-3:创建流程失败
-4:字段或表名不正确
-5:更新流程级别失败
-6:无法创建流程待办任务
-7:流程下一节点出错,请检查流程的配置,在OA中发起流程进行测试
-8:流程节点自动赋值操作错误
-9:附件文档未创建



二、删除工作流程


方法名
deleteRequest
方法定义
    /**
    * 删除流程
    * @param requestid 请求id
    * @param userId 用户id
    * @return 删除是否成功 true成功,false失败
    */
    public boolean deleteRequest(int requestid, int userId)
功能说明
删除工作流程


参数说明

参数名
说明
requestid
请求id
userId
用户id


返回值说明

返回值说明
true成功,false失败



三、流程转发


方法名
forwardWorkflowRequest
方法定义
/**
    * 流程转发
    *
    * @param requestid 流程请求ID
    * @param recipients 转发人
    * @param userid 当前用户
    * @param remark 签字意见
    * @param clientip 用户IP
    * @return String 转发结果
    */    public String forwardWorkflowRequest(int requestid, String recipients, String remark, int userid, String clientip);
功能说明
流程转发


参数说明

参数名
说明
requestid
流程请求ID
recipients
转发人被转发人id,多个以英文逗号拼接
userid
用户id(转发人id)
remark
签字意见
clientip
用户IP


返回值说明

返回值说明
转发结果success 成功,failed 失败,error 错误)


四、查询可用流程数量


方法名
getAllWorkflowRequestCount
方法定义
/**
    * 搜索所有可用流程数量
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return int 所有可用流程数量
    */
    public int getAllWorkflowRequestCount(int userid, String[] conditions);
功能说明
搜索所有可用流程数量


参数说明

参数名
说明
userid
当前用户
conditions
查询条件(下面统一描述)


返回值说明

返回值说明
所有可用流程数量



、查询所有流程列表


方法名
getAllWorkflowRequestList
方法定义
/**
    * 搜索所有可用流程
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param keyword 流程标题
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return WorkflowRequestInfo 所有可用流程信息
    */
    public WorkflowRequestInfo[] getAllWorkflowRequestList(int pageNo, int pageSize, int recordCount, int userid, String[]conditions)
功能说明
获取办流程数量(包含内部和外部流程)


参数说明

参数名
说明
pageNo
当前页数 从1开始
pageSize
每页记录数
recordCount
记录总数
keyword
流程标题
userid
当前用户id
conditions
查询条件(下面统一描述)


返回值说明

返回值说明
所有可用流程信息文档下方WorkflowRequestInfo实体描述



六、查询抄送流程数量


方法名
getCCWorkflowRequestCount
方法定义
/**
    * 获取抄送流程数量
    *
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return int 抄送流程数量
    */   
public int getCCWorkflowRequestCount (int userid, String[]    conditions);
功能说明
获取抄送流程数量


参数说明

参数名
说明
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
获取抄送流程数量



七、抄送流程列表查询


方法名
getCCWorkflowRequestList
方法定义
    /* 获取抄送流程列表
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return WorkflowRequestInfo 抄送流程信息
    */    public WorkflowRequestInfo[]getCCWorkflowRequestList (int pageNo, int pageSize, int recordCount, int userid, String[]conditions)
功能说明
取抄送流程列表


参数说明

参数名
说明
pageNo
当前页数
pageSize
每页记录数
recordCount
记录总数
conditions
查询条件(下面统一描述)
userid
当前用户id


返回值说明

返回值说明
所有抄送流程信息文档下方WorkflowRequestInfo实体描述



八、查询可创建流程数量


方法名
getCreateWorkflowCount
方法定义
/**
    * 取得可创建的工作流数量
    *
    * @param userid 当前用户
    * @param workflowType 工作流类型
    * @param conditions 查询条件
    * @return int 工作流数量
    */    public int getCreateWorkflowCount (int userid,int workflowType, String[] conditions);
功能说明
取得可创建的工作流数量


参数说明

参数名
说明
userid
当前用户id
workflowType
工作流类型
conditions
查询条件(下面统一描述)


返回值说明

返回值说明
可创建流程数量



九、用户可以创建的流程列表查询


方法名
getCreateWorkflowList
方法定义
/**
    * 取得可创建的工作流列表
    *
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param userid 当前用户
    * @param workflowType 工作流类型
    * @param conditions 查询条件
    * @return WorkflowBaseInfo 工作流列表
    */ public WorkflowBaseInfo[] getCreateWorkflowList(int pageNo, int pageSize, int recordCount, int userid, int workflowType, String[] conditions)
功能说明
取得可创建的工作流列表


参数说明

参数名
说明
pageNo
当前页数
pageSize
每页记录数
recordCount
记录总数
userid
当前用户id
workflowType
工作流类型
conditions
查询条件(下面统一描述)


返回值说明

返回值说明
工作流程信息文档下方WorkflowBaseInfo实体描述



十、取得创建流程的相关信息


方法名
getCreateWorkflowRequestInfo
方法定义
    /**
    * 取得创建流程的相关信息
    *
    * @param workflowId 工作流ID
    * @param userid 当前用户
    * @return WorkflowRequestInfo 流程信息
    */    public WorkflowRequestInfo    getCreateWorkflowRequestInfo(int workflowId,int userid);
功能说明
取得创建流程的信息


参数说明

参数名
说明
workflowId
工作流ID
userid
当前用户id


返回值说明

返回值说明
请求工作流程信息文档下方流程实体描述



十一、查询可创建工作流类型数量


方法名
getCreateWorkflowTypeCount
方法定义
    /**
    * 取得可创建的工作流类型数量
    *
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return int 工作流类型数量
    */
Public int getCreateWorkflowTypeCount(int userid, String[] conditions);
功能说明
取得可创建的工作流类型数量


参数说明

参数名
说明
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
可创建的工作流类型数量



十二、可创建工作流类型列表查询


方法名
getCreateWorkflowTypeList
方法定义
/**
    * 取得可创建的工作流类型列表
    *
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return WorkflowBaseInfo 工作流类型列表
    */
Public WorkflowBaseInfo[] getCreateWorkflowTypeList(int pageNo, int
pageSize,int recordCount,int userid,String[] conditions);
功能说明
取得可创建的工作流类型列表


参数说明

参数名
说明
pageNo
当前页数
pageSize
每页记录数
recordCount
记录总数
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
工作流信息文档下方WorkflowBaseInfo实体描述



十三、查询已办流程数量


方法名
getHendledWorkflowRequestCount
方法定义
/**
    * 获取已办流程数量
    *
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return int 已办流程数量
    */    public int getHendledWorkflowRequestCount (String userid, String[] conditions);
功能说明
获取已办流程数量


参数说明

参数名
说明
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
已办流程数量



十四、已办流程信息列表查询


方法名
getHendledWorkflowRequestList
方法定义
/**
    * 获取已办流程列表
    *
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return WorkflowRequestInfo 已办流程信息
    */
Public WorkflowRequestInfo[]getHendledWorkflowRequestList(int pageNo, int pageSize, int recordCount, int userid, String[] conditions);
功能说明
获取已办流程列表


参数说明

参数名
说明
pageNo
当前页数
pageSize
每页记录数
recordCount
记录总数
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
请求工作流程信息文档下方WorkflowRequestInfo实体描述



十五、请假申请单特殊处理


方法名
getLeaveDays
方法定义
/**
    * 请假申请单特殊处理
    * 根据起始日期、起始时间、结束日期、结束时间获得请假天数
    * @param fromDate
    * @param fromTime
    * @param toDate
    * @param toTime
    * @param resourceId
    * @return String 请假天数
    */
Public String getLeaveDays(String fromDate, String fromTime, String toDate, String toTime, String resourceId);
功能说明
请假申请单特殊处理


参数说明

参数名
说明
fromDate
开始日期
fromTime
开始时间
toDate
结束日期
toTime
结束时间
resourceId
人员id


返回值说明

返回值说明
请假天数



十六、获取我的请求数量


方法名
getMyWorkflowRequestCount
方法定义
/**
    * 获取我的请求数量
    *
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return int 待办流程数量
    */


Public int getMyWorkflowRequestCount(int userid, String[] conditions);
功能说明
获取我的请求数量


参数说明

参数名
说明
requestid
流程请求ID
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
我的请求数量



十七、我的请求流程信息列表查询


方法名
getMyWorkflowRequestList
方法定义
    /**
    * 获取我的请求列表
    *
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return WorkflowRequestInfo 待办流程信息
    */
Public WorkflowRequestInfo[]getMyWorkflowRequestList(int pageNo, int pageSize, int recordCount, intuserid, String[] conditions);
功能说明
获取我的请求列表


参数说明

参数名
说明
pageNo
当前页数
pageSize
每页记录数
recordCount
记录总数
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
请求流程信息文档下方WorkflowRequestInfo实体描述




十八、查询归档流程数量


方法名
getProcessedWorkflowRequestCount
方法定义
    /**
    * 获取归档流程数量
    *
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return int 归档流程数量
    */
public   int   getProcessedWorkflowRequestCount(int userid,String[] conditions);
功能说明
获取归档流程数量


参数说明

参数名
说明
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
归档流程数量




十九、归档流程列表查询


方法名
getProcessedWorkflowRequestList
方法定义
/**
    * 获取归档流程列表
    *
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return WorkflowRequestInfo 归档流程信息
    */
public WorkflowRequestInfo[]getProcessedWorkflowRequestList(int pageNo,int pageSize,int recordCount,int userid,String[] conditions);
功能说明
获取归档流程列表


参数说明

参数名
说明
pageNo
当前页数
pageSize
每页记录数
recordCount
记录总数
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
归档的流程请求信息文档下方WorkflowRequestInfo实体描述


二十、查询待办流程数量


方法名
getToDoWorkflowRequestCount
方法定义
     /**
    * 获取待办流程数量
    *
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return int 待办流程数量
    */    public int getToDoWorkflowRequestCount (int userid, String[] conditions);
功能说明
取得可创建的工作流数量(内部流程)


参数说明

参数名
说明
userid
当前用户id
conditions
查询条件(下面统一描述)




返回值说明

返回值说明
取得可创建的工作流数量(内部流程)




二十一、待办流程信息列表查询


方法名
getToDoWorkflowRequestList
方法定义
/**
    * 获取待办流程列表
    *
    * @param pageNo 当前页数
    * @param pageSize 每页记录数
    * @param recordCount 记录总数
    * @param userid 当前用户
    * @param conditions 查询条件
    * @return WorkflowRequestInfo 待办流程信息
    */
    public WorkflowRequestInfo[] getToDoWorkflowRequestList(int pageNo,int pageSize,int recordCount,int userid,String[] conditions);
功能说明
获取待办流程列表


参数说明

参数名
说明
pageNo
当前页数
pageSize
每页记录数
recordCount
记录总数
userid
当前用户id
conditions
查询条件(下面统一描述)


返回值说明

返回值说明
待办请求流程信息文档下方WorkflowRequestInfo实体描述




二十二、查询流程新标记


方法名
getWorkflowNewFlag
方法定义
**
    * 取得流程new标记
    * @param requestids
    * @param resourceid
    * @return
    */
public String[] getWorkflowNewFlag(String[] requestids,String[] resourceid);
功能说明
查询流程新标记


参数说明

参数名
说明
requestids
请求流程id
resourceid
人员id




返回值说明

返回值说明
流程新标记(0:接收到流程且未查看过,显示红色new标记;-1:查看过流程后又有新的未查看回复,显示黄色new标记;-2:已查看过流程,不显示任何new标记;




二十三、查询流程详细信息


方法名
getWorkflowRequest
方法定义
/**
    * 取得流程详细信息
    *
    * @param requestid 流程请求ID
    * @param userid 当前用户
      * @param fromrequestid 原流程id
    * @return WorkflowRequestInfo 流程信息
    */
public WorkflowRequestInfo getWorkflowRequest(int requestid,int userid,int fromrequestid);
功能说明
取得流程详细信息


参数说明

参数名
说明
requestid
请求流程id
userid
当前用户id
fromrequestid
原流程id(相关请求id,a流程挂载b流程,此种情况下传入相关流程的id即可其他情况直接传入-1即可)


返回值说明

返回值说明
流程信息文档下方WorkflowRequestInfo实体描述




二十四、流程信息分割查询


方法名
getWorkflowRequest4Split
方法定义
/**
    * 取得流程详细信息
    *
    * @param requestid 流程请求ID
    * @param userid 当前用户
    * @param fromrequestid 前流程请求ID
    * @param pagesize 签字意见的条数
    * @return WorkflowRequestInfo 流程信息
    */
public WorkflowRequestInfo getWorkflowRequest4Split(int requestid,int userid, int fromrequestid, int pagesize);
功能说明
取得流程详细信息(签字意见分页查询)


参数说明

参数名
说明
requestid
请求流程id
userid
当前用户id
fromrequestid
原流程id(相关请求id,a流程挂载b流程,此种情况下传入相关流程的id即可其他情况直接传入-1即可)


返回值说明

返回值说明
流程详细信息文档下方WorkflowRequestInfo实体描述




十二五、查询请求流程日志信息


方法名
getWorkflowRequestLogs
方法定义
/**
    * 查询请求流程日志信息
    *
    * @param workflowId 流程ID
    * @param requestId 流程请求ID
    * @param userid 用户
    * @param pagesize 分页条数
    * @param endId 结束ID
    * @return WorkflowRequestLog 流程信息
    */
public WorkflowRequestLog[] getWorkflowRequestLogs(String workflowId, String requestId,int userid,int pagesize,int endId);
功能说明
取得流程详细信息(签字意见分页查询)


参数说明

参数名
说明
workflowId
流程ID
requestId
流程请求ID
userid
当前用户id
pagesize
分页条数
endId
结束ID(流程意见最大主键id,默认显示10,获取下面10条时此时传入最大的logid)app端一般是滚动加载,所以加载意见时默认加载对应条数然后根据当前最大在获取下面的条数。比如 先获取10条,后面就传入10 ,获取的记录就是从10 到20 依次类推


返回值说明

返回值说明
流程签字意见信息(见下面Workflow_requestLog意见表结构 与 WorkflowRequestLog   实体说明




二十六、流程提交


方法名
submitWorkflowRequest
方法定义
    /**
    * 流程提交
    *
    * @param WorkflowRequestInfo 流程信息
    * @param requestid 流程请求ID
    * @param userid 当前用户
    * @param type 提交类型
    * @param remark 签字意见
    * @return String 提交结果
    */
Public String submitWorkflowRequest(WorkflowRequestInfo workflowRequestInfo, int requestid,int userid,String type, String remark);
功能说明
取得流程详细信息(签字意见分页查询)


参数说明

参数名
说明
WorkflowRequestInfo
请求流程详细信息(文档下方WorkflowRequestInfo实体描述
requestId
流程请求ID
userid
当前用户id
type
提交类型:submit 提交   reject退回
remark
签字意见


返回值说明

返回值说明
提交结果:error 请求出错 ,failed 失败,success 成功





二十七、写入流程查看日志


方法名
writeWorkflowReadFlag
方法定义
    /**
    * 写入流程查看日志
    * @param requestid
    * @param userid
    */
Public void writeWorkflowReadFlag (int requestid,int userid);
功能说明
写入流程查看日志


参数说明

参数名
说明
requestId
流程请求ID
userid
当前用户id


返回值说明

返回值说明
无返回







流程接口实体描述说明

一、WorkflowRequestInfo\工作流程请求信息类


字段名
字段类型
字段中文名称
requestId
String
请求ID
requestName
String
请求标题
requestLevel
String
请求重要级别
messageType
String
短信提醒(0不短信提醒 1在线短信提醒 2 离线短信提醒)
workflowBaseInfo
WorkflowBaseInfo
流程类型(下方WorkflowBaseInfo注解)
currentNodeName
String
当前节点名称
currentNodeId
String
当前节点Id
status
String
流程状态(oa出口名称)
creatorId
String
创建者
createTime
String
创建时间
lastOperatorName
String
最后操作者名称
lastOperateTime
String
最后操作时间
canView
boolean
是否可查看
canEdit
boolean
是否可编辑
mustInputRemark
boolean
签字意见是否必填
workflowMainTableInfo
WorkflowMainTableInfo []
主表信息
workflowDetailTableInfos
WorkflowDetailTableInfo[]
明细表信息
workflowRequestLogs
WorkflowRequestLog[]
流转日志信息
WorkflowHtmlTemplete
String[]
HTML显示模板(0,ipad/1,iphone)
WorkflowHtmlShow
String[]
解析后的HTML显示内容(0,ipad/1,iphone)
beagentid
String
被代理人
workflowPhrases
String[][]
流程短语



二、WorkflowBaseInfo\工作流信息类


字段名
字段类型
字段中文名称
workflowId
String
工作流ID
workflowName
String
工作流标题
workflowTypeId
String
工作流类型ID
workflowTypeName
String
工作流类型名称



三、WorkflowMainTableInfo\主表类


字段名
字段类型
字段中文名称
requestRecords
WorkflowRequestTableRecord[]
记录
tableDBName
String
数据库名


四、WorkflowDetailTableInfo\明细表类


字段名
字段类型
字段中文名称
tableDBName
String
数据库名
tableFieldName
String[]
字段名
tableTitle
String
标题
workflowRequestTableRecords
WorkflowRequestTableRecord[]
记录



五、WorkflowRequestTableRecord\表记录类


字段名
字段类型
字段中文名称
workflowRequestTableFields
WorkflowRequestTableField[]
记录字段
recordOrder
int
记录数



六、WorkflowRequestTableField\表记录字段类


字段名
字段类型
字段中文名称
browserurl   
String   
URL
edit         
Boolean   
是否可编辑
fieldDBType   
String   
字段数据库类型
fieldFormName
String   
表单名称
fieldHtmlType
String   
HTML类型(对应OA后台字段添加时类型如:单行文本、多行文本、浏览按钮等类型)
fieldId       
String   
字段id
fieldName     
String   
字段名称
fieldOrder   
Integer   
字段数
fieldShowName
String   
字段显示名称
fieldShowValue
String   
字段显示值
fieldType     
String   
字段类型(字段小类型字段编辑添加时对应(如:单行文本、浮点数、人力资源类型、部门、分部等))
fieldValue   
String   
字段值
filedHtmlShow
String   
HTML显示
mand         
Boolean   
 
selectnames   
String[]
选择框名称(下拉框字段显示名称所有类型)
selectvalues   
String[]
选择框值(对应下拉框对应value值)
view         
Boolean   
是否课件


七、WorkflowRequestLog\流转日志类


字段名
字段类型
字段中文名称
agentor         
String
代理人
agentorDept     
String
代理人部门
annexDocHtmls   
String
 
id               
String
代理人ID
nodeId           
String
节点
nodeName         
String
节点名称
operateDate     
String
操作日期
operateTime     
String
操作时间
operateType     
String
操作类型
operatorDept     
String
操作部门
operatorId       
String
操作者ID
operatorName     
String
操作者名称
operatorSign     
String
操作者签字意见
receivedPersons   
String
接收人
remark           
String
备注
remarkSign       
String
 
signDocHtmls     
String
 
signWorkFlowHtmls
String
 






流程接口conditions参数信息介绍


一、场景:

   流程查询条件主要是让流程列表可以进行条件搜索进行筛选过滤。主要适用于 流程待办、流   程已办、流程办结、我的请求、所有流程、流程抄送列表等所有列表与数量的接口。

二、使用方法:

   可直接通过sql 条件的方式进行传入即可。

   举例说明:

    示例1:

      搜索流程标题名称为:“请求流程-2018-04-07”的流程!

    sql示例:

       t1.requetname ='请求流程-2018-04-07'   


   示例2:

      查询流程创建人为:“1”的所有流程

   sql示例:

      t1. creater='1'

三、接口调用示例片段:

     下面黄色背景底色就是传入条件的示例。

   


      /**
     * 待办列表接口
     * 说明:待办接口与已办、办结、我的请求、所有流程等接口完全一致本次不一一列出
     *
     */
    public void getToDoWorkflowRequestList(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add(" t1.createdate>='2016-07-01' ");
                list.add(" t1. creater >='1' ");
                list.add(" t1.requetname ='请求流程-2018-04-07'");
           String[] conditions = list.toArray(new String[0]);//查询条件
           
           int userId   =1;//当前用户
           int pageNo = 1;   // 当前页数
           int pageSize =10;   //每页记录数
           int recordCount =binding.getToDoWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           
           //流程待办列表接口
          WorkflowRequestInfo[] value = binding.getToDoWorkflowRequestList(pageNo, pageSize, recordCount, userId, conditions);
          for(int i=0;i<value.length;i++){
              WorkflowRequestInfo wfinfo = value[i];
              //流程列表接口一般获取都是流程的标题 、节点、创建日期、流程类型等信息,下面举例如何获取具体的信息内容。
              String requestid = wfinfo.getRequestId();//流程请求id
              String requestname = wfinfo.getRequestName();//流程请求标题
              String createtime = wfinfo.getCreateTime();//创建日期时间
              String creatorname =wfinfo.getCreatorName();//创建人名称
              String workflowid = wfinfo.getWorkflowBaseInfo().getWorkflowId();//流程id(路径设置对应的流程id)
              String workflowname = wfinfo.getWorkflowBaseInfo().getWorkflowName();//流程名称(路径设置对应的流程名称)
              String currentnodeid = wfinfo.getCurrentNodeId();//当前节点
              String crrrentnodename =wfinfo.getCurrentNodeName();//当前节点名称
              String receivetime = wfinfo.getReceiveTime();//接受日期时间
              String requestLevel =wfinfo.getRequestLevel();//紧急程度
              String status = wfinfo.getStatus();//流程当前出口状态
              String WorkflowTypeId = wfinfo.getWorkflowBaseInfo().getWorkflowTypeId();//流程类型id
              String WorkflowTypeName =wfinfo.getWorkflowBaseInfo().getWorkflowTypeName();//流程类型名称
              System.out.println("请求id:"+requestid +"   流程标题:"+requestname +"   创建日期:"+createtime +"   创建人:"+creatorname +"   路径名称:"+workflowname +"   接受日期:"+receivetime);
          }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }




查询主要通过2个表进行关联查询

2个表名分别是:workflow_currentoperator   别名 t2   

                  workflow_requestbase   别名t1


表结构如下:


Table Name
workflow_requestbase


Table Comment
工作流请求基本信息表


Table Columns



Name
Datatype
Null Option
Comment
lastoperatortype
int
NULL
最后操作者类型
1:人力资源
2:客户
nodepasstime
float
NULL
节点超时时间(小时)
nodelefttime
float
NULL
节点处理剩余时间(小时)
lastoperatetime
char(8)
NULL
最后操作时间
creatertype
int
NULL
创建人类型
1:人力资源
2:客户
deleted
tinyint
NULL
是否删除
0:是
lastoperatedate
char(10)
NULL
最后操作日期
cptids
text
NULL
相关资产
requestlevel
int
NULL
请求级别
0:正常
1:重要
2:紧急
docids
text
NULL
相关文档
crmids
text
NULL
相关客户
prjids
text
NULL
相关项目
hrmids
text
NULL
相关人力资源
requestmark
varchar(100)
NULL
请求说明
lastnodetype
char(1)
NULL
最后操作节点类型(0创建、1审批、2、提交、3归档)
currentnodeid
int
NULL
当前节点id
currentnodetype
char(1)
NULL
当前节点类型(0保存、1审批、2、提交、3归档)
requestid
int
NOT NULL
请求id
lastnodeid
int
NULL
最后操作节点id
workflowid
int
NULL
工作流id
lastoperator
int
NULL
最后操作者id
createdate
char(10)
NULL
创建日期
creater
int
NULL
创建人
createtime
char(8)
NULL
创建时间
status
varchar(50)
NULL
请求状态
passedgroups
int
NULL
已经通过的操作者组数
requestname
varchar(100)
NULL
请求名称
totalgroups
int
NULL
总共需要的操作者组数
laststatus
VARCHAR2(60)
NULL
用于保存流程暂停、撤销时,流程status的值
currentstatus
int
NULL
保存流程暂停、撤销时流程状态。0为暂停,1为撤销
ismultiprint
Int
Null
1 已经批量打印
0或其他 未批量打印







Table Name
workflow_currentoperator


Table Comment
工作流请求节点操作人信息表


Table Columns



Name
Datatype
Null Option
Comment
requestid
int
NOT NULL
请求id
userid
int
NULL
用户id
groupid
int
NULL
赋予每个操作人的标示,但是非会签会都一样是同一个值。
workflowid
int
NULL
工作流id
workflowtype
int
NULL
工作流类型
isremark
char(1)
NULL
操作类型:
0:未操作
1:转发
2:已操作
4:归档
5:超时
8:抄送(不需提交)
9:抄送(需提交)
usertype
int
NULL
用户类型
1:人力资源
2:客户
nodeid
int
NULL
操作节点id
agentorbyagentid
int
NULL
当前记录为被代理人记录时,显示代理人的id;
当前记录为代理人记录时,显示被代理人的id;
没有代理为-1
agentortype
Char(1)
NULL
0:没有代理
1:当前记录是被代理人记录(isremak=2或=4);
2:当前记录是代理人记录(isremak
值取决于代理人是否已经操作);
showorder
int
NULL
操作人的显示顺序,从0开始
recivedate
Char(10)
NULL
接收到的日期
recivetime
Char(8)
NULL
接收到的时间
viewtype
int
NULL
查看标志
0:接收到流程且未查看过,显示红色new标记;
-1:查看过流程后又有新的未查看回复,显示黄色new标记;
-2:已查看过流程,不显示任何new标记;
iscomplete
int
NULL
标记流程是否归档
0:未归档
1:归档
islasttimes
int
NULL
0:操作人在流程中多次出现,且本条记录不是操作人最后一次操作所用的纪录;
1:操作人在流程中出现一次;或操作人在流程中多次出现,且本条记录是操作人最后一次操作所用的纪录;
id
int
NOT NULL
自增长id字段
operatedate
Char(10)
NULL
操作日期
未查看时为空;
查看后记录第一次查看时间;
操作后记录操作时间;
operatetime
Char(8)
NULL
操作时间
未查看时为空;
查看后记录第一次查看时间;
操作后记录操作时间;
groupdetailid
int
NULL
节点操作组里的操作人条件id
isreminded
Char(1)
NULL
是否已经超时提醒过
1:已经超时提醒
isprocessed
Char(1)
NULL
是否已经超时处理过
1:自动流转
2:流转到指定对象
3:超时并未启用超时处理或自动流转失败
wfreminduser
varchar(200)
Null
工作流超时提醒人
wfusertypes
varchar(100)
Null
工作流超时提醒人类型
Preisremark
Char(1)
null
改变前的isremark
isreject
Char(1)
null
是否为退回前的节点操作人(用于分叉流转日志显示)
1:是
0或其它:否
lastisremark
Char(1)
null
用于保存流程暂停、撤销时,流程操作者isremark的值










四、workflow_requestlog表结构说明:


Table Name
workflow_requestLog


Table Comment
工作流请求签字日志表


Table Columns



Name
Datatype
Null Option
Comment
remark
text
NULL
签字信息
operator
int
NULL
操作者
operatetime
char(8)
NULL
操作时间
clientip
char(15)
NULL
客户端ip
operatortype
int
NULL
操作者类型
1:人力资源
2:客户
destnodeid
int
NULL
下一节点id
workflowid
int
NULL
工作流id
requestid
int
NULL
请求id
operatedate
char(10)
NULL
操作日期
nodeid
int
NULL
操作节点id
logtype
char(1)
NULL
签字类型
0:批准
1:保存
2:提交
3:退回
4:重新打开
5:删除
6:激活
7:转发
9:批注
e:强制归档
t:抄送
s:督办
requestLogId
int
NOT NULL,默认为0
日志id
annexdocids
varchar(500)
NULL
相关附件
signdocids
varchar(500)
NULL
相关文档
signworkflowids
varchar(500)
NULL
相关流程
isMobile
Char(1)
NULL
客户端类型。Null和0及空字符串:PC版
1: Web手机版
2: iphone
3: ipad
4: Android
5: AndPad (仅限制Mobile4.0)








流程接口java客户端调用示例代码:

一、java示例说明

      1、本客户端代码是通过 axis2   工具生成,不同客户版本生成客户端代码内容不一样。     此调用dome仅供参考!


二、示例代码附件:


调用示例代码:


package clienTest;
import java.util.ArrayList;
import java.util.List;
import weaver.workflow.client2.WorkflowBaseInfo;
import weaver.workflow.client2.WorkflowDetailTableInfo;
import weaver.workflow.client2.WorkflowMainTableInfo;
import weaver.workflow.client2.WorkflowRequestInfo;
import weaver.workflow.client2.WorkflowRequestLog;
import weaver.workflow.client2.WorkflowRequestTableField;
import weaver.workflow.client2.WorkflowRequestTableRecord;
import weaver.workflow.client2.WorkflowServiceHttpBindingStub;
import weaver.workflow.client2.WorkflowServiceLocator;


public class Test {


    /**
     * 创建流程
     */
    public void   doCreateWorkflowRequest(){
        try {
            //主表单需要写入的字段个数
            WorkflowRequestTableField[] wrti = new WorkflowRequestTableField[7];
               //、必填的字段必须都要按照如下方式拼接进去 ;
               //、可编辑字段不需要都编辑进去 可选择性进行拼接 可按照实际情况进行选择;具体需要传入的填写的请按照下面进行拼接
                wrti[0]=new WorkflowRequestTableField();
                wrti[0].setFieldName("mc");//【名称】--字段数据库名称
                wrti[0].setFieldValue("精制豆磷脂");//字段值
                wrti[0].setEdit(true);//是否能编辑(对应创建节点设置的字段是否可以编辑情况)
                wrti[0].setView(true);//是否可以查看(对应创建节点设置的字段是否可以编辑情况)
                 
                wrti[1]=new WorkflowRequestTableField();
                wrti[1].setFieldName("sl");//【数 量 】 --字段数据库名称
                wrti[1].setFieldValue("1000.08");//字段值
                wrti[1].setEdit(true);//是否能编辑
                wrti[1].setView(true);//是否可以查看
               
                 
                wrti[2]=new WorkflowRequestTableField();
                wrti[2].setFieldName("clnr");//【材料内容 】
                wrti[2].setFieldValue("http://www.baidu.com/img/bd_logo1.png|http://pic4.nipic.com/20091217/3885730_124701000519_2.jpg");//字段值
                wrti[2].setFieldType("http:bd_logo1.png||3885730_124701000519_2.jpg");//http:开头代表该字段为附件字段     多附件 用 | 分隔
                wrti[2].setEdit(true);//是否能编辑
                wrti[2].setView(true);//是否可以查看
                wrti[2].setMand(true);//是否必填


               
                wrti[3]=new WorkflowRequestTableField();
                wrti[3].setFieldName("xgbm");//【接管部门】--字段数据库名称
                wrti[3].setFieldValue("2,3,11");//字段值 (2、3、11对应的部门id,浏览按钮不能直接传入中文名称,只能传入具体的id )
                wrti[3].setEdit(true);//是否能编辑
                wrti[3].setView(true);//是否可以查看
                wrti[3].setMand(true);//是否必填
               
               
                wrti[4]=new WorkflowRequestTableField();
                wrti[4].setFieldName("fzr");//【负责人】--字段数据库名称
                wrti[4].setFieldValue("1");//字段值 (1对应的人员id 浏览按钮不能直接传入中文名称,只能传入具体的id)
                wrti[4].setEdit(true);//是否能编辑
                wrti[4].setView(true);//是否可以查看
                wrti[4].setMand(true);//是否必填
               
               
               
                wrti[5] = new WorkflowRequestTableField();
                wrti[5].setFieldName("a");// 多行文本字段
                wrti[5].setFieldValue("a\nb<br>c<br>d<br>e");//字段值   
                wrti[5].setView(true);
                wrti[5].setEdit(true);
               
                wrti[6] = new WorkflowRequestTableField();
                wrti[6].setFieldName("b");//多行文本字段   高级模式
                wrti[6].setFieldValue("<p>A</p> <p>B</p> <p>C</p> <p>D</p> <p>E</p> <p>F</p> ");//字段值 (4对应的人员id 浏览按钮不能直接传入中文名称,只能传入具体的id)
                wrti[6].setView(true);
                wrti[6].setEdit(true);
               
               
            WorkflowRequestTableRecord[] wrtri = new WorkflowRequestTableRecord[1];
                 wrtri[0] = new WorkflowRequestTableRecord();
                 wrtri[0].setWorkflowRequestTableFields(wrti);   
       
            WorkflowMainTableInfo wmi = new WorkflowMainTableInfo();//将主字段放入对象
                wmi.setRequestRecords(wrtri);
           //===================主字段结束==================
               
               
           //明细字段开始
            WorkflowDetailTableInfo detail_tableinfo[] = new WorkflowDetailTableInfo[1];//两个明细表 1:明细表1, 2:明细表2
            //明细表1 start
            WorkflowRequestTableRecord[] detil_wrtri = new WorkflowRequestTableRecord[2];//明细行数,一行就填1   多行就填对应行数
            WorkflowRequestTableField[]   det_wrti = new WorkflowRequestTableField[3]; //每行明细需要写入多个字段字段
                //第一行
                det_wrti[0] = new WorkflowRequestTableField();
                det_wrti[0].setFieldName("ylmc");//【原料名称】明细字段1 -对应数据库字段名称
                det_wrti[0].setFieldValue("乙醚和乙醇");//字段值
                det_wrti[0].setView(true);
                det_wrti[0].setEdit(true);   


                det_wrti[1] = new WorkflowRequestTableField();
                det_wrti[1].setFieldName("ylsl");//【原料数量】明细字段2 -对应数据库字段名称
                det_wrti[1].setFieldValue("9800");//字段值
                det_wrti[1].setView(true);
                det_wrti[1].setEdit(true);
               
                det_wrti[2] = new WorkflowRequestTableField();
                det_wrti[2].setFieldName("fzr");//【原料数量】明细字段2 -对应数据库字段名称
                det_wrti[2].setFieldValue("4");//字段值 (4对应的人员id 浏览按钮不能直接传入中文名称,只能传入具体的id)
                det_wrti[2].setView(true);
                det_wrti[2].setEdit(true);
               


               
            detil_wrtri[0] = new WorkflowRequestTableRecord();
            detil_wrtri[0].setWorkflowRequestTableFields(det_wrti);//将第一行明细放入到字段对象数组中
           
           
            //===第二行开始==========
            det_wrti = new WorkflowRequestTableField[3];//每行明细需要写入多个字段字段
                det_wrti[0] = new WorkflowRequestTableField();
                det_wrti[0].setFieldName("ylmc");//【原料名称】明细字段1 -对应数据库字段名称
                det_wrti[0].setFieldValue("磷脂酰胆碱");//字段值
                det_wrti[0].setView(true);
                det_wrti[0].setEdit(true);   
   
                det_wrti[1] = new WorkflowRequestTableField();
                det_wrti[1].setFieldName("ylsl");//【原料数量】明细字段2 -对应数据库字段名称
                det_wrti[1].setFieldValue("1000");//字段值
                det_wrti[1].setView(true);
                det_wrti[1].setEdit(true);
               
                det_wrti[2] = new WorkflowRequestTableField();
                det_wrti[2].setFieldName("fzr");//【原料数量】明细字段2 -对应数据库字段名称
                det_wrti[2].setFieldValue("3");//字段值 (3对应的人员id 浏览按钮不能直接传入中文名称,只能传入具体的id)
                det_wrti[2].setView(true);
                det_wrti[2].setEdit(true);
           
                detil_wrtri[1] = new WorkflowRequestTableRecord();
                detil_wrtri[1].setWorkflowRequestTableFields(det_wrti);//将第二行明细放入到字段对象数组中
               
               
            detail_tableinfo[0] = new WorkflowDetailTableInfo();
            detail_tableinfo[0].setWorkflowRequestTableRecords(detil_wrtri);//将明细数据加入明细表1中


               
            WorkflowBaseInfo wbi = new WorkflowBaseInfo();
                wbi.setWorkflowId("110");//流程id   110 代表物料申请单的流程id(路径设置中可查看)
               
            WorkflowRequestInfo wri = new WorkflowRequestInfo();//流程基本信息   
                wri.setCreatorId("1");//创建人id
                wri.setIsNextFlow("0");//0标识停留创建节点,反之流转到后面节点
                wri.setRequestName("物料申请单-管理员测试——v5");//流程请求标题(流程创建时的标题内容)
                wri.setWorkflowMainTableInfo(wmi);//添加主字段数据
                wri.setWorkflowDetailTableInfos(detail_tableinfo);//添加明细数据
                wri.setWorkflowBaseInfo(wbi);
          WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
                String   requestid = binding.doCreateWorkflowRequest(wri, 1);//创建接口调用
                System.out.println("=========requestid:"+requestid);
           
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
       
    }
    /**
     * 获取流程详细信息接口
     */
    public void getWorkflowRequest(){
        try {
            WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           
            int requestid =100; //请求id
            int userId =1;//人员id
            int fromrequestid=-1;//相关请求id 无则传-1即可
            WorkflowRequestInfo wfrequestben =   binding.getWorkflowRequest(requestid, userId, fromrequestid);//获取流程详细信息即可。里面包含流程主体信息、主表单字段信息、明细字段信息、签字意见信息
            String requestname =   wfrequestben.getRequestName();
            System.out.println("===requestname:"+requestname);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * 获取流程详细信息接口
     */
    public void deleteRequest(){
        try {
            WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           
            int requestid =100; //请求id   系统执行根据此参数直接删除流程 如果参数正确直接删除,如果没有这不删除
            int userId =1;//人员id   此参数无用
            boolean falg =   binding.deleteRequest(requestid, userId);//删除流程
            System.out.println("===falg:"+falg);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * 提交流程
     */
    public void   submitWorkflowRequest(){
        try {
            //主表单需要写入的字段个数
            WorkflowRequestTableField[] wrti = new WorkflowRequestTableField[2];
               //、必填的字段必须都要按照如下方式拼接进去 ;
               //、可编辑字段不需要都编辑进去 可选择性进行拼接 可按照实际情况进行选择;具体需要传入的填写的请按照下面进行拼接
                wrti[0]=new WorkflowRequestTableField();
                wrti[0].setFieldName("mc");//【名称】--字段数据库名称
                wrti[0].setFieldValue("精制豆磷脂_更改一下");//字段值
                wrti[0].setEdit(true);//是否能编辑(对应创建节点设置的字段是否可以编辑情况)
                wrti[0].setView(true);//是否可以查看(对应创建节点设置的字段是否可以编辑情况)
                 
                wrti[1]=new WorkflowRequestTableField();
                wrti[1].setFieldName("sl");//【数 量 】 --字段数据库名称
                wrti[1].setFieldValue("8888");//字段值
                wrti[1].setEdit(true);//是否能编辑
                wrti[1].setView(true);//是否可以查看
               
            WorkflowRequestTableRecord[] wrtri = new WorkflowRequestTableRecord[1];
                 wrtri[0] = new WorkflowRequestTableRecord();
                 wrtri[0].setWorkflowRequestTableFields(wrti);   
       
            WorkflowMainTableInfo wmi = new WorkflowMainTableInfo();//将主字段放入对象
                wmi.setRequestRecords(wrtri);
           //===================主字段结束==================
       
            WorkflowBaseInfo wbi = new WorkflowBaseInfo();
                wbi.setWorkflowId("110");//流程id   110 代表物料申请单的流程id(路径设置中可查看)
               
            WorkflowRequestInfo wri = new WorkflowRequestInfo();//流程基本信息   
                wri.setCreatorId("1");//创建人id
                wri.setRequestName("物料申请单-管理员测试——v5");//流程请求标题(流程创建时的标题内容)
                wri.setRequestId("23");
                wri.setWorkflowMainTableInfo(wmi);//添加主字段数据
                wri.setWorkflowBaseInfo(wbi);
               WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
                  //wri 由于第二个节点没有编辑字段所以此处就不需要拼接 TableField 信息根据实际业务来处理,如果流程需要退回只需要将 submit 改为 reject
                 String falg= binding.submitWorkflowRequest(wri, 23, 14, "submit", "我是签字意见,此处可以编辑签字意见内容!");
                 System.out.println("=======falg:"+falg);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * 获取抄送
     * 说明:待办接口与已办、办结、我的请求、所有流程等接口完全一致
     *
     */
    public void getCCWorkflowRequestList(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           
           int userId   =1;//当前用户
           int pageNo = 1;   // 当前页数
           int pageSize =10;   //每页记录数
           int recordCount =binding.getCCWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           
           //流程待办列表接口
          WorkflowRequestInfo[] value = binding.getCCWorkflowRequestList(pageNo, pageSize, recordCount, userId, conditions);
          for(int i=0;i<value.length;i++){
              WorkflowRequestInfo wfinfo = value[i];
              //流程列表接口一般获取都是流程的标题 、节点、创建日期、流程类型等信息,下面举例如何获取具体的信息内容。
              String requestid = wfinfo.getRequestId();//流程请求id
              String requestname = wfinfo.getRequestName();//流程请求标题
              String createtime = wfinfo.getCreateTime();//创建日期时间
              String creatorname =wfinfo.getCreatorName();//创建人名称
              String workflowid = wfinfo.getWorkflowBaseInfo().getWorkflowId();//流程id(路径设置对应的流程id)
              String workflowname = wfinfo.getWorkflowBaseInfo().getWorkflowName();//流程名称(路径设置对应的流程名称)
              String currentnodeid = wfinfo.getCurrentNodeId();//当前节点
              String crrrentnodename =wfinfo.getCurrentNodeName();//当前节点名称
              String receivetime = wfinfo.getReceiveTime();//接受日期时间
              String requestLevel =wfinfo.getRequestLevel();//紧急程度
              String status = wfinfo.getStatus();//流程当前出口状态
              String WorkflowTypeId = wfinfo.getWorkflowBaseInfo().getWorkflowTypeId();//流程类型id
              String WorkflowTypeName =wfinfo.getWorkflowBaseInfo().getWorkflowTypeName();//流程类型名称
              System.out.println("请求id:"+requestid +"   流程标题:"+requestname +"   创建日期:"+createtime +"   创建人:"+creatorname +"   路径名称:"+workflowname +"   接受日期:"+receivetime);
          }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
    /**
     * 抄送数量
     *
     *
     */
    public void getCCWorkflowRequestCount(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           //说明:条件可以传入可以不传入根据实际需要来处理。上面是传入2个条件:1、查询创建日期大于2016-07-01 并且流程为 留言类型的 流程。
           int userId   =1;//当前用户
           int recordCount =binding.getCCWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           System.out.println("记录条数:"+recordCount);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   


    /**
     * 已办列表接口
     * 说明:待办接口与已办、办结、我的请求、所有流程等接口完全一致
     *
     */
    public void getHendledWorkflowRequestList(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           
           int userId   =1;//当前用户
           int pageNo = 1;   // 当前页数
           int pageSize =10;   //每页记录数
           int recordCount =binding.getHendledWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           
           //流程待办列表接口
          WorkflowRequestInfo[] value = binding.getHendledWorkflowRequestList(pageNo, pageSize, recordCount, userId, conditions);
          for(int i=0;i<value.length;i++){
              WorkflowRequestInfo wfinfo = value[i];
              //流程列表接口一般获取都是流程的标题 、节点、创建日期、流程类型等信息,下面举例如何获取具体的信息内容。
              String requestid = wfinfo.getRequestId();//流程请求id
              String requestname = wfinfo.getRequestName();//流程请求标题
              String createtime = wfinfo.getCreateTime();//创建日期时间
              String creatorname =wfinfo.getCreatorName();//创建人名称
              String workflowid = wfinfo.getWorkflowBaseInfo().getWorkflowId();//流程id(路径设置对应的流程id)
              String workflowname = wfinfo.getWorkflowBaseInfo().getWorkflowName();//流程名称(路径设置对应的流程名称)
              String currentnodeid = wfinfo.getCurrentNodeId();//当前节点
              String crrrentnodename =wfinfo.getCurrentNodeName();//当前节点名称
              String receivetime = wfinfo.getReceiveTime();//接受日期时间
              String requestLevel =wfinfo.getRequestLevel();//紧急程度
              String status = wfinfo.getStatus();//流程当前出口状态
              String WorkflowTypeId = wfinfo.getWorkflowBaseInfo().getWorkflowTypeId();//流程类型id
              String WorkflowTypeName =wfinfo.getWorkflowBaseInfo().getWorkflowTypeName();//流程类型名称
             
             
              System.out.println("请求id:"+requestid +"   流程标题:"+requestname +"   创建日期:"+createtime +"   创建人:"+creatorname +"   路径名称:"+workflowname +"   接受日期:"+receivetime);
          }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
   
   
   
    /**
     * 已办数量
     *
     *
     */
    public void getHendledWorkflowRequestCount(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           //说明:条件可以传入可以不传入根据实际需要来处理。上面是传入2个条件:1、查询创建日期大于2016-07-01 并且流程为 留言类型的 流程。
           int userId   =1;//当前用户
           int recordCount =binding.getHendledWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           System.out.println("待办记录数:"+recordCount);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
   
   
   
   
   


    /**
     * 归档列表接口
     * 说明:待办接口与已办、办结、我的请求、所有流程等接口完全一致
     *
     */
    public void getProcessedWorkflowRequestList(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           
           int userId   =1;//当前用户
           int pageNo = 1;   // 当前页数
           int pageSize =10;   //每页记录数
           int recordCount =binding.getProcessedWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           
           //流程待办列表接口
          WorkflowRequestInfo[] value = binding.getProcessedWorkflowRequestList(pageNo, pageSize, recordCount, userId, conditions);
          for(int i=0;i<value.length;i++){
              WorkflowRequestInfo wfinfo = value[i];
              //流程列表接口一般获取都是流程的标题 、节点、创建日期、流程类型等信息,下面举例如何获取具体的信息内容。
              String requestid = wfinfo.getRequestId();//流程请求id
              String requestname = wfinfo.getRequestName();//流程请求标题
              String createtime = wfinfo.getCreateTime();//创建日期时间
              String creatorname =wfinfo.getCreatorName();//创建人名称
              String workflowid = wfinfo.getWorkflowBaseInfo().getWorkflowId();//流程id(路径设置对应的流程id)
              String workflowname = wfinfo.getWorkflowBaseInfo().getWorkflowName();//流程名称(路径设置对应的流程名称)
              String currentnodeid = wfinfo.getCurrentNodeId();//当前节点
              String crrrentnodename =wfinfo.getCurrentNodeName();//当前节点名称
              String receivetime = wfinfo.getReceiveTime();//接受日期时间
              String requestLevel =wfinfo.getRequestLevel();//紧急程度
              String status = wfinfo.getStatus();//流程当前出口状态
              String WorkflowTypeId = wfinfo.getWorkflowBaseInfo().getWorkflowTypeId();//流程类型id
              String WorkflowTypeName =wfinfo.getWorkflowBaseInfo().getWorkflowTypeName();//流程类型名称
              System.out.println("请求id:"+requestid +"   流程标题:"+requestname +"   创建日期:"+createtime +"   创建人:"+creatorname +"   路径名称:"+workflowname +"   接受日期:"+receivetime);
          }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
   
   
   
    /**
     * 归档数量
     *
     *
     */
    public void getProcessedWorkflowRequestCount(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           //说明:条件可以传入可以不传入根据实际需要来处理。上面是传入2个条件:1、查询创建日期大于2016-07-01 并且流程为 留言类型的 流程。
           int userId   =1;//当前用户
           int recordCount =binding.getProcessedWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           System.out.println("待办记录数:"+recordCount);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
   
   
   


    /**
     * 我的请求
     * 说明:待办接口与已办、办结、我的请求、所有流程等接口完全一致
     *
     */
    public void getMyWorkflowRequestList(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           
           int userId   =1;//当前用户
           int pageNo = 1;   // 当前页数
           int pageSize =10;   //每页记录数
           int recordCount =binding.getMyWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           
           //流程待办列表接口
          WorkflowRequestInfo[] value = binding.getMyWorkflowRequestList(pageNo, pageSize, recordCount, userId, conditions);
          for(int i=0;i<value.length;i++){
              WorkflowRequestInfo wfinfo = value[i];
              //流程列表接口一般获取都是流程的标题 、节点、创建日期、流程类型等信息,下面举例如何获取具体的信息内容。
              String requestid = wfinfo.getRequestId();//流程请求id
              String requestname = wfinfo.getRequestName();//流程请求标题
              String createtime = wfinfo.getCreateTime();//创建日期时间
              String creatorname =wfinfo.getCreatorName();//创建人名称
              String workflowid = wfinfo.getWorkflowBaseInfo().getWorkflowId();//流程id(路径设置对应的流程id)
              String workflowname = wfinfo.getWorkflowBaseInfo().getWorkflowName();//流程名称(路径设置对应的流程名称)
              String currentnodeid = wfinfo.getCurrentNodeId();//当前节点
              String crrrentnodename =wfinfo.getCurrentNodeName();//当前节点名称
              String receivetime = wfinfo.getReceiveTime();//接受日期时间
              String requestLevel =wfinfo.getRequestLevel();//紧急程度
              String status = wfinfo.getStatus();//流程当前出口状态
              String WorkflowTypeId = wfinfo.getWorkflowBaseInfo().getWorkflowTypeId();//流程类型id
              String WorkflowTypeName =wfinfo.getWorkflowBaseInfo().getWorkflowTypeName();//流程类型名称
              System.out.println("请求id:"+requestid +"   流程标题:"+requestname +"   创建日期:"+createtime +"   创建人:"+creatorname +"   路径名称:"+workflowname +"   接受日期:"+receivetime);
          }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
   
   
   
    /**
     * 我的请求数量
     *
     *
     */
    public void getMyWorkflowRequestCount(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           //说明:条件可以传入可以不传入根据实际需要来处理。上面是传入2个条件:1、查询创建日期大于2016-07-01 并且流程为 留言类型的 流程。
           int userId   =1;//当前用户
           int recordCount =binding.getMyWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           System.out.println("待办记录数:"+recordCount);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
   
   
   
   


    /**
     * 所有流程列表接口
     * 说明:待办接口与已办、办结、我的请求、所有流程等接口完全一致
     *
     */
    public void getAllWorkflowRequestList(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           
           int userId   =1;//当前用户
           int pageNo = 1;   // 当前页数
           int pageSize =10;   //每页记录数
           int recordCount =binding.getAllWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           
           //流程待办列表接口
          WorkflowRequestInfo[] value = binding.getAllWorkflowRequestList(pageNo, pageSize, recordCount, userId, conditions);
          for(int i=0;i<value.length;i++){
              WorkflowRequestInfo wfinfo = value[i];
              //流程列表接口一般获取都是流程的标题 、节点、创建日期、流程类型等信息,下面举例如何获取具体的信息内容。
              String requestid = wfinfo.getRequestId();//流程请求id
              String requestname = wfinfo.getRequestName();//流程请求标题
              String createtime = wfinfo.getCreateTime();//创建日期时间
              String creatorname =wfinfo.getCreatorName();//创建人名称
              String workflowid = wfinfo.getWorkflowBaseInfo().getWorkflowId();//流程id(路径设置对应的流程id)
              String workflowname = wfinfo.getWorkflowBaseInfo().getWorkflowName();//流程名称(路径设置对应的流程名称)
              String currentnodeid = wfinfo.getCurrentNodeId();//当前节点
              String crrrentnodename =wfinfo.getCurrentNodeName();//当前节点名称
              String receivetime = wfinfo.getReceiveTime();//接受日期时间
              String requestLevel =wfinfo.getRequestLevel();//紧急程度
              String status = wfinfo.getStatus();//流程当前出口状态
              String WorkflowTypeId = wfinfo.getWorkflowBaseInfo().getWorkflowTypeId();//流程类型id
              String WorkflowTypeName =wfinfo.getWorkflowBaseInfo().getWorkflowTypeName();//流程类型名称
              System.out.println("请求id:"+requestid +"   流程标题:"+requestname +"   创建日期:"+createtime +"   创建人:"+creatorname +"   路径名称:"+workflowname +"   接受日期:"+receivetime);
          }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
   
   
   
    /**
     *所有流程数量
     *
     *
     */
    public void getAllWorkflowRequestCount(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           //说明:条件可以传入可以不传入根据实际需要来处理。上面是传入2个条件:1、查询创建日期大于2016-07-01 并且流程为 留言类型的 流程。
           int userId   =1;//当前用户
           int recordCount =binding.getAllWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           System.out.println("待办记录数:"+recordCount);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
   
   


    /**
     * 待办列表接口
     * 说明:待办接口与已办、办结、我的请求、所有流程等接口完全一致本次不一一列出
     *
     */
    public void getToDoWorkflowRequestList(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           
           int userId   =1;//当前用户
           int pageNo = 1;   // 当前页数
           int pageSize =10;   //每页记录数
           int recordCount =binding.getToDoWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           
           //流程待办列表接口
          WorkflowRequestInfo[] value = binding.getToDoWorkflowRequestList(pageNo, pageSize, recordCount, userId, conditions);
          for(int i=0;i<value.length;i++){
              WorkflowRequestInfo wfinfo = value[i];
              //流程列表接口一般获取都是流程的标题 、节点、创建日期、流程类型等信息,下面举例如何获取具体的信息内容。
              String requestid = wfinfo.getRequestId();//流程请求id
              String requestname = wfinfo.getRequestName();//流程请求标题
              String createtime = wfinfo.getCreateTime();//创建日期时间
              String creatorname =wfinfo.getCreatorName();//创建人名称
              String workflowid = wfinfo.getWorkflowBaseInfo().getWorkflowId();//流程id(路径设置对应的流程id)
              String workflowname = wfinfo.getWorkflowBaseInfo().getWorkflowName();//流程名称(路径设置对应的流程名称)
              String currentnodeid = wfinfo.getCurrentNodeId();//当前节点
              String crrrentnodename =wfinfo.getCurrentNodeName();//当前节点名称
              String receivetime = wfinfo.getReceiveTime();//接受日期时间
              String requestLevel =wfinfo.getRequestLevel();//紧急程度
              String status = wfinfo.getStatus();//流程当前出口状态
              String WorkflowTypeId = wfinfo.getWorkflowBaseInfo().getWorkflowTypeId();//流程类型id
              String WorkflowTypeName =wfinfo.getWorkflowBaseInfo().getWorkflowTypeName();//流程类型名称
              System.out.println("请求id:"+requestid +"   流程标题:"+requestname +"   创建日期:"+createtime +"   创建人:"+creatorname +"   路径名称:"+workflowname +"   接受日期:"+receivetime);
          }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
   
   
    /**
     * 待办数量
     *
     *
     */
    public void getToDoWorkflowRequestCount(){
        try {
        WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
           //查询条件如何传入
           List<String> list =new ArrayList<String>();
                list.add("t1.workflowid in(select id from workflow_base where workflowname='留言')");
                list.add("t1.createdate>='2016-07-01' ");
           String[] conditions = list.toArray(new String[0]);//查询条件
           //说明:条件可以传入可以不传入根据实际需要来处理。上面是传入2个条件:1、查询创建日期大于2016-07-01 并且流程为 留言类型的 流程。
           int userId   =1;//当前用户
           int recordCount =binding.getToDoWorkflowRequestCount(userId, conditions);// 记录总数 这个记录可以通过获取数量接口获取
           System.out.println("待办记录数:"+recordCount);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
   
    /**
     * 获取流程意见接口
     */
    public void getWorkflowRequestLogs(){
        try {
            WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
               //说明:条件可以传入可以不传入根据实际需要来处理。上面是传入2个条件:1、查询创建日期大于2016-07-01 并且流程为 留言类型的 流程。
               String workflowId = "5";//流程id
               String requestId= "10";//请求流程id
               int userid =1;//人员id
               int pagesize=10;//显示条数
               int endId=0;
               
               WorkflowRequestLog[] logs   =binding.getWorkflowRequestLogs(workflowId, requestId, userid, pagesize, endId);
               for(int i=0;i<logs.length;i++){
                   WorkflowRequestLog log =logs[i];
                   System.out.println("==意见id:"+log.getId());
                   System.out.println("==意见操作人id:"+log.getOperatorId());
                   System.out.println("==意见节点id:"+log.getNodeId());
                   //意见信息可以通过该对象获取
                   
               }
     
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
   
   
   
    /**
     * 流程转发接口
     */
    public void forwardWorkflowRequest(){
        try {
            WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
               int requestid = 10; //请求id
               String recipients="1,2,3,4";//被转发人id   a 转发 b 、c 、d、e   此时就传入b、c、d、e的人员id以英文逗号拼接
               String remark = "请协助处理";//转发意见
               int userId=1;//转发人id
               String clientip="127.0.0.1";//ip地址可以不填
               String falg = binding.forwardWorkflowRequest(requestid, recipients, remark, userId, clientip);
              System.out.println("===falg:"+falg);//success   failed   error 3种状态 成功、失败、错误
     
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
       
    }
   
   
    //更改流程状态接口,将未查看改成已查看
    public void   writeWorkflowReadFlag(){
       
        try {
            WorkflowServiceHttpBindingStub binding = (WorkflowServiceHttpBindingStub)new WorkflowServiceLocator().getWorkflowServiceHttpPort();   
               
               String requestid ="100";
               String userid="1";
               binding.writeWorkflowReadFlag(requestid, userid);
             
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
       
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            Test test =new Test();
            test.doCreateWorkflowRequest();
            test.submitWorkflowRequest();
            test.getToDoWorkflowRequestList();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
   


}


广泛业务.png










入驻机构:    <商家如何入驻>
本网部分内容转载自其他媒体,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性。不承担此类作品侵权行为的直接责任及连带责任。
在线客服
 
 
 
 
 工作时间
周一至周五 :9:00-17:30
 联系方式
邮箱:oaxuanxing@qq.com
会员登录
登录
我的资料
我的收藏
留言
回到顶部