DB3502/T 056.4-2020 政务信息共享协同平台 第4部分:二次开发

DB3502/T 056.4-2020 DB3502/T 056.4-2020 Government Information Sharing and Collaboration Platform Part 4: Secondary Development

福建省地方标准 简体中文 现行 页数:49页 | 格式:PDF

基本信息

标准号
DB3502/T 056.4-2020
标准类型
福建省地方标准
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
发布日期
2020-12-31
实施日期
2021-01-01
发布单位/组织
厦门市市场监督管理局
归口单位
厦门市工业和信息化局
适用范围
-

发布历史

研制信息

起草单位:
厦门市信息中心、厦门畅享信息技术有限公司、厦门市标准化研究院
起草人:
吕志仁、赖炜炜、巫晓强、杨远军、朱永上、彭明剑、郭劲军、郭望、傅楚隆、揭英杰、吴宸勖、陈尚峰、卢淼先、闫焕友、张金梅、刘姗姗、李童、蔡跃华
出版信息:
页数:49页 | 字数:- | 开本: -

内容描述

ICS35.240

CCSL77

3502/T

福建省厦门市地方标准

DB3502/T056.4—2020

政务信息共享协同平台

第4部分:二次开发

Thesharingandcollaborativeplatformofgovernmentinformation—

Part4:Secondarydevelopment

2020-12-31发布2021-01-01实施

厦门市市场监督管理局发布

DB3502/T056.4—2020

目次

前言.................................................................................II

引言................................................................................III

1范围...............................................................................1

2规范性引用文件.....................................................................1

3术语和定义.........................................................................1

4缩略语.............................................................................2

5业务流程开发.......................................................................2

流程脚本.......................................................................2

数据空间......................................................................11

6功能插件开发......................................................................13

支持语言......................................................................13

Java插件开发..................................................................13

Python插件开发...............................................................14

附录A(资料性)业务流程脚本与数据空间示例..........................................15

A.1流程脚本代码示例..............................................................15

A.2数据空间代码示例..............................................................28

附录B(资料性)Java插件代码示例...................................................40

B.1说明..........................................................................40

B.2Java插件源代码................................................................40

B.3平台流程调用..................................................................40

附录C(资料性)Python插件代码示例.................................................41

C.1说明..........................................................................41

C.2Python插件源代码..............................................................41

C.3平台流程调用..................................................................42

参考文献.............................................................................43

I

DB3502/T056.4—2020

前言

本文件按照GB/T1.1—2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规定

起草。

本文件为DB3502/T056《政务信息共享协同平台》的第4部分。DB3502/T056已发布了以下部分:

——第1部分:总体设计;

——第2部分:资源管理;

——第3部分:接入要求;

——第4部分:二次开发。

本文件是在DB3502/Z033.4—2016《政务信息共享协同平台技术规范第4部分:平台二次开发》的

基础上,根据技术和需求变化,重新立项并制定的。与DB3502/Z033.4—2016相比,除结构性调整和编

辑性改动外,主要技术变化如下:

a)更新所支持开发语言版本(见、,DB3502/Z033.4—2016的、);

b)更新二次开发示例代码(见附录B、附录C,DB3502/Z033.4—2016附录A、附录B、附录C)。

请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。

本文件由厦门市工业和信息化局提出。

本文件由厦门市工业和信息化局归口。

本文件起草单位:厦门市信息中心、厦门畅享信息技术有限公司、厦门市标准化研究院。

本文件主要起草人:吕志仁、赖炜炜、巫晓强、杨远军、朱永上、彭明剑、郭劲军、郭望、傅楚隆、

揭英杰、吴宸勖、陈尚峰、卢淼先、闫焕友、张金梅、刘姗姗、李童、蔡跃华。

II

DB3502/T056.4—2020

引言

DB3502/T056《政务信息共享协同平台》旨在确立政务信息共享协同平台总体设计、资源管理、接

入要求、二次开发的技术标准,拟由四个部分构成。

——第1部分:总体设计。目的在于确立平台关键技术路线和软件系统的组织形式,确保平台总

体架构满足国家对政务信息交换与共享的要求,明确平台内主要功能模块和模块间的逻辑关

系,避免“过度建设”并确保“必要建设”。

——第2部分:资源管理。目的在于规范平台所支持的多种资源类型、协议标准、提供方式,为

平台对外服务的兼容性提供保障;明确平台不同类型资源的属性,统一属性分类,为平台对

外服务的通用性提供保障;针对资源生产、资源注册、资源测试、资源申请、资源调用、资

源目录、资源检索、资源版本、资源安全等操作提出全生命周期管理要求,为平台对外服务

的可用性提供保障。

——第3部分:接入要求。目的在于将平台对外接口标准化,明确接口在安全性、完备性、一致

性、易用性、稳定性方面要求,进一步提升平台对外提供服务的能力和质量,并从网络接

入、平台资源生产方、平台资源消费方、区级平台接入等方面,明确接入的实现方式,为保

障平台建设质量及拓展平台应用范围提供技术支撑。

——第4部分:二次开发。目的在于规范平台提供二次开发的工作方式、对扩展模块管理方式,

为后续平台业务流程及插件的完善提供统一标准,既避免了平台直接耦合上层各类业务,又

允许不同部门结合特定业务需要,在授权范围内扩展平台功能。

III

DB3502/T056.4—2020

政务信息共享协同平台

第4部分:二次开发

1范围

本文件规定了政务信息共享协同平台的业务流程开发和功能插件开发。

本文件适用于政务信息共享协同平台功能扩展,软件开发人员基于本平台进行新功能的扩展开发

时参照使用。

2规范性引用文件

下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,

仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本

文件。

DB3502/T056.1—2020政务信息共享协同平台第1部分:总体设计

DB3502/T056.2—2020政务信息共享协同平台第2部分:资源管理

DB3502/T056.3—2020政务信息共享协同平台第3部分:接入要求

3术语和定义

DB3502/T056.1—2020、DB3502/T056.2—2020、DB3502/T056.3—2020界定的以及下列术语和定

义适用于本文件。

变量variable

由一个标识符、一组数据属性、一个或多个地址和各数据值(地址与数据值间的联系可变)组成,

通过声明或隐式声明建立的四元组。

注:在某些编程语言中,地址可变,因而所结合的数据值可变,在其他编程语言中,地址固定不变,但所结合的数

据值在执行期间可以改变。

[来源:GB/T5271.15—2008,定义15.03.03]

局部local

修饰或说明某一语言构造:所具有的作用域仅在对其声明的声明区域内。

[来源:GB/T5271.15—2008,定义15.02.11]

全局global

修饰或说明某一语言构造:处于所在程序中所有模块的作用域内。

[来源:GB/T5271.15—2008,定义15.02.12]

数组array

1

DB3502/T056.4—2020

一种作为某一数组型的一个数据实例,其中各元素或适当的元素组都可以随机而独立的加以引用

的聚合。

[来源:GB/T5271.15—2008,定义15.03.08]

数据结构datastructure

数据单元间的物理联系或逻辑联系和数据本身。

[来源:GB/T5271.15—2008,定义15.03.01]

同步synchronous

用来修饰两个或两个以上的过程,他们取决于特定事件(如公用定时信号)的发生。

[来源:GB/T5271.1—2000,定义01.01.28]

异步asynchronous

用来修饰两个或两个以上的过程,他们不取决于特定事件(如公用定时信号)的发生。

[来源:GB/T5271.1—2000,定义01.01.29]

并发concurrency

并发是指两个或多个线程(程序)在同一时间间隔内发生。并发性是指在一段时间内宏观上有多个

程序在同时运行。

4缩略语

下列缩略语适用于本文件。

BPEL:业务流程执行语言(BusinessProcessExecutionLanguage)

ID:唯一编码(IdentityDocument)

WSDL:Web服务器描述语言(WebServiceDescriptionLanguage)

XML:扩展性标识语言(eXtensibleMarkupLanguage)

XSD:文档结构描述(XMLSchemaDefinition)

5业务流程开发

流程脚本

5.1.1总则

流程结构

流程应支持以下流程结构:空语句、条件分支流程、循环流程、并发流程、流程中断。

应用调用方式

流程应支持以下应用调用方式:同步调用应用、异步调用应用。

流程脚本示例代码

流程脚本示例代码见附录A。

2

DB3502/T056.4—2020

流程脚本XSD描述

流程脚本的XSD描述见图1。

图1流程总结构

流程固有属性

流程固有属性应包含“INFORMATION”、“GLOBAL_DATA”和“REQUESTER”:

a)INFORMATION节点:描述流程名称、流程备注、流程版本、流程作者等信息;

3

DB3502/T056.4—2020

b)GLOBAL_DATA节点:定义流程的入参和返回结果,同时包含帐户设计器自动列出的本流程使用

的全局变量;

c)REQUESTER节点:用于在流程每次运行时,自动采集本次请求方的信息。

5.1.2流程信息/INFORMATION节点

流程信息/INFORMATION节点结构见图2,包括:

a)flow_id:流程在管理平台上注册所获得的全局唯一ID;

b)flow_name:流程可读名称;

c)version:流程当前版本号,通常为一数值;

d)author:流程作者,可选;

e)DESCRIPTION:流程说明,可选;

f)FLOWTIME:流程超时。流程将在运行时长超出该数值后,自动退出。格式为一整数,单位为秒;

或者使用d表示天数、h表示小时数,m表示分钟数,如:2d3h,表示超时时长为两天又三小

时。

图2流程信息/INFOMATION节点结构

5.1.3流程全局数据/GLOBALDATA节点

流程全局数据/GLOBAL_DATA节点结构见图3,包含流程入参列表、出参列表、和全局变量列表:

a)流程入参列表应包含0到多个入参,值均为字符串,对应数据空间中的具体变量名;

b)流程出参列表应包含0到多个出参,值均为字符串,对应数据空间中具体的变量名;

c)全局变量列表由设计器自动生成,开发人员通常无须关注。

图3流程全局数据/GLOBAL_DATA节点结构

4

DB3502/T056.4—2020

5.1.4流程请求方/REQUESTER节点

流程请求方/REQUESTER节点结构见图4。流程在运行期自动采集到的请求方信息,包括

“requester_id/请求方ID”和“requester_name/请求方名称”。前者用以在识别同时一刻发起请求的

不同请求方。

图4流程请求方/REQUESTER节点结构

5.1.5活动节点/ACTIVITY节点

活动节点/ACTIVITY节点结构见图5。ACTIVITY是流程的语句,每一个ACTIVITY节点代表发起一次对

功能活动的调用。可调用的功能活动包括外部平台服务资源、流程引擎自带的内核函数、或插件服务,

统称为“活动”。

ACTIVITY内部包含三个子语句:

a)INIT:语句集,代表在调用当前活动之前执行的语句;

b)INVOKE:含PARAMETER和RESULT两个子语句:

1)PARAMETER为本次活动所需入参,包括直接入参和表达式入参,其中,直接入参指特定变

量,表达式指需进行计算后以求出入参值,比如1+2;

2)RESULT为本次活动出参;

c)FINI:语句集,代表在调用当前活动之后执行的语句。

图5活动/ACTIVITY节点结构

5

DB3502/T056.4—2020

5.1.6异步活动/ASYNACTIVITY节点

异步活动/ASYNACTIVITY节点结构见图6。该结构与ACTIVITY相同,但在调用上为异步调用,即无需

等待活动返回结果,流程应继续向前执行,直到流程后续通过BRANCHEWAIT节点主动等待之前发起的异

步操作结果。

图6异步活动/ASYNACTIVITY节点结构

图7ASYNACTIVITY属性中的asyn_seed等信息

6

DB3502/T056.4—2020

流程可在等待之前多次发起异步操作,为方便在等待时识别具体哪一次的异步调用,应在调用

ASYNACTIVITY之前,通过ASYNSEED语句获得全局唯一的“异步种”数据,填写在ASYNACTIVITY节点的

attributes(属性)中,见图7。其中:

a)asyn_seed_id为异步种子数据,每一个ASYNACTIVITY语句都拥有不同的该值;

b)asyn_invoke_id为系统自动产生的异步调用种子数据,即使同一异步调用语句,多次调用也

会产生不同的该值。

5.1.7异步活动种子/ASNSEED节点

异步活动种子/ASYNSEED节点结构见图8。该节点用于产生异步调用所需的异步种,包括获得

“asyn_seed_id/异步种ID”及本次异步的超时、后台检查时间时隔等配置。

图8异步活动种子/ASYNSEED节点结构

5.1.8并发等待/BRANCHWAIT节点

并发等待/BRANCHWAIT节点结构见图9。BRANCHWAIT语句既用于等待并发,也用于等多个(次)异步

执行的结果。应在属性中填写所需要等待的异步种。

图9并发等待/BRANCHWAIT节点结构

BRANCHWAIT包含三个子语句,三者均为语句集:

7

DB3502/T056.4—2020

a)CONVERGE:在有新的异步或并行运行结果到来时,触发调用,以执行其内部语句,通常流程在

此实现多次异步运行结果或多个并发分支的数据合并。系统应保障每一时刻,仅会有一次并发

或异步运行流程进入该合并节点;

b)INTERRUP:由后台线程周期性执行;

c)TIMEOUE:在指定异步种所对应的并发或异步操作超时后触发。

5.1.9并发/CONCURRENCE节点

并发/CONCURRENCE节点结构见图10。CONCURRENCE应满足以下条件:

a)包含零或多个分支子语句BRANCH,和一个BRANCHWAIT语句,后者用以等待前面所有分支持的

运行结束;

b)包含INIT和FINI语句,分别在所有并发开始之前,和BRANCHWAIT结束之后执行。

图10并发/CONCURRENCE节点结构

5.1.10结束并发等待/ENDWAIT节点

结束并发等待/ENDWAIT节点结构见图11。该节点用于在BRANCHWAIT中,中途放弃等待,直接运行

BRANCHWAIT之后的语句。

图11结束并发等待/ENDWAIT节点结构

5.1.11条件分支/IF节点

8

DB3502/T056.4—2020

条件分支/IF节点结构见图12。IF节点包含一个CONDITION节点和一个ELSE节点,以及其它语句子集。

CONDITION本身也是语句子集,并带有“conclusion”属性。CONDITIONS内部语句执行过程用以确定该

属性的值为TRUE或FALSE。如果为TRUE,则运行其后除ELSE之后的所有子语句,否则直接运行ELSE语句。

图12条件分支/IF节点结构

5.1.12条件未命中/ELSE节点

条件未命中/ELSE节点结构见图13。该节点不作为流程的一级节点出现,仅作为IF语句的子节点,

在IF语句中条件为假时执行其内部的子语句。图13。

图13条件未命中/ELSE节点结构

5.1.13空语句/PASS节点

空语句,仅作为占位符,不执行任何操作,见图14。

图14空语句/PASS节点结构

9

DB3502/T056.4—2020

5.1.14多分支/SWITCH节点

多分支/SWITCH节点结构见图15。SWITCH语句提供多分支支持。每个分支为一个CASE语句。CASE语

句应符合5.2.15的要求。如果没有任何CASE语句中的条件成立,则执行DEFAULT语句。

图15多分支/SWITCH节点结构

5.1.15多分支入口/CASE节点

多分支入口/CASE节点结构见图16。CASE语句不是流程的一级语句,只准许出现在SWITCH语句中,

提供case_index属性,用于决定SWITCH语句判断各CASE语句的次序。判断CASE语句的条件为其内的

CONDITIONS语句。CONDITIONS语句的执行应符合5.2.11的相关要求。

注:执行某一CASE语句之后,不会像C/C++语言的一样执行后续CASE,无需BREAK语句即可自动跳出。

图16多分支入口/CASE节点结构

5.1.16流程中断/TERMINATE节点

流程中断/TERMINATE节点结构见图17。TERMINATE语句用于中途结束整个流程。使用该语句,流程

将异常退出。

图17流程中断/TERMINATE节点结构

5.1.17循环/WHILE节点

循环/WHILE节点结构见图18。WHILE在其内部的CONDITION语句条件成立时,将反复执行其内的子语

句,直到条件不成立或遇到BREAK语句。

10

DB3502/T056.4—2020

图18循环/WHERE节点结构

5.1.18循环跳出/BREAK节点

BREAK语句将向上寻找所有父语句,直到遇到第一个WHILE循环,将中途结束该循环,继续执行WHILE

之后的语句,见图19。

图19循环跳出/BREAK节点结构

5.1.19循环继续/CONTINUE节点

CONTINUE语句将向上寻找所有父语句,直到遇到第一个WHILE循环,将中途跳出该循环的本次迭代,

直接进入下一遍循环。见图20。

图20循环继续/CONTINUE节点结构

数据空间

5.2.1数据结构类型

政务信息共享协同平台支持三类数据结构:简单型、结构型、数组型。其中结构型和数组同

为复杂结构型,二者可组合,如:结构中含有数组数据,或数组的元素是结构类型。数组在理论上应支

持无限维度。

数据空间示例代码见附录A.2。

5.2.2简单数据/SimpleItem

简单数据/SimpleItem结构见图21。简单数据包含“名称/name”、“类型/type”和“域/domain”

属性,分别对应该变量的变量名、变量类型和变量可见范围。

支持的简单数据类型包括四种类型:字符串/string、布尔型/boolean、整型/integer和双精度浮

点数/double。

11

DB3502/T056.4—2020

图21简单数据/SimpleItem

5.2.3数组数据/ArrayItem

数组数据/ArrayItem结构见图22。ArrayItem应符合以下要求:

a)提供DEF节点,以定义其元素的结构类型。如:在DEF中定义的类型是SimpleItem结构,且

数据类型为string,则得到一个字符串类型的数组;在DEF中定义的类型是一个一维数组,

则得到一个一维数组的数组,即二维数组。

b)DEF节点之后,为具体的元素数组。

5.2.4结构数据/StructItem

图22数组数据/ArrayItem

结构化数据/StructItem结构见图23。StructItem是多个相同或不同类型数据的组合,应符合以下

要求:

a)支持结构嵌套子结构的多级结构;

b)支持包含数组的数据。

12

DB3502/T056.4—2020

图23结构化数据/StructItem

6功能插件开发

支持语言

当前平台支持基于Java语言和Python语言的插件开发。

Java插件开发

6.2.1Java插件基本要求

插件提供形式:Java插件应提供.java的源文件以进行插件代码审查。审查通过后再由平台

运行环境编译为.class文件。

插件部署位置:插件固定部署在平台部署目录的bin/plugin/java作为类起始目录,不同插

件项目宜在其下创建不同的子目录。

Java运行环境:支持1.8.0.x版本,未来视平台持续改进,宜使用更高版本。

流程脚本中调用方法:通过ACITIVITY或ASYNACTIVITY,指定其所调用的活动类型为

java_plugin,并指定路径为“core/java/路径名/类名/静态方法名”。

插件功能调用入口:类似Java项目的Main方法,仅允许使用静态方法作为入口。

Java插件开发与使用示例,见附录B。

6.2.2Java插件数据结构对应关系

Java插件数据结构对应关系见表1。

表1Java插件数据结构对应关系

平台数据类型Java数据类型转换过程备注

简单类型的stringString

简单类型integerint

简单类型booleanboolean

简单类型doubledouble

StructItemObject平台结构转换Java对象,该对象的class定义应存在。

ArrayItemArrayList

13

DB3502/T056.4—2020

Python插件开发

6.3.1Python插件基本要求

插件提供形式:Python插件应提供.py的源文件以进行插件代码审查。

插件部署位置:插件固定部署在平台部署目录的bin/plugin/python作为python文件起始

目录,不同插件项目宜在其下创建不同的子目录。

Python运行环境:支持2.6.x及2.7.x版本,未来随平台持续改进,宜升级至新版本Python

运行环境。

流程脚本中调用方法:通过ACITIVITY或ASYNACTIVITY,指定其所调用的活动类型为

python_plugin,并指定路径为“core/java/路径名/py文件名”。其中py文件名不含扩展名。

插件功能调用入口:仅允许以自由函数作为入口。

Python插件开发与使用示例,见附录C。

6.3.2Python插件数据结构对应关系

Python插件数据结构对应关系见表2。

表2Python插件数据结构对应关系

平台数据类型Python数据类型转换过程备注

简单类型的stringstring

简单类型integerint

简单类型booleanbool

简单类型doublefloat

平台结构转换Python对象,该对象的class定义应存

StructItemdict

在。

ArrayItemlist

14

DB3502/T056.4—2020

A

A

定制服务