关于标准EDI/B2B标准的简介(二、AS2传输模式)

一、前言

  上一篇给大家介绍了关于标准EDI的一些东西,这一篇呢,给大家介绍一下标准EDI的一个代表性的传输方式AS2传输,由于网上的很多东西都很齐全了,有些都比我自己了解的多,因此,本篇主要引用为主,主要是国内网站,国外也有不少,但是我试着翻译了一下,发现其实差不多少,翻译了一半觉得累了,感觉还是引用吧,下一篇我会讲一下X12标准,主要是X12 订单、DN、出货、发票等

二、AS2协议的原理

  AS2协议是目前信息传输安全可靠的传输协议的标准规范,它是基于HTTP&S/MIME的安全传输协议,首先通过证书对传输文件进行加密与签名,加密的数据包通过HTTP/HTTPS进行或者TCP/IP网络进行数据传输与交换。

  网上的流程很多,这里我引用的一个,感觉讲个大体吧

  https://blog.csdn.net/qq_43295858/article/details/84836662?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

  建立AS2传输的基本参数:

  AS2 ID:这个可以自定义

  URL:AS2的接收地址

  数字证书:用来签名和加密的证书

  AS2传输流程:

  

  

  1、准备传输文件:AS2传输不限制传输文件格式,支持EDI、CSV、xlsx、pdf、zip、json等任意格式文件
    2、签名加密数据包: 对于传输的文件,首先用发送方私钥证书签名,之后再用接收方公钥证书加密,完成传输文件的安全加密并封装
  3、通过HTTP/HTTPS传输数据包
  4、解密并验证数据包:接收方网关收到数据包后,首先用接收方私钥证书解密,再用发送方公钥证书验证签名,并解封装
  5、接收方处理收到的原始数据
    6、回复MDN:接收方通过HTTP/HTTPS回复信息处理通知MDN给发送方
  7、验证MDN: 发送方根据接收方回复的MDN信息验证发送成功

三、AS2 Java实现

  其实AS2 Java实现网上有一些公开的代码和配置资料,主要有openAS2和AS2 Gateway(这个收费)

  什么是OpenAS2?

  OpenAS2是AS2标准的基于Java的实现,它支持基于XML文件的配置-用户界面配置尚未实现,但已经在其路线图上

  下载地址:https://sourceforge.net/projects/openas2/

  什么是AS2Gateway?

  AS2Gateway是一个SaaS应用程序,它实现了AS2规范,同时还提供了通过美观而简单的用户界面配置AS2工作站和贸易伙伴的功能。与OpenAS2相比,根据您的AS2要求配置AS2Gateway非常容易-尤其是如果您是没有良好技术背景并且不熟悉没有图形UI的服务器类型应用程序的用户。在阅读此博客时,您将了解其中的区别。由于具有GUI,因此它提供了更多实用程序功能,可满足AS2上的高级要求,例如证书管理,SFTP集成等

  下载地址:

  https://as2gateway.com/

以下是引用部分:https://www.codercto.com/a/90756.html

下面简单介绍一下OpenAS2的配置与使用

1.下载安装

下载解压,无需安装即可运行,目录结构如下:

.
├── OpenAS2HowTo.pdf
├── RELEASE-NOTES.md
├── bin
├── changes.txt
├── config
├── lib
└── resources
复制代码

2.启动测试

在执行脚本之前,需要确认的是系统中已经设置了 JAVA_HOME 环境变量。

给启动脚本添加执行权限

chmod +x ./bin/start-openas2.sh

启动OPEN AS2

./bin/start-openas2.sh

如果一切正常的话会看到以下提示

FINE OpenAS2Server: OpenAS2 Server v2.9.0 started.

3.生成密钥

$ ./gen_p12_key_par.sh clinflash-pv clinflash-pv SHA256 "CN=www.clinflash.net, OU=Clinflash, O=Clinflash, L=Shanghai, S=Shanghai, C=CN"
Generate a certificate to a PKCS12 key store.
Generating certificate:  using alias clinflash-pv to clinflash-pv.p12
Do you wish to execute this request? [Y/N]Y
Enter password for keystore:123456
存储在文件 <clinflash-pv.cer> 中的证书

Generated files:
     PKCS12 keystore: clinflash-pv.p12
     Public Key File: clinflash-pv.cer
复制代码

4.配置说明

配置文件位于config目录,其中各个文件有不同作用

  • config.xml
    主要配置文件,包含全局属性、密钥证书、伙伴配置文件、日志、发送文件目录、接收文件目录等许多信息的相关配置。
  • partnerships.xml
    用于配置EDI伙伴以及伙伴关系。
  • as2_certs.p12
    用于保护伙伴信息的PKCS12签名文件,这是默认的文件名,可以在config.xml指定自定义的的文件名。
  • commands.xml
    此文件列出了OPEN AS2支持的命令,一般情况下不要去更改这个文件内容。

另外,config.xml文件中的配置如果发生更改需要重启应用才会生效,而其它文件配置发生更改会自动刷新。

4.1 config.xml应用配置

4.1.1 属性配置

properties节点中定义了一些属性值,这些属性值可以在其他地方以变量方式使用。

<properties
        storageBaseDir="%home%/../data"
        log_date_format="yyyy-MM-dd HH:mm:ss.SSS"
        sql_timestamp_format="yyyy-MM-dd HH:mm:ss.SSS"
        as2_message_id_format="[email protected]$msg.sender.as2_id$_$msg.receiver.as2_id$"
        as2_async_mdn_url="http://localhost:10081"/>

例如使用 storageBaseDir 这个属性值:

<processor classname="org.openas2.processor.DefaultProcessor"
        pendingMDN="$properties.storageBaseDir$/pendingMDN3"
        pendingMDNinfo="$properties.storageBaseDir$/pendinginfoMDN3">
</>

4.1.2 证书配置

<certificates classname="org.openas2.cert.PKCS12CertificateFactory"
        filename="%home%/as2_certs.p12"
        password="testas2"
        interval="300"/>

%home% 表示当前目录,也就是config目录, filename 和 password 的属性值需要改成我们的keystore文件和密码。

4.1.3 伙伴关系文件配置

这里仅仅定义了伙伴关系文件的位置,详细的配置信息在这个文件中。

<partnerships classname="org.openas2.partner.XMLPartnershipFactory"
        filename="%home%/partnerships.xml"
        interval="120"/>

4.1.4 发送文件配置

OPEN AS2会轮询扫描指定的目录,寻找发送给伙伴的文件。目录扫描器会在两个连续周期检查发现的文件大小是否发生变化,如果没有变化则会将此文件加入发送队列中。

用于存放发送文件的目录可以是一个伙伴的专有目录,也可以是一个通用目录。如果使用通用目录,则通过解析文件名确定伙伴的身份。

以下是发送文件相关的关键属性:

outboxdir - 发送文件的扫描目录

errordir - 发送文件出错后存放文件的目录

interval - 扫描目录的周期(秒)

sendfilename - 发送给远程伙伴的消息是否必须包含文件名

mimetype - 指定发送消息中文件的扩展类型

  • 通用发送目录配置
<!-- This directory polling module will parse the filename to get a sender, receiver and name of file to send to partner.
        For instance, a file named MyComapny_OID-PartnerB_OID-OrderID-745634.edi would be sent from MyCompany to PartnerB.
        The name of the file sent to the partner will be "OrderID-745634.edi" -->
<module classname="org.openas2.processor.receiver.AS2DirectoryPollingModule"
        outboxdir="$properties.storageBaseDir$/toAny"
        errordir="$properties.storageBaseDir$/toAny/error"
        interval="5"
        delimiters="-"
        mergeextratokens="true"
        sendfilename="true"
        format="sender.as2_id, receiver.as2_id, attributes.filename"
        mimetype="application/EDI-X12" />
  • 专有发送目录配置
<!-- This directory polling module will is dedicated to sending to partner PartnerA_OID -->
<module classname="org.openas2.processor.receiver.AS2DirectoryPollingModule"
        outboxdir="$properties.storageBaseDir$/toPartnerA/"
        errordir="$properties.storageBaseDir$/toPartnerA/error"
        interval="5"
        defaults="sender.as2_id=MyCompany_OID, receiver.as2_id=PartnerA_OID"
        sendfilename="true"
        mimetype="application/EDI-X12"/>

<!-- This directory polling module will is dedicated to sending to partner PartnerB_OID -->
<module classname="org.openas2.processor.receiver.AS2DirectoryPollingModule"
        outboxdir="$properties.storageBaseDir$/toPartnerB"
        errordir="$properties.storageBaseDir$/toPartnerB/error"
        interval="5"
        defaults="sender.as2_id=MyCompany_OID, receiver.as2_id=PartnerB_OID"
        sendfilename="true"
        mimetype="application/EDI-X12"/>

其中,“defaults”属性指定了目录中所有文件的发送方和接收方的AS2 ID。

此外,还可以限制发送文件的扩展名, fileextensionfilter 指定了通过的文件扩展名,fileextensionexcludefilter 指定了忽略的文件扩展名。

fileextensionfilter="doc, docx, txt, edi"
fileextensionexcludefilter="tmp"

4.1.5 消息跟踪

从2.1.0版本开始,OPEN AS2会跟踪消息传输和接收过程,并将消息状态写入内嵌的H2 数据库中。

以下是默认配置:

<module classname="org.openas2.processor.msgtracking.DbTrackingModule"
        use_embedded_db="true"
        force_load_jdbc_driver="false"
        db_user="sa"
        db_pwd="OpenAS2"
        db_name="openas2"
        table_name="msg_metadata"
        db_directory="%home%/DB"
        jdbc_driver="org.h2.Driver"
        jdbc_connect_string="jdbc:h2:$component.db_directory$/$component.db_name$"
        sql_escape_character="‘"
        tcp_server_start="true"
        tcp_server_port="9092"
        tcp_server_password="openas2"
        />

除了使用内嵌的H2数据库,还可以使用任何有JDBC驱动的数据库(如Oracle, MySql or Postgresql等)。使用外部数据库时需要将JDBC驱动放入 lib 目录,同时将 use_embedded_db属性值设为"false",还要修改其它部分属性值。

下面的配置以 Postgresql 为例:(用户名、密码根据实际情况填写)

<module classname="org.openas2.processor.msgtracking.DbTrackingModule"
        use_embedded_db="false"
        force_load_jdbc_driver="false"
        db_user="sa"
        db_pwd="OpenAS2"
        db_name="openas2"
        db_directory="%home%/DB"
        jdbc_driver="org.postgresql.Driver"
        jdbc_connect_string="jdbc:postgresql://localhost:5432/$component.db_name$"
        sql_escape_character="‘"
        />

4.1.6 重试配置

如果消息传输出错,系统会自动无限重试,但可以配置重试次数。

config.xml 中的配置的重试次数会被 partnerships.xml 中配置的重试次数覆盖。

<module classname="org.openas2.processor.sender.AS2SenderModule" retries="5"/>
<module classname="org.openas2.processor.sender.MDNSenderModule" retries="3"/>

4.1.7 其它配置

另外还有一些其它配置,如文件名解析、代理 服务器 、健康检查等,可以查看OPEN AS2的使用说明 OpenAS2HowTo.pdf 。

4.2 partnerships.xml伙伴配置

partnerships.xml 中配置了信息交换伙伴的所有信息

4.2.1 <partner> 定义了信息交换的贸易伙伴信息

name:贸易伙伴的名称;

as2_id:贸易伙伴之间确认身份的标识,同时也被通用发送文件轮询模块用来解析文件名;

x509_alias:证书别名,需要与密钥证书设置的别名一致。

4.2.2 <partnership> 定义了2个贸易伙伴之间的关系

`sender`:需要与发送方中的name属性值一致

`receive`:需要与接收方中的name属性值一致

`sign`:AS2报文签名算法,支持md2, md5, sha1, sha224, sha256, sha384, sha512

`encrypt`:AS2报文加密算法,支持3des, cast5, rc2_cbc, aes128, aes192, aes256

4.2.3 伙伴关系配置示例

下面的示例是自己公司和2个交易伙伴配置:

<partnerships>
    <partner name="MyCompany"
             as2_id="MyCompany_OID"
             x509_alias="mycompany"
             email="[email protected]"/>

    <partner name="PartnerA"
             as2_id="PartnerA_OID"
             x509_alias="partnera"
             email="[email protected]"/>

    <partner name="PartnerB"
             as2_id="PartnerB_OID"
             x509_alias="partnerb"
             email="[email protected]"/>

    <partnership name="MyCompany-to-PartnerA">
        <sender name="MyCompany"/>
        <receiver name="PartnerA"/>
        <attribute name="protocol" value="as2"/>
        <attribute name="content_transfer_encoding" value="binary"/>
        <attribute name="compression_type" value="ZLIB"/>
        <attribute name="subject" value="File $attributes.filename$ sent from $sender.name$ to $receiver.name$"/>
        <attribute name="as2_url" value="http://localhost:10080"/>
        <attribute name="as2_mdn_to" value="[email protected]"/>
        <attribute name="as2_mdn_options"
                   value="signed-receipt-protocol=optional, pkcs7-signature; signed-receipt-micalg=optional, $attribute.sign$"/>
        <attribute name="encrypt" value="3DES"/>
        <attribute name="sign" value="SHA256"/>
        <attribute name="resend_max_retries" value="3"/>
        <attribute name="prevent_canonicalization_for_mic" value="false"/>
        <attribute name="rename_digest_to_old_name" value="false"/>
        <attribute name="remove_cms_algorithm_protection_attrib" value="false"/>
    </partnership>
    <partnership name="PartnerA-to-MyCompany">
        <sender name="PartnerA"/>
        <receiver name="MyCompany"/>
    </partnership>

    <partnership name="MyCompany-to-PartnerB">
        <sender name="MyCompany"/>
        <receiver name="PartnerB"/>
        <attribute name="protocol" value="as2"/>
        <attribute name="content_transfer_encoding" value="8bit"/>
        <attribute name="compression_type" value="ZLIB"/>
        <attribute name="subject" value="File $attributes.filename$ sent from $sender.name$ to $receiver.name$"/>
        <attribute name="as2_url" value="https://as2.partnerb.com:8443"/>
        <attribute name="as2_mdn_to" value="[email protected]"/>
        <attribute name="as2_mdn_options"
                   value="signed-receipt-protocol=optional, pkcs7-signature; signed-receipt-micalg=optional, $attribute.sign$"/>
        <attribute name="encrypt" value="3DES"/>
        <attribute name="sign" value="SHA1"/>
        <attribute name="resend_max_retries" value="3"/>
        <attribute name="prevent_canonicalization_for_mic" value="false"/>
        <attribute name="rename_digest_to_old_name" value="false"/>
        <attribute name="remove_cms_algorithm_protection_attrib" value="false"/>
    </partnership>
    <partnership name="PartnerB-to-MyCompany">
        <sender name="PartnerB"/>
        <receiver name="MyCompany"/>
    </partnership>

</partnerships>

有一点需要说明的是:即使数据传输是单向的,也要配置双向的 <partnership> 。

4.2.4 AS2 Message ID

Message ID用于唯一标识发送给伙伴的消息,默认格式为

OPENAS2-$date.ddMMyyyyHHmmssZ$-$rand.[email protected]$msg.sender.as2_id$_$msg.receiver.as2_id$
复制代码

在config.xml中可以通过 as2_message_id_format 属性全局设置Message ID,在partnership.xml中的设置将会覆盖全局设置。

4.2.5 内容传输编码

默认的内容传输编码是 binary ,可以使用partenership.xml中的 content_transfer_encoding 属性覆盖默认值。

4.2.6 消息压缩

OPEN AS2自动支持入站消息压缩,如果要开启出站消息压缩,需要在partenership.xml中设置compression_type 属性,唯一支持的压缩/解压格式是 ZLIB ,默认是不启用压缩的。

5.传输测试

partener: CLINFLASH、CDEE2B

这里我们在同一台机器上部署两个OPEN AS2实例,为了使配置互不影响,我们将OPEN AS2的程序目录拷贝2份,分别为 OpenAS2-01 、 OpenAS2-02 。

5.1 Partener 1 - CLINFLASH

进入OpenAS2-02,在config目录下生成密钥clinflash-pv.p12(keystore)、clinflash-pv.cer(public key).

../bin/gen_p12_key_par.sh clinflash-pv clinflash-pv SHA256 "CN=www.clinflash.net, OU=Clinflash, O=Clinflash, L=Shanghai, S=Shanghai, C=CN"

config.xml

修改证书路径及密码

<certificates classname="org.openas2.cert.PKCS12CertificateFactory"
        filename="%home%/clinflash-pv.p12"
        password="123456"
        interval="300"/>
复制代码

发送轮询目录配置仅保留一条

<module classname="org.openas2.processor.receiver.AS2DirectoryPollingModule"
        outboxdir="$properties.storageBaseDir$/toCDEE2B/"
        errordir="$properties.storageBaseDir$/toCDEE2B/error"
        interval="5"
        defaults="sender.as2_id=CLINFLASH, receiver.as2_id=CDEE2B"
        sendfilename="true"
        mimetype="application/EDI-X12"/>

其它配置无需修改。

partenership.xml

其中,as2_url需要与接收方AS2接收消息的host、port一致,如果接收方也是OPEN AS2,配置在config.xml中的AS2ReceiverModule模块。

<partnerships>
    <partner name="CLINFLASH"
             as2_id="CLINFLASH"
             x509_alias="clinflash-pv"
             email="[email protected]"/>

    <partner name="CDEE2B"
             as2_id="CDEE2B"
             x509_alias="cdee2b"
             email="[email protected]"/>

    <partnership name="CLINFLASH-to-CDEE2B">
        <sender name="CLINFLASH"/>
        <receiver name="CDEE2B"/>
        <attribute name="protocol" value="as2"/>
        <attribute name="content_transfer_encoding" value="binary"/>
        <attribute name="compression_type" value="ZLIB"/>
        <attribute name="subject" value="File $attributes.filename$ sent from $sender.name$ to $receiver.name$"/>
        <attribute name="as2_url" value="http://localhost:20080"/>
        <attribute name="as2_mdn_to" value="any string"/>
        <attribute name="as2_mdn_options"
                   value="signed-receipt-protocol=optional, pkcs7-signature; signed-receipt-micalg=optional, $attribute.sign$"/>
        <attribute name="encrypt" value="3DES"/>
        <attribute name="sign" value="SHA256"/>
        <attribute name="resend_max_retries" value="3"/>
        <attribute name="prevent_canonicalization_for_mic" value="false"/>
        <attribute name="rename_digest_to_old_name" value="false"/>
        <attribute name="remove_cms_algorithm_protection_attrib" value="false"/>
    </partnership>

    <partnership name="CDEE2B-to-CLINFLASH">
        <sender name="CDEE2B"/>
        <receiver name="CLINFLASH"/>
    </partnership>
</partnerships>

5.2 Partener 2 - CDEE2B

进入OpenAS2-02,在config目录下生成密钥cdee2b.p12(keystore)、cdee2b.cer(public key)

../bin/gen_p12_key_par.sh cdee2b cdee2b SHA256 "CN=www.cde.org.cn, OU=CDE, O=CDE, L=Beijing, S=Beijing, C=CN"

config.xml

修改证书路径及密码

<certificates classname="org.openas2.cert.PKCS12CertificateFactory"
        filename="%home%/cdee2b.p12"
        password="123456"
        interval="300"/>

发送轮询目录配置仅保留一条

<module classname="org.openas2.processor.receiver.AS2DirectoryPollingModule"
        outboxdir="$properties.storageBaseDir$/toCLINFLASH/"
        errordir="$properties.storageBaseDir$/toCLINFLASH/error"
        interval="5"
        defaults="sender.as2_id=CDEE2B, receiver.as2_id=CLINFLASH"
        sendfilename="true"
        mimetype="application/EDI-X12"/>

其它配置无需修改。

partenership.xml

<partnerships>
    <partner name="CDEE2B"
             as2_id="CDEE2B"
             x509_alias="cdee2b"
             email="[email protected]"/>

    <partner name="CLINFLASH"
             as2_id="CLINFLASH"
             x509_alias="clinflash-pv"
             email="[email protected]"/>

    <partnership name="CDEE2B-to-CLINFLASH">
        <sender name="CDEE2B"/>
        <receiver name="CLINFLASH"/>
        <attribute name="protocol" value="as2"/>
        <attribute name="content_transfer_encoding" value="binary"/>
        <attribute name="compression_type" value="ZLIB"/>
        <attribute name="subject" value="File $attributes.filename$ sent from $sender.name$ to $receiver.name$"/>
        <attribute name="as2_url" value="http://localhost:10080"/>
        <attribute name="as2_mdn_to" value="any string"/>
        <attribute name="as2_mdn_options"
                   value="signed-receipt-protocol=optional, pkcs7-signature; signed-receipt-micalg=optional, $attribute.sign$"/>
        <attribute name="encrypt" value="3DES"/>
        <attribute name="sign" value="SHA256"/>
        <attribute name="resend_max_retries" value="3"/>
        <attribute name="prevent_canonicalization_for_mic" value="false"/>
        <attribute name="rename_digest_to_old_name" value="false"/>
        <attribute name="remove_cms_algorithm_protection_attrib" value="false"/>
    </partnership>

    <partnership name="CLINFLASH-to-CDEE2B">
        <sender name="CLINFLASH"/>
        <receiver name="CDEE2B"/>
    </partnership>
</partnerships>

交换密钥

互相将公钥发送给对方,并导入到密钥库。

导入公钥的命令如下

cert import <alias> <path+filename> <keystore password>

OPEN AS2也提供了快捷的脚本 import_public_cert.sh ,使用方法如下

import_public_cert.sh <src certificate> <target keystore> <cert alias>

测试

分别启动OpenAS2-01、OpenAS2-02,但启动第二个实例发现连接数据库所用的9092端口被占用了,这时将其中一个的config.xml中的9092改为其它端口即可。

在OpenAS2-01/data/toCDEE2B/目录下添加任意文件

echo "test openas2..." > test.xml

马上会看到 Message sent and MDN received successfully 提示发送成功并接收到回执。

此时进入OpenAS2-02/data/CLINFLASH-CDEE2B/inbox目,发现刚才接收到的文件 test.xml-O[email protected]CLINFLASH_CDEE2B 。

至此,从CLINFLASH向CDEE2B传输测试成功;同样的,CDEE2B向CLINFLASH传输文件测试下来也没有问题。

6.总结

到目前位置,关于OPEN AS2基本的使用上面以及都有提及,但OPEN AS2的功能远不止这些,如日志、数据库记录、邮件服务等细节问题还需要根据实际项目需要进一步实践。

原文地址:https://www.cnblogs.com/rgzngf/p/12568536.html

时间: 2024-11-13 09:27:08

关于标准EDI/B2B标准的简介(二、AS2传输模式)的相关文章

关于标准EDI/B2B标准的X12标准(一)

一.前言 上一篇文章我降到了AS2的传输模式,本篇我着重讲一下EDI X12标准,尽量把它说的比较明白,而X12包含的种类报文,比如订单.出货.发票等等,我打算下一篇讲,一个个的讲,当然,仅仅限于我比较熟悉的 二.EDI X12标准的传输流程 这个我没在网上找到现成的,那只能自己划,以订单为例 1.订单X12 850生成后通过加签加密生成EDIINT 上一篇有说加签加密的事情) 2.发送EDIINT到对方EDI系统 3.对方接到EDIINT后会回复EDIINT MDN,如果回复的MDN正常,代表

TCP/IP协议简介(二) 之 链路层介绍

链路层介绍 一.简介 上一节已经介绍过,网络层协议的数据单元是 IP 数据报 ,而数据链路层的工作就是把网络层交下来的 IP 数据报 封装为 帧(frame)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层. 为达到这一目的,数据链路必须具备一系列相应的功能,主要有: 将数据封装为帧(frame),帧是数据链路层的传送单位: 控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配: 在两个网络实体之间提供数据链路通路的建立.维持和释放的管理. 数据帧的结构是这样的: 二.控制帧的传输

标准ACL ,标准命名ACL,扩展ACL,扩展命名ACL

实验01: 一.标准ACL 二.标准命名ACL 实验目标:熟悉掌握标准ACL与标准命名ACL的配置以及二者的区别 实验环境: 实验步骤: 一. 1.    按图所示组建网络环境 2.    配置路由器的接口网关 3.    配置PC的IP及网关 4.    实现PC0不可以与PC3通信,PC1.PC2可以与PC3通信 将ACL应用于接口 5.    验证主机之间的通信情况 PC0不可以与PC3通信 PC1.PC2可以与PC3通信 二. 1.将之前的标准ACL删除 全局:no access-lis

2017新农合最新政策:报销比例、报销范围、报销标准及补偿标准

2017新农合最新政策:报销比例.报销范围.报销标准及补偿标准 2017年新农合报销比例是多少? 一.新农合门诊报销比例 1.农村卫生门室.卫生所报销比例60%: 2.镇卫生院报销比例40% 3.二级医院报销比例30% 4.三级医院报销比例20% 5.镇级合作医疗门诊报销限额5000元/年. 二.新农合住院报销比例 1.镇卫生院报销60%: 2.二级医院报销40%: 3.三级医院报销30%. 三.新农合大病报销比例 1. 门诊统筹乡.村补助比例分别提高到65%.75%. 2. 一级医疗机构住院费

WEB标准一:标准定义、好处、名词解释、常用术语、命名习惯

1. WEB标准是什么? “WEB标准”是一系列标准的总称.一般的误区经常把WEB标准说成DIV+CSS.准确的说法应该是:采用W3C推荐的WEB标准中的XHTML1.1结合CSS2.0 样式表制作页面的方法.DIV 应该指的是XHTML标签,而CSS 指的是样式表. 2. 采用WEB标准开发的好处 2.1 节约运营成本   2.2 用户友好性 2.3 内容跨平台的可用性 2.4 加快页面解析速度 2.5 更良好的用户体验 3. 名词解释 1. 横切 页面中950px宽并且对高度没有限制的容器称

STL笔记(6)标准库:标准库中的排序算法

STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew Austern http://www.cuj.com/experts/1908/austern.htm?topic=experts 用泛型算法进行排序    C++标准24章有一个小节叫“Sorting and related operations”.它包含了很多对已序区间进行的操作,和三个排序用泛型

符合w3c标准的html标准需要注意的地方

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <he

GNU C 、ANSI C、标准C、标准c++区别和联系

GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的.它的目标是创建一套完全自由的操作系统.它在编写linux的时候自己制作了一个标准成为 GNU C标准.ANSI 美国国家标准协会,它对C做的标准ANSI C标准后来被国际标准协会接收成为 标准C 所以 ANSI C 和标准C是一个概念 总体来说现在linux也支持标准C,以后标准C可以跨平台,而GUN c 一般只在linux c下应用 18.1 ANSI C和标准C++的差别 这里的ANSI C指的是

Application简介(二)--重写应用程序的生命周期事件

Application类为应用程序的创建和终止.低可用内存和配置改变了事件处理程序,通过重写以下这些方法,可以为上述几种情况实现自己的应用程序行为: 1.onCreate:在创建应用程序时调用这个方法.可以重写这个方法来实例化应用程序单态,也可以创建和实例化任何应用程序状态变量或共享资源. 2.onLowMemory:这个方法一般只会在后台进程已经终止,但是前台应用程序仍然缺少内存时调用.可以重写这个处理程序来清空缓存或者释放不必要的资源. 3.onTrimMemory:作为onLowMemor