PB的Web框架

SatWeb框架将H5和传统的CS程序融合,集成了登录、用户管理、菜单管理、权限管理等模块。

主体是纯H5页面,运行在浏览器中,CS程序可以由PB,Delphi,C#,VB等语言开发,通过提供的组件,将CS运行在html5框架的tab中。解决了传统CS开发界面不美观,升级困难等问题。方便快速将现有的CS程序Web化,避免程序WEB化时全部重新开发,一次投入过大。 框架只在需要用到CS界面功能的时候才会要求下载插件和程序,使用纯Web功能时没有Chrome等浏览器不支持插件的限制,后续客户可以根据自己的需要借助框架把CS功能逐渐全Web化。

借助SatRDA提供的强大的插件功能,可以很容易实现跨平台的前端和后台的开发。

下载地址:SatRDA_V20210730

群文件下载 SatRDA_V2021XXXX

  • QQ群:345559891
  • Delphi开发群:374683171

界面预览

web

web

webloading

webmessage

在线演示

http://www.satrda.com:5555/webui(opens new window)

开始使用

  1. 下载最新版本并解压

  2. 进入server目录,双击satserver.exe运行

  3. SQLServer中建立数据库erp,并执行建表脚本(目录:satweb/sqlserver.sql)

  4. 进入SatRDA后台的连接管理界面修改名为erp的连接,使其指向新建立的库,并测试连接通过

  5. 打开浏览器,输入 http://127.0.0.1:5555/webui (opens new window), 可以看到效果

SatWeb配置

  1. 通过SatRDA后台配置 配置SatRDA插件

  2. 点击插件管理,可以看到webuierp两个插件 其中webui插件是SatWeb的H5界面,类型是h5,提供浏览器看到的全部html5界面。其中Dir为web/webui表示文件为plugins/web/webui, webui把框架html5全部打包成了一个文件。
    其中erp为框架提供webapi,这里类型是js插件,用js实现了webapi,也可以使用pb,delphi等实现。js实现webapi的好处是可以跨平台,支持linux运行。
    更详细了解js和h5插件可以参考satrda插件

自定义框架显示菜单

示例中框架的菜单如下:

menu

该菜单可以通过SatWeb提供的菜单管理、角色管理和用户管理进行配置,会根据登录的用户显示不同的菜单。

CS程序显示在浏览器流程

我们可以把自己的CS程序的窗口,显示在我们定义好的菜单中。流程如下。

  1. 通过框架的菜单管理添加菜单,并设置权限
  2. 改造CS程序,在接收事件中,根据参数判断应该打开或者关闭窗口
  3. 调试程序
  4. 发布程序

添加菜单

在菜单管理模块可以添加菜单,我们以添加一个显示CS模块的菜单为例,演示如何添加菜单。

  1. 打开菜单管理,点击新增按钮,弹出增加菜单界面。分别选择菜单图标,输入菜单名称、显示排序、路由地址。 

    web

     点击确定
  2. 在新增加的菜单行,点击该菜单右边的增加按钮,新增菜单。 

    web

     在添加菜单界面录入如下: 

    web

提示: 组件路径必须填cschild,表示加载cs模块。cs程序中可以根据路由地址确认打开什么模块

CS程序修改

CS程序可以通过发消息与satweb框架交互,satweb打开关闭窗口时,会发送消息给CS程序,CS程序需要调用框架的loading和messagebox等也可以给satweb发消息。

PB示例代码

  1. 主窗口定义实例变量
n_win_service n_win

2.主窗口open事件加上代码

n_win.of_init(handle(this))
//修改为网页上显示的id值,可以调试时附加到浏览器
n_api.il_web = 723334
//如果在浏览器打开,此函数会把窗口附加到浏览器
n_api.of_webapp_attach(handle(this), false)

  1. 窗口other事件
long ll_msg
ulong ll_data
string ls_cmd

ll_msg = message.number
//得到浏览器发送回来的数据,可以自己根据返回的字符参数,确定要执行的操作。
if ll_msg = 74 then
	ll_data = n_api.SatWebApp_GetData(lparam)
	ls_cmd = n_api.of_utf8tostring(ll_data)
	
	event ue_webcmd(ls_cmd)
end if
  1. 定义ue_webcmd事件
//接收网页发过来的命令
string ls_params[]
string ls_key
ulong ll_hwnd
ls_params = n_api.of_split( as_cmd, ";")
if ls_params[1] = "open" then
	ls_key = ls_params[2]
	ll_hwnd = long(ls_params[3])
	choose case ls_key
		case "/demo/driver"
			n_win.of_openchild(ls_key, "w_child", ll_hwnd)
		case "/demo/http"
			n_win.of_openchild(ls_key, "w_http", ll_hwnd)
		case "/demo/push"
			n_win.of_openchild(ls_key, "w_push", ll_hwnd)
		case "/demo/crypt"
			n_win.of_openchild(ls_key, "w_crypt", ll_hwnd)
		case "/demo/json"
			n_win.of_openchild(ls_key, "w_json", ll_hwnd)
		case else
			n_win.of_openchild(ls_key, "w_child", ll_hwnd)
	end choose
	
elseif ls_params[1] = "close" then
	n_win.of_closechild(ls_params[2])
elseif ls_params[1] = "hide" then
	n_win.of_hideChild()
elseif ls_params[1] = "location-host" then 
	n_api.il_host = ls_params[2]
elseif ls_params[1] = "user" then
	ls_key = ls_params[2]
end if

可以在该事件中根据ls_params参数打开、关闭自己的窗口,或者接收用户信息等。

  • n_win.of_openchild(ls_key, "w_http", ll_hwnd) 通过 n_win 对象封装的方法打开 w_http 窗口并加载到web菜单页面上,如果该窗口已经打开,web页面会直接跳转到该窗口和CS MDI窗口类似
  • n_win.of_closechild(ls_params[2]) 关闭指定窗口,当关闭TAB页面时调用
  • n_win.of_hideChild() 隐藏窗口,当用户切换Tab时,当前窗口不再是需要显示窗口会调用该方法
  1. 响应增加的菜单 在ue_webcmd事件中增加一个分枝,当路由地址为/mypro/m1时,打开对应的pb窗口
case "/mypro/m1"
	n_win.of_openchild(ls_key, "w_json", ll_hwnd)

提示: 其中myprom1是我们建立菜单时设置的路由地址

CS程序调试

在实际的开发过程中,调试程序是最常用的功能。satweb框架允许CS程序在ide调试过程中加载到框架,支持断点调试CS程序。方便开发人员实时看到效果。调试步骤:

  1. 在浏览器输入 http://127.0.0.1:5555/webui?debug=true 显示如下: 

    debug

  2. pb程序在窗口open事件中修改n_api.il_web为网页id值,IDE中点击运行 或 调试启动程序
//修改为网页上显示的id值,可以调试时附加到浏览器
n_api.il_web = 593820

编译发布

记住将n_api.il_web改为0,不用调试模式。将程序编译为exe,然后通过上传工具,上传到应用名为test的应用中。上传工具使用可以参考自动升级

目 录 一、 实现目标 4 二、 框架构思及概念图 4 三、 数据类(DataClass) 5 3.1、 系统对象信息(D_SYSOBJECTS) 5 3.2、 系统字段信息(D_SYSCOLUMNS) 6 3.3、 主外键关系(D_SYSFOREIGNKEYS) 6 四、 资源类(ResourceClass) 7 4.1、 框架参数(FrameworkParameter) 7 4.2、 数据元素字典D_DATAELEMENT(DataElement) 8 4.3、 字段属性表达式类(D_SYSCOLUMNS_ATTRIBUTES) 9 4.4、 系统参数字典(D_SYSPARMDICT) 9 五、 信息类(InformationClass) 10 六、 功能类(FunctionClass) 10 七、 组织类(OrganizeClass) 11 7.1、 角色(Role) 11 7.2、 操作员(Operator) 11 八、 框架设计结构图 11 8.1、 数据项属性表达式部分 11 九、 窗口基类设计 12 9.1、 带有提示栏的窗口 12 十、 数据窗口服务及相关对象 13 10.1、 框架参数对象(uo _FrameworkParameter) 13 10.2、 表达式替换 14 10.3、 操作员数据权限(my_n_cst_dwsrv_popedom_data) 15 10.4、 修改属性表达式(my_n_cst_dwsrv_ModifyDWExpression) 15 10.5、 修改字段显示标题(my_n_cst_dwsrv_ModifyColumnTitle) 16 10.6、 关联查询服务(my_n_cst_dwsrv_RelationSearch) 16 10.7、 GRID风格DW打印服务(my_n_cst_dwsrv_DWPrint) 18 10.8、 DW显示风格设置(my_n_cst_dwsrv_ViewStyle) 19 10.9、 系统字典维护工具 20 10.9.1、 数据结构字典定义 20 10.10、 允许用户进行自定义的参数(D_SYSCONFIG) 21 十一、 简单业务流程处理(Simple Business Flow) 22 11.1. 简单业务流程的定义 22 11.1.1. 业务流程中环节的定义 23 11.1.2. 业务流程的实例化 24 11.1.3. 任务数据的检索 26 11.1.4. 业务流程处理引擎(my_n_cst_workflowengine) 27 11.1.5. 界面设计 31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值