PB开发Windows服务方案

1、项目简介

​ PB作为一门客户端开发语言,虽然官方并未提供标准的Windows服务开发方案,但使用PB开发Windows服务并非无法实现。自PB9开始,PB提供了PBNI接口,PB与C++可以通过这个接口互相调用,而C++可以开发Windows服务。因此只要使用C++将Windows服务的主体结构固化下来,在适当的时候通过PBNI接口启动PB进程、调用PB编写的处理过程,就能够实现以PB语言开发Windows服务。PBExtSVC就是这样一个实现PB语言以固定模板快速开发Windows服务的工具。

​ PBExtSVC项目的结构如下图:

在这里插入图片描述

2、项目配置

​ PBExtSVC.ini为项目配置文件,有如下基础配置项:

在这里插入图片描述

​ 按这个配置文件创建的服务如下图:

在这里插入图片描述

3、快速入门
3.1、服务创建

管理员身份运行CMD窗口,进入项目目录,运行以下代码即可创建服务:

PBExtSVC.exe /install

执行效果如图:

在这里插入图片描述

3.2、服务卸载

同样以管理员身份运行CMD窗口,进入项目目录,运行以下代码卸载服务:

PBExtSVC.exe /uninstall
3.3、服务处理过程PB项目编写

按3.1方式创建服务后,如果直接启动服务会报错,因为还没有提供编写服务处理过程的PB库。

首先创建一个PB项目,添加pbsvc.pbl,新建一个PBSVC类的子类:

在这里插入图片描述

PBSVC类的属性及事件的具体作用如下:

属性or事件名称作用
属性service_run_interval服务每次执行的事件间隔,单位毫秒
事件service_start服务启动时触发执行的代码
事件service_run服务每次执行的代码
事件service_stop服务停止时触发执行的代码

接下来编写一个这样的服务,服务启动时打开一个文件并写入打开时间,每隔3秒写入一次当前执行的时间,服务停止时写入停止时间后关闭这个文件。

添加实例变量:

PRIVATE:
	int iFile

service_start事件添加代码:

iFile = FileOpen('D:\Temp\PBExtSVCTest\test.log', textmode!, write!, shared!)
FileWriteEx(iFile, string(now()) + ' PBSVC start ~r~n')

service_run事件添加代码:

FileWriteEx(iFile, string(now()) + ' PBSVC run ~r~n')

service_stop事件添加代码:

FileWriteEx(iFile, string(now()) + ' PBSVC stop ~r~n')
FileClose(iFile)

设置属性service_run_interval为3000

最后Deploy项目,将生成的pbd文件拷贝到PB库目录PBSVCLib中(无需拷贝生成的exe文件)

3.4、服务执行

PBExtSVC.ini中配置好PB项目名、类名和PBVM地址后,即可启动服务测试。在Windows服务管理器中启动服务,执行一段时间后停止服务。可以看到,D:\Temp\PBExtSVCTest目录下生成了test.log文件,写入的内容如下图:

在这里插入图片描述

4、项目获取

PBExtSVC项目下载

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 一、 实现目标 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、付费专栏及课程。

余额充值