1. BPM集成

1.1. BPM集成开发流程

外部系统可以发起协同平台的HTML正文协同和表单协同,按照管理员预先设定的流程和表单模板进行流转.

接口列表

  • public ServiceResponse launchFormCollaboration(String token, String senderLoginName, String templateCode, String subject, String data, Long[] attachments, String param, String relateDoc) throws ServiceException; 用途:发起表单流程。 参数:token为登录验证后获取的身份令牌;senderLoginName为发起者的登录名(登录协同的登录名);templateCode为模板编号;subject为协同的标题;data为XML格式的表单数据,格式与getTemplateDefinition返回值中的FormExport相同。保障数据的正确性,参见表单XML2.0版本。同时兼容1.0和2.0格式的XML。 attachments为上传附件的文件ID数组(通过上传附件接口获得);param为控制是否流程发送。0:缺省值,发送,进入下一节点的待办(如果需要选人则保存到待发)1:不发送,保存到待发;relateDoc上传附件为关联文档,relateDoc格式:模块类型1|关联文档ID;模块类型2|关联文档ID,关联文档ID。例如:"col|123;doc|321,654",目前只支持关联协同文档,模块类型为col,此参数可以为空。 返回值:返回流程Id。
  • public ServiceResponse launchHtmlCollaboration(String token, String senderLoginName, String templateCode, String subject, String bodyContent, Long[] attachments) throws ServiceException; 用途:发起html正文流程(不包括office正文)。 参数:token为登录验证后获取的身份令牌;senderLoginName为发起者的登录名(登录协同的登录名);templateCode为模板编号;subject为协同的标题;bodyContent为HTML正文内容;attachments为上传附件的文件ID数组(通过上传附件接口获得)。 返回值:返回流程id。
  • long getFlowState(String token,long flowId) throws ServiceException; 用途:取得流程运转状态。 参数:token为登录验证后获取的身份令牌;flowId为流程Id(launchFormCollaboration或launchHtmlCollaboration的返回值)。 返回值:返回流程的状态。
  • public long[] getFormCollIdsByDateTime(String token,String[] templateCode,String beginDateTime,String endDateTime) throws ServiceException; 用途:按时间段查询指定表单模板已经审批通过和结束的流程。 参数:token为登录验证后获取的身份令牌;templateCode为模板编号数组;beginDateTime开始查询时间(yyyy-MM-dd HH:mm:ss);endDateTime结束查询时间(yyyy-MM-dd HH:mm:ss)。 返回值:返回流程Id数组。
  • getTemplateDefinition(已废弃) 用途:获取表单模板定义。请手动发起模板流程后,使用exportFlow2获取模板的定义(导出流程信息时,原始接口exportFlow作为1.0版本不做任何改动。针对2.0版本单独提供导出接口exportFlow2,参数与1.0版本相同)

流程状态:

表单XML2.0版本:

3.12SP1以后版本简化了XML格式,推出2.0版本的表单数据XML。

1.0版本的XML里的数据值不能包含“<”、“&”等字符,否则发起表单流程将会失败,2.0以后支持这些特殊字符。

1.0版本仅兼容旧的开发,如果您基于3.12SP1以后版本,请使用2.0版本的XML进行开发。

2.0格式XML示例:

<?xml version="1.0" encoding="UTF-8"?>
<formExport version="2.0">
    <!-- 表单基本属性 -->
    <summary id="6903526366448995796" name="formmain_0096"/>
    <!-- 主表值列表 -->
    <values>
        <column name="项目名称">
            <value><![CDATA[神华集团项目]]></value>
        </column>
        <column name="负责人">
            <value>2</value>
            <title>张强</title>
        </column>
    </values>
    <!-- 从表列表 -->
    <subForms>
        <subForm>
            <!-- 从表值列表 -->
            <values>
                <row>
                    <column name="源码名称">
                        <value><![CDATA[系统]]></value>
                    </column>
                    <column name="改进建议">
                        <value><![CDATA[0]]></value>
                        <title><![CDATA[进一步提高]]></title>
                    </column>
                </row>
            </values>
        </subForm>
    </subForms>
</formExport>

元素和属性说明:

获取表单数据定义:

有两个途径可以获取表单数据XML的规范: 1 按照模板编号调用BPMService.getTemplateDefine,但导出的XML只包含字段定义,不包含数据格式。 2 在协同中使用表单模板填写数据,发起流程,按照协同Id调用DocumentService.exportFlow,导出的XML中FormExport部分就是包含数据的定义。

3.12SP1以后版本可以按照下面的步骤获取2.0版本定义:

在协同平台中使用表单模板填写数据,发起流程,按照协同Id调用DocumentService的exportFlow2,导出的XML中FormExport部分就是包含数据的定义。(DocumentService的exportFlow导出的xml为1.0版本的数据)

导出的XML片段如下:

发起表单流程数据的校验Schema和XSL文件校验发起流程的表单XML,以避免运行时发生错误

  • 指定了Schema和XSL的XML文件示例,请参照添加Schema和XSL。

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="http://127.0.0.1/seeyon/FormExport.xsl"?>
    <DataPojo type="FormExport" version="1" valuecount="5" isnull="false" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://127.0.0.1/seeyon/FormExport.xsd">
    

  • Schema校验:指定Schema:在XML的Root节点(DataPojo type="FormExport")添加Schema属性

    <DataPojo type="FormExport" version="1" valuecount="5" isnull="false" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://{host}/seeyon/FormExport.xsd">
    

    校验:使用XML编辑器(如XMLSpy)进行Schema校验,保证XML的结构合法。

  • 指定XSL:在XML的PI(<?xml version="1.0" encoding="UTF-8"?>)后添加<?xml-stylesheet type="text/xsl"href="http://{host}/seeyon/FormExport.xsl"?>校验:使用IE打开添加了XSL的XML文件,系统会用红色字体提示文件中的错误。

  • 简化发起流程的XML:为控制XML的大小,发起流程时可以不包含definitions中的数据,但必须有definitions声明。例如XML中的

    <DataProperty propertyname="definitions" valuetype="10" isnull="false" length="2">
        <DataPojo type="DefinitionExport" version="1" valuecount="11" isnull="false">
            <DataProperty propertyname="len" valuetype="0" value="20"/>
            <DataProperty propertyname="enumId" valuetype="3" value="-1"/>
            <DataProperty propertyname="defaultValue" valuetype="1" isnull="false"/>
            <DataProperty propertyname="type" valuetype="0" value="0"/>
            <DataProperty propertyname="extendName" valuetype="1" isnull="true"/>
            <DataProperty propertyname="mathRuleScript" valuetype="1" isnull="true"/>
            <DataProperty propertyname="optionId" valuetype="0" value="0"/>
            <DataProperty propertyname="digits" valuetype="0" value="0"/>
            <DataProperty propertyname="isNullable" valuetype="0" value="0"/>
            <DataProperty propertyname="name" valuetype="1" isnull="false">start_member_id</DataProperty>
            <DataProperty propertyname="displayName" valuetype="1" isnull="false">发起人</DataProperty>
        </DataPojo>
        <DataPojo type="DefinitionExport" version="1" valuecount="11" isnull="false">
            <DataProperty propertyname="len" valuetype="0" value="20"/>
            <DataProperty propertyname="enumId" valuetype="3" value="-1"/>
            <DataProperty propertyname="defaultValue" valuetype="1" isnull="false"/>
            <DataProperty propertyname="type" valuetype="0" value="0"/>
            <DataProperty propertyname="extendName" valuetype="1" isnull="true"/>
            <DataProperty propertyname="mathRuleScript" valuetype="1" isnull="true"/>
            <DataProperty propertyname="optionId" valuetype="0" value="0"/>
            <DataProperty propertyname="digits" valuetype="0" value="0"/>
            <DataProperty propertyname="isNullable" valuetype="0" value="0"/>
            <DataProperty propertyname="name" valuetype="1" isnull="false">approve_member_id</DataProperty>
            <DataProperty propertyname="displayName" valuetype="1" isnull="false">审核人</DataProperty>
        </DataPojo>
    </DataProperty>
    

    可以替换为

    <DataProperty propertyname="definitions" valuetype="10" isnull="true" length="0"/>
    

流程日志 为了对发起表单流程进行运行时的监控,提供了BPM流程日志,在服务器的/USER-DATA/BPM/logs/FlowLog.log中记录发起流程的状态(模板编号、发起人、发起时间、是否成功、发起的协同Id、描述、xml),如果出错了在描述中记录错误信息。并在webapps/seeyon/USER-DATA/BPM/xml中保存发起流程的xml文件。 可以通过webapps/seeyon/WEB-INF/cfgHome/base/Log4j.properties修改流程日志的级别:缺省为info,记录所有,调试稳定后可修改为warn(只记录警告和出错的流程)或error(只记录出错的流程)

#
# FlowLog
#
log4j.category.com.seeyon.v3x.services.flow.log = info , flowLog
log4j.additivity.com.seeyon.v3x.services.flow.log = false

results matching ""

    No results matching ""