技术开发 频道

业务建模七大关键应用场景

【IT168 专稿】    WebSphere Business Modeler是IBM 业务流程管理解决方案重要产品之一,企业业务人员利用它对业务流程进行建模、设计、仿真、分析、优化并生成报表,还可以把业务流程导出到开发工具中对流程进行进一步实现和运行监控。此外,从Modeler 6.2版本开始,Modeler还支持了对运行时引擎的直接部署。

    本文以一个典型的银行信用卡申请的处理流程为背景,以Modeler使用中七个关键的应用场景为章节,重点介绍使用Modeler过程中的一些非常好的实践和使用经验的总结,能够帮助业务人员很快的了解Modeler的产品定位和主要功能,并运用到实践中。

1. IBM业务流程管理和Modeler建模

    IBM WebSphere面向服务的业务流程管理(Business Process Management,BPM)解决方案为企业管理人员实现业务随需应变,提高生产效率的目标提供强有力的基础平台。在IBM WebSphere业务流程管理解决方案中,核心的主要产品包括WebSphere Business Modeler(Modeler)、WebSphere Integration Developer(WID)、WebSphere Process Server(WPS)和WebSphere Business Monitor(Monitor)。这几个产品分别满足业务流程的建模优化、组装实现、部署执行和指标监控四个流程管理关键的四个层次上的需求。他们之间依次输入输出,整体构成一个业务流程管理的闭合环路。通过这一个循环的反馈,企业能够根据自身业务流程特点,准确识别企业运行过程中存在的种种问题,并快速适应外界环境的变化。

    流程建模实质是业务人员用软件的形式描述企业的业务模型,包括业务活动之间的序列关系,定义流程涉及到的资源和人员,帮助业务分析人员识别流程中的瓶颈,从而为流程优化奠定良好基础。Modeler即是业务人员用来对业务流程进行建模的工具,它构建于Eclipse平台之上。业务人员通过Modeler对业务流程进行建模、仿真、优化并生成报表。Modeler可以看成是连接业务人员和IT人员的桥梁,更懂得企业的需求的业务人员设计并优化流程,然后在IT人员的帮助下将流程实现并部署在运行环境中。部署的过程有两种途径,一种是通过WID进一步实现再部署,另一种是Modeler直接部署。下图1.1即是一个各个产品相互连接构成BPM解决方案环路图。

图1.1 IBM WebSphere BPM产品集成示意图

    本篇文章重点介绍对运用WebSphere Business Modeler过程中的非常好的实践。这些非常好的实践和我们在帮助文档中的不一样,更多的是使用经验的总结,能够帮助业务人员很快地了解Modeler的产品定位和关键的功能点,并运用到实践中。本文以Modeler 6.2为介绍对象,引用一个银行信用卡申请处理流程为背景,讲解Modeler在信用卡申请的案例中的应用。

    本文主要从以下几个方面来介绍:

    1. 业务建模

    2. 仿真分析

    3. 报表功能

    4. 导入和导出

    5. 和开发工具WID的集成

    6. 流程向WPS的直接部署

    7. 和监控工具Monitor的集成

2. 场景一:业务建模

    流程建模的过程就是将企业流程管理涉及的元素,比如流程、数据、角色、资源、组织等通过定义和图形的形式表示出来。Modeler通过使用标准化的元素,使所创建的业务流程保持一致性并且更加易于理解。常见流程建模对象包括流程,各种任务、循环、存储库、服务以及控制节点比如决策、合并等。Modeler流程建模的过程比较简单,主要操作从画板里拖拽出自己需要的元素即可,使用流程画板提供的基本元素即可以组装出用户常见的各种业务流程。

    Modeler根据用户不同角色提供了不同的建模视角,例如初级的视角为用户屏蔽掉很多技术的细节,高级的用户能够设置更多的流程和数据模型的技术细节。

    业务人员在设计流程的之前,推荐的方式是与企业IT架构师或咨询人员一起确定下来流程中哪些任务将来可以做成服务,或者利用企业已有的服务,在Modeler中设计成可以共享的全局任务或服务。IT人员可以将这些业务流程以Web Service的形式实现以供在运行时直接调用。

    为了使业务流程的各个属性更加直观易读,用户还可通过使用颜色、标签以及泳道布局能功能。

图2.1 Modeler流程编辑图

    像很多常见的软件开发工具一样,Modeler对模型信息支持存储库和文件的多用户共享。通过连接CVS或ClearCase,可以进行共享、版本比较、跟踪报告、同步、更新等操作。

    除了支持常见的版本控制功能,Modeler同时提供丰富的企业内部建模相互合作的功能。Modeler发布包括一个Publishing Server版本,在用户安装好服务器端的Publishing Server以后,业务人员可以将建好的模型发布到网络中,其他的业务人员可以通过网页去浏览发布的流程,并发表评论。除此以外,Modeler也可以将流程通过RAM以Asset的形式在企业内部共享。

    Modeler流程可以模型化现实业务中形形色色的各种流程,有的时候需要利用工具的使用技巧去达到目的。比如,借助于本地存储库( Local repository)去实现外部流程和循环内流程之值传递,从而达到控制循环的流程。

    例如,在信用卡审批流程中,信用卡有一个征信的子流程要实现这样一个利用循环的场景。客服人员需要给客户打电话,当电话接通后,客服人员将客户的反馈记录下来,如果电话不通,客服人员隔四个小时再打。这可以借助于While Loop来实现。While Loop的循环条件是客户应答存储库的值不为真。父流程包括一个本地存储库,它包含了传递到循环内部的客户信息。循环里的第一个任务可以从存储库读取数据,客户应答任务的输出给存储库赋值。

图2.2 信用卡通知客户循环子流程

3. 场景二:仿真分析

    流程优化是建模的主要目的之一,仿真分析是优化的前提,同时对于理解业务流程非常重要。仿真功能是Modeler一个很重要和有特色的功能。现实的情况是用户因为业务流程的复杂性,往往对自己建好的模型不够了解。比如流程分支一共有多少种可能性,每一个分支成本的差异等。仿真分析的功能让用户能从成本、时间、分支等多个角度验证流程,评估流程的性能,对流程的模拟执行生成统计分析,从而帮助用户找到流程中的瓶颈并加以优化。

    运用仿真比较典型的场景是用户首先创建一个现实中流程的现状模型(AS-IS Model),然后通过Modeler进行分析优化,针对已有流程的缺陷提出流程改进方案,得出一个期望部署实现的模型(To-Be Model)。Modeler提供了两个模型间的的对比分析功能。

    在用户使用仿真过程中,最大的困难是仿真之前工具提供的看起来纷繁复杂的设置项。以下就把主要设置项列表如下,对于其他设置,若没有特殊需求,可以保留默认值。

表3.1 仿真主要设置表

常用的仿真设置项作用描述
任务的成本,持续时间,盈利(Task cost,Duration,Revenue)设置任务的时间,成本等属性。这些值是仿真计算的主要依据。
输出路径选择方式(Method of selecting an output Path)流程遇到分支所基于的原则,包括概率和表达式的选项。基于概率的模拟能更快地设置和运行模拟。基本表达式可以更精确的表达业务规则。基于表达式的模拟中,流程根据业务项的属性和表达式设置选择分支。
输入的设置(Token creation)设置流程输入的数据属性。包括输入的数量,分组,也可以设置基于一个特定的时间表或某一特定的概率分布来输入。
将资源的时间需求用作任务处理时间(Use resource time required as a task processing time)使用资源需求时间来决定每个任务的持续时间,覆盖针对该任务本身设置的持续时间值。
任务的输入输出业务项设置(Task Ouput Business item)对于全局或局部任务,用户可以指定其仿真时地输出规则。例如,按照一定的概率分布输出特定的业务数据项。
随机数种子值(Random Number Seed)允许复制特定模拟结果的任意数字。每次运行模拟时,该数字都会发生变化。
使用Form表单(Enable Form. Simulation)在基于表达式的仿真过程中,人工任务可以启用Lotus Viewer来让用户填入输出。

    在进行仿真设定时,Modeler支持多种数据分布的设置作为数据输入,包括指数分布、Gamma分布、统一分布、加权和随机数列等。例如,本案例中可以采用概率论中的泊松分布来模拟信用卡中心每天收到的客户申请之间的延迟时间。

    Modeler的分析功能分析可以分为静态分析和动态分析。静态分析是对模型使用的原始数据进行归纳总结,例如比较建好模型中分析出资源的相关信息属性。而动态分析是从多次仿真运行的实例结果中进行分析,例如分析流程在多个数据项启动的多个实例中运行的平均成本的时间,流程的运行中的关键路径、最短路径等。基于仿真模拟运行结果的动态分析对各种业务流程提供了强大的分析计算功能。

    流程中使用数据驱动对用户使用仿真功能来说是比较困难的地方。所谓数据驱动,是用户在仿真过程中根据流程中数据项的属性使用表达式的驱动流程运行。仿真设置两个比较实用的技巧是对于Map任务节点的使用和Human Task节点。Map节点能够对两个不同数据类型的数据进行连接,用户可以定制连接的属性,这个节点在仿真是支持的,在实际的流程中会频繁用到。另一个是人工任务节点,在使用Form的情况下,它可以将数据项的输入展示出来,用户可以利用这个结点作为一个调试的功能来检查仿真时一些节点的输出是不是期待的结果

    在本案例的信用卡审批流程中,对于一个用户资料是否完整的决策节点,我们即可以根据概率设置80%选择资料完整的分支,也可以设置表达式完全取决于决策节点输入数据的属性来决定分支。仿真的过程根据用户的选择对这两个设置进行取舍。

图3.1 决策节点的概率和表达式设置

    仿真运行的结果以表格的形式显示出来,用户也可以将结果导成文本或Excel等格式。本例中的银行的信用卡审批流程,用户可以模拟用户在1000个卡申请请求发出后,所有可能的路径以及各种情况所消耗的平均处理时间和平均成本如下图3.2所示。

图3.2 仿真动态分析流程可能性分析结果

    在对已有流程进行分析后,用户会去试图对流程进行调整优化,比如调整节点的批卡率、应用新的自动业务规则以减少人工开支等。在相同输入的情况下,用Modeler重新仿真运行,并且和刚才的运行结果进行对比分析出平均成本和时间的变化,如下图3.3所示。

图3.3 改进前后动态对比分析结果

4. 场景三:报表

    报表是用户常见的一个需求,业务人员期望通过报表把流程和业务模型信息从不同的角度展示出来进行查看、分享和打印。Modeler为用户提供了丰富的多种预定义形式的报表模版,用户可以使用这些模版来生成基于某一个流程模型的报告,用户也可以设计自己的报表模版。

    报表功能使用的基本过程是用户首先定义一个报表的模版,报表模版的设计是通过报表模版设计器来完成,用户选择报表所需的数据源(Data Source)中的数据项(Data Field)并拖拽到模版中,再去绑定一个特定的项目对象来生成报表。用户最终可将报表导出pdf、docx等多种格式,也可以直接预览打印。此外,Modeler还集成了水晶报表(Crystal Reports)的功能,用户把Modeler提供的数据项导出成水晶报表所支持的数据对象,利用水晶报表强大的编辑能力完成模版定义,再在Modeler中与流程项目数据绑定,生成报表。

    Modeler中生成报表的位置可以在项目树上创建,也可以在流程图中,查询结果视图和仿真分析结果中生成。为了帮助您快速的设计美观,专业报表模版,下面是使用报表功能时常见的一些注意事项和技巧以供参考。

    (1)在开始编辑报表模版前,最好能提前好规划报表所需数据项的细节。可以先查找一下有没有合适的预定义报表模版可以借鉴。在创建报表的时候,把预定义的模版内容拷贝出来进行修改,可以起到事半功倍的效果。

    (2)许多企业都有统一的报表基本“框架”信息。例如,所有类型的报告中都需要包含一个一致的首页内容。用户通过构建包含这些共同元素的通用报告模版,在想要创建更具体的报表时,复制这个模版。如果用户期望多个报告模版中的所有页面使用相同的页眉和页脚信息,例如公司名称或页码信息等,那么可以创建一个包含这些信息的主报告样式(Style. Master),然后将这个主报告样式应用到相应的报告模版上。主报告样式其实可以被看作是一个报表模版的模版。

    (3)用过报表功能的用户,可能对于Data field复杂性有所了解,用户往往期望跨多个数据源的进行报表生成。用户可以利用报表导出成Word.docx格式的方法。用户可以先创建不同的报表利用不同的数据源,再将报表导出成.docx到Word中.然后就可以将报表内容进行合并了得到同一个报表.

    (4)报表编辑器中的组元素是在报表模版的编辑中是有个很有用的功能,它能够用来帮助用户对报表数据进行划定范围、组织和排序。

    例如,在本信用卡的流程中,为用户定制通用的报表模版,具有统一的包含页码和日期信息的页眉显示。用户想在一页的报表中显示出流程中用到的所有人工任务的信息,如下图4.1所示,在报表编辑器中将数据项的信息拖拽到报表中。同时将组(模版编辑器中红色框图显示)放到相应的数据项字段。对报表模版绑定流程对象并创建报告,发即可生成如下期望的报表页面。

图4.1 报表编辑器和生成报表截图

5. 场景四:导入和导出

    WebSphere Business Modeler作为BPM的建模工具,不仅强调业务人员之间的协作,重用现有的和已存在的业务流程模型,节省企业在流程创建和整合的成本,准确把握业务需求和明确业务目标。同时也强调业务人员和IT人员之间的协作,让IT人员在实施过程中也能够直接利用其工作成果,进一步提高开发工作效率,降低实现和维护成本。为此,Modeler提供了丰富的导入导出方式供用户使用。

    Modeler支持多种文件格式的导入,业务人员既可以很方便地导入以各种形式存储的流程和数据模型,实现业务模型的重用和共享,也可以将企业流程的具体实现中的一些元素直接引入到自己的流程模型中。下图展示了Modeler支持的各种导入方式依据其在建模过程中的作用的分类。基本可以分为业务模型重用或共享、以及业务模型完善两类。

图5.1 Modeler的各种导入方式

    其中,业务模型的重用或共享包括了数据模型和流程模型的重用和共享。通常业务人员需要利用现有流程来把握业务需求和目标。而在将流程管理应用到实际流程中之前,业务人员需要依据IT人员提供的实现技术细节和属性来进一步完善业务流程模型。因此业务人员可以通过Modeler提供的导入方式来引入现有的业务模型和相关的实现技术细节。

    除了在业务人员之间,包括业务分析人员、业务主管之间,实现业务模型共享。业务人员还可以在Modeler中,利用相关的技术特性和细节,对业务流程模型进行细化,并利用导出功能将业务流程模型转换为技术设计模型给IT人员。类似地,我们可以将Modeler各种导出方式,依据其功能进行分类:

图5.2 Modeler的各种导出方式

    同样地,业务人员可以通过导出Modeler业务模型来与其他业务人员共享,也可以通过导出将完善的业务流程模型转换为IT设计模型,提供给相关IT人员。而IT人员将在此基础上实现业务流程。

    结合上述的信用卡申请流程实例,让我们来看看Modeler的导入导出功能如何在BPM生命周期中帮助业务人员和IT人员进行协作。首先,在业务主管和分析人员明确和定义相关业务需求和目标时,我们需要导入已有的业务流程模型。信用卡部门之前一直将相关的数据格式和业务角色都记录在Microsoft Excel中。Modeler支持直接导入Excel中的模型元素,而无需在Modeler中重建对应的对象。下图展示了存储在Excel中的数据模型。

图5.3 存储在Excel中的数据模型

    导入完成后,相应地会为各数据格式和业务角色生成对应的Modeler数据项和角色。接下来,当业务分析人员开始定义和创建信用卡处理流程过程中,可以直接使用这些模型元素并把他们作为流程建模的一部分。

图5.4 从Excel导入到Modeler中的数据

    业务人员可以利用Lotus Form的Designer来设计人工任务(Human Task)的交互表单和操作界面。完成表单设计后,业务人员通过Modeler的Lotus Form导入功能将生成的表单描述(xfdl)文件通过Modeler Lotus Form导入功能转换为Modeler中的Form对象,添加到人工任务的属性中,供系统在制定人工任务的交互界面时使用。例如在本案中,图5.5是一个为客户网上提交信用卡申请所设计的表单界面。

图5.5 Lotus Form. Designer设计完成的表单

6. 场景五:与实现工具WebSphere Integration Developer的集成

    如前所述,业务人员可以将其设计好的业务模型,通过Modeler的WID导出为技术设计模型(WPS Module project),再由IT人员导入到WID的工作空间中进行完善和实现。在将BPM方案实现之前,IT人员和业务人员之间会针对业务模型的变化或者技术实现的变化进行协作,保持两者之间变更的同步。Modeler为用户提供了两种同步方式:通过WID导出功能以及比较合并功能来保持同步;或者通过Rational Asset Manager来管理两者的同步。这里将主要分析常用的通过Modeler WID导出功能来保持同步。

    需要指出的是,Modeler的WID导出支持多种不同格式,以适应不同的需要。Modeler的推荐格式是将模型导出为业务逻辑模块,实现模块以及应用库三个项目。这其中,业务逻辑模块项目中包含了除具体实现之外的业务逻辑和业务规则;而实现模块项目中包含了针对业务模型中抽象模块的具体的实现;至于应用库项目则是存放所有共用的接口描述文件和数据模型。通过这样的导出结构可以很好地将业务逻辑的变更与具体实现分离,从而将任何变更带来的影响降低到最小。

图6.1 Modeler WID导出向导

    这里我们先将前面完成的信用卡挂失流程导出到WID的工作空间。假定业务人员发现需要对部分流程做出修改,并希望能够以某种方式通知IT人员,而IT人员能够以较小的代价,将这些变化尽快体现在他的技术设计模型中。

    通常在将BPM技术应用到流程中的阶段,业务流程模型和技术设计模型的完善需要业务分析人员和IT架构人员多次反复进行协作。为了更有效地完成这一迭代过程,WID提供了同步功能。在业务流程模型导出为技术设计模型,并加入到WID的工作空间后,如果业务人员在对Modeler模型做了一些修改,并重新导出。IT人员获得再次导出的更新后的模型时,可以有选择性的接受并自动更新流程的修改。反之,IT人员也可以在WID中对技术设计模型进行修改之后,将修改后的模型与前期导入的模型进行比较,生成一个变更报告返回给业务人员。业务人员在Modeler一端可以导入这个报告,帮助它在Modeler对流程进行同步修改。这样,业务人员和IT人员可以通过这样的协作方式,对业务或实现上的变更进行同步。

7. 场景六:向运行服务器WebSphere Process Server的直接部署

    在上述BPM生命周期中,最大的挑战在于如何有效地保持业务流程模型和技术设计模型之间的同步。虽然Modeler和WID提供了多种机制来帮助用户进行此类同步,由于技术上的局限,目前业务分析人员无法直接将技术设计模型中的变化导入。因此随着变更的产生,业务分析人员与IT架构人员之间的协作将变得越来越困难。这也使得整个BPM生命周期过于复杂和冗长。

    为此,从Modeler6.2开始,业务分析人员在完成业务流程模型后,只需要IT人员有限的协作,就可以将业务流程直接向WPS服务器部署,以验证业务流程模型的正确性。通过引入直接部署,使得业务人员和IT人员的分工更加明晰:业务分析人员能够更专注于创建业务流程模型本身,IT人员则致力于为流程测试和运行提供必要的环境和技术支持。这一方面极大地减少了由于保持业务人员和IT人员的同步所带来的成本。另一方面,也改变了BPM生命周期中,业务人员和IT人员的协作方式,大大缩短了企业业务流程从设计,分析到上线部署的时间。完成流程直接部署主要分为以下两个步骤:

    (1)流程和环境准备。用户用Modeler创建流程并定义相关的KPI度量值,利用Modeler的验证功能来确保流程符合直接部署的条件。IT人员创建运行时环境,包括WPS,Monitor,Business Space,WSRR等多个服务器端产品。IT人员安装好环境以后将配置XML文件导入业务人员使用的Modeler去指定直接部署中的运行时服务器。IT人员还可以对流程中一些自动化任务通过Web service实现以在运行时被调用。

    (2)直接部署运行。业务人员在Modeler中对流程进行直接部署操作。流程会直接部署到配置文件中指定的各个服务器上去。业务人员通过登录业务空间浏览器(Business Space)去触发流程的运行。业务人员同时能够对流程进行调试和测试运行,监控流程的运行状况,查看运行时这些业务度量的值。当流程运行遇到问题的时候,业务人员可以很方便的通过点击按钮将相关的流程状态信息和日志打包发送给IT人员协助解决。

图7.1 直接部署的基本流程

8. 场景七:与监控工具WebSphere Business Monitor的集成

    业务流程在WPS上布署运行之后,业务人员为了实现业务流程管理,可以利用WebSphere Business Monitor从流程运行中获取流程运行状况信息,观测所提供丰富的监控内容。业务流程管理极为重要的一步是关键业务指标(Key Performance Indicator,KPI)和业务度量(Metric)的定义。在WebSphere Business Modeler中业务人员可以对这两类业务度量信息分别进行定义,生成业务流程的监控模型(Monitor Model)。

    KPI是对于当前企业运营流程的度量,它通常是从高层描述了企业运营的某一个方面,如信用卡申请中的业务增长率和不良信用者申卡率等。KPI通常可以使用数值来度量,并且业务人员会为其设定变动的上限和下限范围。业务度量值则是对于KPI的细化,它代表了一个可独立计算的数据项,但是可能在业务上并没有明确的含义,如信用卡申请流程的启动时间和结束时间。通常而言,每一个业务度量都代表了一次业务流程执行实例的特定指标,而关键业务指标则是对于这些指标的统计度量。

    在Modeler所定义的监控模型中,主要包括KPI,流程实例度量值以及聚合度量值。另外,还包括了业务度量对输入事件的依赖、保证业务操作的条件,以及报告此类条件并且可能触发业务操作的输出事件,以及维度等信息。维度是在定义监控模型时很重要的一个概念,它是为了分析数据的方便,业务人员可以定义选择和展示业务度量值的数据类别,如时间、帐户、产品和市场。

    Modeler可以将监控模型的从Modeler传递到监控工具集中的监控模型编辑器( Monitor Model Editor,MME )中进行进一步的完善。同时,业务人员还可以在Modeler中指定需要从运行时收集导回到流程模型的数据项,例如特定过程的任务持续时间和某一分支的决策概率等。在过程模型在部署执行一段时间后,就可以从Monitor中将这些值导出为XML文件,然后重新导入Modeler以进一步更新流程,从而能进行更准确的模拟。

    Modeler定义的KPI和度量值从Modeler 6.2开始也可以直接部署到Monitor 服务器上。业务人员在直接部署以后,登录业务空间以后可以直接查看运行时这些业务度量的值并在过程运行时配置各个仪表板视图。推荐用户在定义度量值时使用预定义的一些模版定义,使用这些模版通常不需要在MME中进行修改。另外,Modeler还为用户提供了一些常见的工业界的监控模型,主要是KPI的定义库,用户可以直接参考使用。图8.1即为Modeler提供的工业KPI库截图。

图8.1 工业KPI库

    在业务人员定义监控模型之前,推荐的思考过程是回答如下几个问题,需要收集什么样的信息,用怎样的信息或变量去定义。类似于以下的一个表格,通过这个表格,业务人员能够决定它需要从流程中定义怎样的监控模型。在本案的信用卡申批流程中,我们可以用如下表格去设计监控模型的定义。

表8.1 监控模型的定义需要考虑的问题列表

回答的问题需要的信息Modeler中如何定义监控模型
某一个信用卡的申请是否被批复?信用卡申请的批复结果Instance Metric
申请卡的用户来自哪个城市?信用卡申请的城市属性Instance Metric
 一个月有多少用户提交了申请?申请卡的总数Aggregated Metric
其中有多少批卡申请被批准?批卡的总数Aggregated Metric
批卡的比率是多少?批卡比率KPI
信用卡从申请到批准要用多长时间?批卡平均处理时间KPI
业务客户资料不全的情况比率拒绝卡的比率Monitor Value
信用卡一共要消耗多少资源?申请平均处理成本Monitor Value

9. 小结

    本文的主要目的是帮助业务人员很快地了解Modeler的产品定位和主要功能,并运用到实践中。通过本文对WebSphere Business Modeler七个关键应用场景的介绍,读者应该对Modeler的为业务人员所提供的主要功能有了较深入的认识。通过文中引用典型的银行信用卡申请处理流程中在各个功能中的应用,希望读者能够更容易理解本文中提到的一些使用技巧和实践经验。

10. 参考资源

    · IBM WebSphere Business Modeler产品网站,

    http://www-01.ibm.com/software/integration/wbimodeler/

    网站包括Modeler Basic, Advanced和Publishing Server版本的详细功能介绍和技术支持信息。

    ·IBM WebSphere Integration Developer产品网站,

    http://www-01.ibm.com/software/integration/wid/

    网站包括WID版本的详细功能介绍和技术支持信息。

    ·特别感谢Jimmy的帮助,文中的很多内容和图片都来自Jimmy的贡献。

0
相关文章