资源介绍
奥哲 H3 BPM 系统
演示环境操作说明书
深圳市奥哲科技有限公司
二〇一四年十月
目录
1 业务集成 4
1.1 适配器 4
1.2 业务数据库连接 4
1.3 业务服务 4
2 流程模型(流程功能展示) 5
2.1 主数据 5
2.2 表单和控件 6
2.2.1 模版子表 6
2.2.2 表单设计流程 7
2.2.3 显示所有的数据项 9
2.3 办公流程 10
2.3.1 请假流程 10
2.3.2 会议通知 & 通知办理 12
2.4 流程功能 15
2.4.1 流程演示 15
2.4.2 竣工报告审批 17
2.4.3 多人活动 20
2.4.4 出差报销(父子流程) 22
2.4.5 微信通知 24
2.5 业务集成 28
2.5.1 供应商入库/供应商获取 28
2.5.2 审核后创建(WS和DB)/从WebService和DB获取 31
2.5.3 监控并在BPM操作 35
2.5.4 监控业务系统自动发起 35
2.6 外部表单 35
2.6.1 访问WS接口 35
2.6.2 访问API接口 37
2.7 业务规则(选择、排序、脚本) 38
3 业务规则 42
1 演示环境概述
H3 Cloud演示环境分为两部分:
门户: http://120.25.238.237/Portal
登录名 / 密码:administrator@authine.com / h3authine
后台管理:http://120.25.238.237/Portal/admin ,或在Portal页面的右上角,点击用户图标(管理员),选择“后台管理”
登录名 / 密码:administrator@authine.com / h3authine
2 业务集成
2.1 适配器
H3默认提供的适配器列表,并可支持拓展开发适配器,并注册到H3系统中;
2.2 业务数据库连接
目前演示环境中使用到的数据库连接配置
2.3 业务服务
业务服务列表管理中,支持以下几种应用:
1. 新建文件夹:支持把同一个业务所使用的业务服务进行归类管理;
2. 新建业务服务;
3. 上传业务服务;
那么,在本演示环境中使用到的业务服务类型有:Data Table、WebService、Data Sql,详细的业务服务的使用,请参考《H3实施开发手册》。
3 流程模型(流程功能展示)
3.1 主数据
功能展示
主数据的维护和查询。
主数据可以有以下两个来源:
来源于业务系统,通过业务服务来读写业务系统的数据;
存储于H3系统,通过H3的表单进行维护数据;
主数据被流程表单中字段的开窗使用;
业务场景
在实际业务中,会涉及到业务表单使用的公共基础数据,如简单的省份、城市、学历等等数据,以及跟生产相关的物料名称、供应商信息等来自于第三方的数据;
设计过程
来源于第三方的业务系统:通过绑定业务方法,读写第三方数据库;
来源于本地系统的基础数据维护:
演示过程
1. 主数据可以【绑定业务服务】和【绑定业务规则】
2. 主数据中定义的【查询列表】,供流程包中的表单调用
3.2 表单和控件
3.2.1 模版子表
功能展示
这个流程是自定义表单,展现的是基于子表控件自定义开发的个性化子表,子表类型SheetGridView的使用;
业务场景
使用子表数据项的场合,使用子表控件来呈现自定义的效果。
设计过程
使用自定义表单实现;
演示过程
在Portal门户的流程中心中发起【表单和控件->模版子表】流程,在表单中点击子表的添加按钮,查看新增行的子表效果;
3.2.2 表单设计流程
功能展示
展示开窗查询;
展示联动查询;
字段的自动运算;
字段的显示/隐藏控制;
子表的开窗查询和自动计算;
子表的联动查询;
字段的正则表达式的验证;
业务场景
根据实际业务需求,部分数据来源与主数据信息,用户可以根据选择的项目,并把对应项目的详细信息加载到表单相应字段中;
设计过程
以下功能都是基于默认表单配置实现,请在在Portal/admin中查看【表单和控件->表单设计流程->默认表单】,点击每个控件,观察每个控件设置的属性值
1. 开窗查询: 字段【编码】
说明:SchemaCode的值来源于“主数据”,QueryCode来源于“主数据”中定义的查询列表;OutputMappingString的值是要加载的表单字段信息来源;
2. 联动查询: 字段【省份】、【城市】、【区县】
3. 字段运算:字段【营业额】的设置
4. 字段隐藏控制:“类型”字段,当选择“其它”时,可以显示“其它”文本框;
5. 子表中同样可以实现“开窗查询”、“字段运算”;
子表中同样可以实现“联动查询”;
6. 字段正则表达式的验证;
演示过程
1. 演示开窗查询
在表单中选择字段【编码】,可以弹出查询窗口,选择值后,且可以自动带出相关字段的值;
2. 联动查询
选择不同的【省份..城市..区县】,观察选择不同数据项时的区别;
3. 字段的计算
【利润】=【营业额】-【成本】;
4. 字段隐藏控制:【类型】字段,当选择【其它】时,可以显示【其它】文本框;
5. 子表中同样可以实现“开窗查询”、“字段运算”;
子表中同样可以实现“联动查询”;
6. 字段正则表达式的验证;
3.2.3 显示所有的数据项
功能展示
展示H3表单控件的使用。
业务场景
使用H3表单控件实现默认表单的显示效果。
设计过程
以下功能都是基于默认表单配置实现,请在在Portal/admin中查看【表单和控件->显示所有数据项->默认表单】,点击每个控件,观察每个控件设置的属性值
演示过程
在Portal门户的流程中心中发起【表单和控件->显示所有数据项】流程,在表单中,展示各个H3表单控件的使用,如:整数&数值型,输入字符的自动验证;
3.3 办公流程
3.3.1 请假流程
功能展示
1. 表单:字段的控制:
当请假类型选择“病假”的时候,必须提交“附件”才能提交流程;
请假开始时间的选择,只能选择当前日期之后的日期;
请假时间可以自动计算出结果;
2. 流程:路由控制
根据员工级别&请假天数判断路由;如:普通员工并且请假天数大于2天时,需要总监审批;
3. 数据字典的应用:表单中的【假期类型】信息,来源于数据字典;
业务场景
典型的请假流程的控制;数据项、流程路由
设计过程
在Portal/admin中查看【办公流程->请假流程->默认表单】,点击每个控件,观察每个控件设置的属性值,如:
请假类型的属性
请假时间的属性
演示过程
1. 字段【请假类型】,选择“病假”,点击提交,注意弹出的窗口提示信息。
2. 字段【请假开始时间】,只能选择今天或今天以后的日期;以及【请假天数】的自动计算;
3. 请选择不同的请假时间,观察流程的审批参与者变化;
3.3.2 会议通知 & 通知办理
功能展示
典型的父子流程,且两个流程分别在不同的流程包中。另外一种父子流程的展现方式,请参考【流程功能->出差报销】的父子流程;
【会议通知】中已选择的“参会单位”,才能在子流程【通知办理】中接收消息;
【会议通知】的表单字段“会议时间”类型,该控件精细到时分;
自动启动子流程【通知办理】,并可通过日志中,钻取子流程的流程监控图。
业务场景
在流程设计中,子流程可能需要用到父流程的数据,设计流程时可以设置数据项来源于父流程。如【通知办理】子流程的“会议内容”来源于父流程【会议通知】的“会议内容”数据项,可以对数据项的来源进行配置。
设计过程
子流程分属于不同的流程包,2条流程如需建立关系,需通过“数据映射”建立父子流程的联系;
参与者函数:获取指定组织所在组织架构的指定名称的用户组,如:查找查找表单中已选择的部门下面的“联络员”;
演示过程
1. 在Portal门户的流程中心中发起【办公流程->会议通知】流程,请注意(目前DEMO中,生产一部&生产二部 >> 联络员组)才有具体联络人,因此,需要展示效果,请至少选择一个部门;
2. 继续提交流程,并观察流程监控图中的信息,找到子流程【通知办理】的接收人;
3. 以【会议通知办理】中的参与者用户名登录Portal门户,在【待办任务】中找到由父流程触发的待办任务信息,查看表单中由父流程带过来的内容;
3.4 流程功能
3.4.1 流程演示
功能展示
流程设计的各个流程节点的控件、以及流程逻辑中的常用功能展示;
业务场景
常用的流程条件路由、传阅、等待、消息等场景应用;
设计过程
1. 流程的路由:根据表单中是否勾选Checkbox来选择流程路由,如果存在条件路由的情况,是用“虚线”来连接;
2. 传阅的功能:流程执行到“传阅”节点时,使用参与者函数{AllParticipants},传阅到之前参与流程的所有参与者。
3. 等待:检查条件,采用时分秒格式设置,如:"00:01:00"
4. 消息通知:可以选择通知方式,以及设置通知的“消息标题”&“消息内容”。
演示过程
在Portal门户的流程中心中发起【演示功能->流程演示】流程,根据【表单】中的数据项不同,观察流程的路由情况,并且观察各流程节点所使用控件的功能;
3.4.2 电力倒闸流程
功能展示
展示表单的特殊打印效果:打印的表单与流程表单是单独的一个文件;一个表单可以有多个打印页面;
业务场景
业务审批完成之后,需要打印表单,但是表单需要按固定格式打印的场景。
设计过程
扩展设计&制作一个表单格式:
演示过程
在Portal门户的流程中心中发起【业务流程->电力倒闸流程】流程,在表单中可以选择【打印】,输出打印表单的设计格式:
流程表单
打印效果
3.4.3 多人活动
功能展示
在审批环节,在多人会签任务场景时,各种串签、并签的审批效果:
业务场景
实际业务中,在会签、并签、串签、加签等具体的场景中应用;
设计过程
1. 多人串签(可加签)
除流程设计阶段预设的参与者外,还允许在表单中选择更多的参与者,参与者全部通过时,该节点通过;其中有1人不通过,则驳回至上一节点。
2. 多人并签(全部通过)
在流程设计阶段预设的参与者,执行并签(参与者互不影响),只要有1个参与者选择驳回,则系统自动取消其它未审批的流程,直接驳回至上一节点。
3. 多人并签(1人通过)
在流程设计阶段预设的参与者,执行并签(参与者互不影响),只要有1个参与者选择提交(同意),其它参与者可以不用再审批,直接流转至下一节点。
演示过程
在Portal门户的流程中心中发起【演示功能->多人活动】流程,结合【流程监控图】,观察流程的执行情况。
3.4.4 出差报销(父子流程)
功能展示
不需要建立数据映射关系,也实现父子流程的目的;
子表中的日期控件,只能选择日期;
子表中默认的下拉菜单列表;
业务场景
在流程设计中,父子流程的数据是来源于同一数据源,且属于同一条业务流程。
子流程可能需要用到父流程的数据,设计流程时可以设置数据项来源于父流程。如“机票预定”流程的“申请人”来源于父流程的“申请人”数据项,可以对数据项的来源进行配置。
设计过程
在同一个流程包中有唯一的数据模型,但是可以新增多个流程&表单;
在设计流程时,可以使用同一个流程包下面的流程,作为子流程;
表单控件,在默认表单页面中,即可配置出来;
演示过程
1. 在Portal门户的流程中心中发起【演示功能->出差申请】流程;
2. 审批环节流转至【子流程:报销流程】时,自动发起【报销流程】,并可看到【出差申请】中填写的数据;
3.4.5 微信通知
功能展示
在Portal中发起流程,“微信”能够收到H3系统通过微信的公司企业号推送的通知消息,发起流程后,可以在手机中收到通知,并可以在微信中实现审批功能。
业务场景
业务表单绑定微信号的消息通知;
设计过程
演示说明:请使用各自的用户名登录Portal发起流程;
演示过程
1. 设置Portal登录用户名及微信号设置,并用自己的帐号登录(每个账户绑定一个微信号);
2. Portal中发起流程
用自己的用户名登录Portal,在Portal门户的流程中心中发起【演示功能->微信通知】流程,点击发起后。如图:
3. 填写【微信通知】表单,并提交,可以在自己的微信中,收到H3系统推送的任务消息;
4. 手机上的微信收到的消息推送界面,并可操作【驳回】、【提交】等操作。
3.5 业务集成
3.5.1 供应商入库/供应商获取
功能展示
通过业务服务(Data Table Adapter),写入、读取、更新第三方数据库(ERP)中的数据表:Vendor 和Material;
通过【数据模型】的【关联关系】,通过1:1或1:N的对应关系把多个【数据模型】关联起来,如:建立Vendor表和Material表的1:N的关系。
业务场景
需要操作数据库表,数据库可以是H3的数据库,或者是第三方的数据;
设计过程
1. 在【业务集成->业务服务】中,建立【供应商信息表】和【Material信息表】的业务服务;
2. 在【流程模型->主数据】中,建立【物料主数据】和【供应商主数据】;
3. 新建流程包【供应商入库】,【数据模型】中需要用到的【业务方法】分别绑定相应的业务服务,如Create、Load、Update、Remove;并新建主从表的【关联关系】;
4. 新建流程包【供应商获取】,【数据模型】中需要用到的【业务方法】分别绑定相应的业务服务,只有Load、Update;并建立主从表的【关联关系】;
演示过程
1. 【供应商入库】:
a) 在Portal门户的流程中心中发起【业务集成->供应商入库】流程,在表单上录入表单信息&物料信息,其中Code为关键字(必填项)。
b) 查询确认:打开【供应商入库】流程,在IE地址栏的URL中加上参数Code的值,如:&Code=ORC,就可以查询到刚才录入的Code值是ORC的记录,以及相关的物料信息子表。
2. 【供应商入库】
a) 从Portal门户的流程中心中打开【供应商获取】流程,在字段Code中输入【供应商入库】中填写的Code值,如ORC,点击保存后,即可查到ID是Code值的表单信息。
b) 此时,可以修改表单的值,提交流程后,可以将新值更新到数据库表;
c) 同【供应商入库】的查询确认,可以在URL中加上Code的参数值,可查询最新数据信息;
3.5.2 审核后创建(WS和DB)/从WebService和DB获取
功能展示
流程包中建立方法,在流程中调用;
采用DB的方法(PRHeader)向第三方数据库插入PR值;
采用WS的方法(PRCreate),更新业务系统的值;
业务场景
业务数据存储在业务系统,在H3系统中创建表单和执行业务审批,审批完成之后,将业务数据回写到业务系统的情况;例如:有些第三方业务系统没有审批流程时。
设计过程
【审核后创建(WS和DB)】的流程包中,定义【创建采购申请】的方法,该方法分别引用:
PRHeader的Create方法,来自于业务服务的【PRHeader表】,属于Date Table的适配器创建;
WS的PRCreate方法,来自于业务服务的【业务系统WS服务】,属于WebService的适配器创建;
【从WebService和DB获取】的流程中,业务方法Load和Update方法,分别绑定PRHeader的Load方法,和【业务系统WS服务】的PRGet方法。
校验PRNumber是否存在的校验:在默认表单中字段【PRNumber】的OnChangeScript属性控制【if(sheet.executeService('ERPSql','ExistsPRNumber',{'PRNumber':'PRNumber'}) == 1){alert('该编号已经存在!');this.value='';}】,来源于业务服务【业务系统SQL服务】的ExistsPRNumber方法。
演示过程
1. 在Portal门户的流程中心中发起【业务集成->审核后创建】流程,填写表单信息后提交,可以在【已办任务】中找到表单,此时,表单中的【Return】的值是“False”。
*如果表单信息【PRNunber】录入的编码已经存在相同的编码,点击提交时将会提示:
*此时,从Portal门户的流程中心中发起【业务集成->从WebService和DB获取】流程,录入PRNumber=【 】并保存,则查不到相关数据。查看流程监控图可知,未执行【审批】和【PR入库】操作。
2. 在【待办任务】中,继续执行流程的【提交】审批操作后,
已经【审核】通过,并且执行了【PR入库】操作。此时,从Portal门户的流程中心中发起【业务集成->从WebService和DB获取】流程,录入PRNumber=【 】并保存,则可查到刚刚录入的【PR】信息;
3. 在刚刚打开的【业务集成->从WebService和DB获取】流程中,可以新增一条PRItems记录,并【提交】。
4. 在【已办任务】列表中,找出刚刚更改的流程任务,打开表单后可确认【Return】的值为“True”:
5. 从Portal门户的流程中心中发起【业务集成->从WebService和DB获取】流程,录入PRNumber=【 】并保存,可以查询得到,新增记录已经记录。
3.5.3 监控并在BPM操作
功能展示
在业务系统创建表单,在H3中审核
1.创建采购单->自动触发H3 BPM的PO流程;
2.在H3中审核当前表单,每次操作后,可以在这里查看业务表单数据状态。
业务场景
H3与第三方业务系统的深度集成,业务系统中有业务表单来触发H3的流程引擎,流程执行在H3系统中,并将每一次的流程状态结果体现在业务系统表单相应的状态中。
演示过程
打开模拟的第三方业务系统的表单;
http://120.25.238.237//ERP/ 【业务系统流程,操作在BPM】,
或直接打开http://120.25.238.237/ERP/POProcess.aspx
1. 录入【显示名称】、【预算金额】,点击【保存】,自动生成【PO编号】。
2. 通过H3系统【定时作业】定义【监控业务系统启动流程】来监控业务系统,每30秒轮询一次,如果有新记录,则执行【启动流程公有云版】的方法;
3. 后续的流程审批操作都在H3系统中执行,H3每个审批节点都会执行【更新状态】的方法来更新业务系统的状态值;
4. 业务系统中可以查看订单流程状态,并可通过【查看流程】打开H3的流程监控图;
3.5.4 监控业务系统自动发起
功能展示
所有的操作都在业务系统中完成
1.创建采购单->自动触发H3 BPM的PO流程;
2.将采购单依次改为->询价、比价、议价、订单下达4个状态,可以将流程触发到不同的环节至结束。
3.议价可以保存至询价环节,将流程驳回询价。
业务场景
第三方业务系统与H3流程引擎的深度集成,流程表单和业务操作都在第三方业务系统中,流程运转使用的是H3的流程引擎。在业务系统中没一个操作步骤,能够在H3的流程监控图中都能体现;
演示过程
打开模拟的第三方业务系统的表单:
http:// 120.25.238.237/ERP/ 【业务系统流程,操作在业务系统】
或,直接打开:http:// 120.25.238.237/ERP/POProcess.aspx
1. 录入【显示名称】和【预算金额】,点击【保存】,会自动生成一个【PO编号】。
2. 随后,H3系统的【定时作业】,会监控ERP数据库中的PO表,新增记录自动触发流程启动;
3. 点击【查看流程】,可看到流程监控图中,流程已经启动;
4. 继续在ERP表单中,采购单依次改为->询价、比价、议价、订单下达4个状态,可以将流程触发到不同的环节至结束,说明:可以通过ERP表单中的【查看流程】或H3 BPM中【流程监控>>进行中的流程】,查看流程流程监控图的变化。
5.
3.6 外部表单
3.6.1 访问WS接口
功能展示
表单在第三方系统,调用H3的提供的Web Service启动、处理流程;
在第三方系统中的【查看流程】,可以直接调阅H3系统的中流程信息页面;
业务场景
在实际的业务应用场景,客户在现有的系统中已经有表单了,不想在H3中再重做表单,但是没有流程功能而需要应用H3的流程逻辑(或者已经有流程功能但功能不够强大,需要应用H3强大的流程逻辑来辅助业务执行),那么,H3可以提供Web Service的流程操作接口,供第三方系统调用,实现流程功能。
设计过程
在第三方系统中,通过调用H3提供的Web Service服务,执行流程的启动、提交、驳回、查看流程等操作。
演示过程
通过2种途径进入流程表单页面:
1. 在Portal门户的流程中心中发起【外部表单->访问WS接口】流程,点击发起后,打开的页面是第三方表单;
2. 进入第三方系统:
a) http:// 120.25.238.237/ERP/ 后选择【Web Service模拟表单】打开:
b) 直接进入表单页面;
http:// 120.25.238.237/ERP/SheetWS.aspx?Mode=Originate&WorkflowCode=PRWS
3. 第三方系统中【提交】流程后,可以在Portal门户首页的【待办任务】和流程中心的【已办任务】列表中,分别看到刚刚从第三方系统发起的流程待办和已办。
4. 在H3中打开任务链接,直接跳转至第三方系统的表单页面中操作,可以执行【提交】、【驳回】和【查看流程】。
3.6.2 访问API接口
功能展示
表单在第三方系统,调用H3系统接口(DLL)启动、处理流程
在第三方系统中的【查看流程】,可以直接调阅H3系统的中流程信息页面;
业务场景
在实际的业务应用场景,客户在现有的系统中已经有表单了,不想在H3中再重做表单,但是没有流程功能而需要应用H3的流程逻辑(或者已经有流程功能但功能不够强大,需要应用H3强大的流程逻辑来辅助业务执行),那么,H3可以提供API接口的流程操作接口,供第三方系统调用,实现流程功能。
设计过程
在第三方系统中,通过调用H3提供的API接口服务,执行流程的启动、提交、驳回、查看流程等操作。
演示过程
通过2种途径进入流程表单页面:
1. 在Portal门户的流程中心中发起【外部表单->访问API接口】流程,点击发起后,打开的页面是第三方表单;
2. 进入第三方系统:
a) http:// 120.25.238.237/ERP/ 后选择【API模拟表单】打开:
b) 直接进入表单页面;
http:// 120.25.238.237/ERP//SheetDLL.aspx?Mode=Originate&WorkflowCode=PRDll
3. 第三方系统中【提交】流程后,可以在Portal门户首页的【待办任务】和流程中心的【已办任务】列表中,分别看到刚刚从第三方系统发起的流程待办和已办。
4. 在H3中打开任务链接,直接跳转至第三方系统的表单页面中操作,可以执行【提交】、【驳回】和【查看流程】。
3.7 业务规则(选择、排序、脚本)
功能展示
业务规则可以自定义词汇表和规则,实现矩阵式的规则管理。例如以下采购申请审核矩阵:
参与者 办公用品 生产设备
采购金额<2000 采购金额>=2000 采购金额<10000 采购金额>=10000
业务主管 √ √ √
部门总监 √ √ √
财务总监 √ √
总经理 √ √
该矩阵中,根据【采购类型】、【金额】,需要不同的人员进行审核,如果在流程设计中实现,流程逻辑会复杂化。此时可以使用业务规则进行定义该规则,将业务逻辑在业务规则中进行图形化定义实现,更符合业务角度进行理解。
业务场景
在实际业务中,流程本身并不复杂,审批层级就是4级,但因为业务逻辑关系影响到流程需要非常多的分支来判断,如采购单会根据【采购类型】和【金额】的不同,分别有不同的人来审批;休假申请会根据【假期类型】和【请假天数】的不同,分别会有不同的人来审批。
通过H3的业务规则引擎,可以实现业务与流程的耦合,从而达到简化流程的目的,以及方便流程的维护,当公司业务逻辑或公司制度发生异动时,不需要重新来制作流程,只需要维护业务规则表即可,极大的节省了后期的维护成本。
设计过程
详见《H3 BPM实施开发手册》的第10章:业务规则的详细介绍。
演示过程
业务规则的演示流程有3条:【采购(排序)】、【采购(选择)】和【采购(脚本)】,分别对应【业务规则->演示规则】中预设的【排序规则】、【选择规则】和【脚本规则】。
1. 选择规则:
选择规则是将需要执行的单元格按照选中状态进行串联起来,将参与者最终赋值给指定的参与者类型词汇,例如以下
表示涵义为:
当采购类型是办公用品时
金额小于2000,需要主管审核;
金额大于等于2000,需要主管、财务总监审核;
当采购类型是生产设备时
金额小于5000,需要主管、采购总监审核;
金额大于等于5000时,需要主管、采购总监、财务总监和分管副总审核;
2. 排序规则:
排序规则是将所有需要执行的单元格将连续的数值连接起来,将参与者最终赋值给指定的参与者类型词汇,例如以下表格:
表示涵义为:
当采购类型是办公用品时
金额小于2000,需要主管审核;
金额大于等于2000,需要主管、财务总监审核;
当采购类型是生产设备时
金额小于5000,需要主管、采购总监审核;
金额大于等于5000时,需要主管、采购总监、财务总监和分管副总审核;
3. 脚本规则:
脚本规则是执行所有满足条件的单元格的脚本,对词汇直接进行赋值。
4. 在Portal门户的流程中心中发起【业务规则】目录下的3条流程:分别输入不同的【采购类型】和【总金额】,观看流程流转的变化。
提示:发起流程页面,审核人不用选择,流程提交之后,系统会自动根据设定的业务规则,列出需要参与的审批人,按顺序排序,详见下图。
说明:流程的审批顺序按【审核人】的顺序执行【串签】,直至最后一人审核后到流程结束。
4 业务规则
业务规则的使用,请参考《H3 实施开发手册》
演示环境中已实现的【演示规则】,详细请参考本手册【流程模型】章节的【业务规则(选择、排序、脚本)】的应用;
- 上一篇: JS常用校验
- 下一篇: 适用微信“答题小程序”源码