作为工业界主流的标签软件,BarTender 具备非常强大的集成能力,可以实现与业务系统的原生集成,包括 Oracle 和 SAP 等领先的 ERP 和 WMS 系统,同时也支持通过 Web 服务等方式来实现与其它更多业务系统的集成。明道云应用也可以通过 API 来集成 BarTender 实现远程标签打印。

BarTender 的集成服务主要通过 Integration Builder 和 Administration Console 这两个工具实现,本文简单介绍下通过这两个工具创建、配置、部署和管理集成服务的具体步骤。
版本和安装要求
最早支持 Integration Builder 工具的版本应该是 BarTender 2016,本例是基于 BarTender 2022 R5(官网最新版)完成,建议尽量使用相对近一点的版本。BarTender 有四个版本,分别为入门版、专业版、自动化版和企业版,仅自动化版和企业版支持集成功能。
安装开始时需要按下图所示选择,确保安装 Web 服务相关的组件:

这里 BarTender 应该安装在车间或者仓库现场的 PC 上,该 PC 与现场标签打印机连接。
创建标签
在 BarTender Designer 中创建标签,使用“数据库”来定义数据源,数据库类型选择“文本文件”。

下图样本数据中,第一行为标题,第二行为标签数据。

样本数据:
ItemCode,ItemName,SN,DC,VendorCode
001090093,底板,B2023051108103,2322,V0045


检查字段类型是否正确,可以手工调整。

设计标签格式,并将标签字段与数据字段绑定。

创建集成服务
启动 Integration Builder 工具,创建集成服务,集成方式选择“Web 服务”。

设定集成服务名称。

设定 Web 服务端口。后续通过此处生成的“URL 路径”来接收 Web 服务请求。

指定输入数据格式为“BTXML 脚本”。

“响应”相关的属性默认即可。

添加“打印 BTXML 脚本”操作。

将脚本源变量设置为“%EventData%”

保存设置,生成的集成服务配置文件后缀为 btn,本例中要求将标签文件(.btw)与.btn 文件放置于同一个文件目录。
调试预览
将 Integration Builder 工具切换至“预览”页签,执行启动操作,开始调试。

生成标签预览图片
通过 Postman 工具发送标签预览请求,BarTender 服务将生成预览图片并返回预览图片的二进制数据。

部分属性说明:
Format:标签文件 btw 的文件路径,其中变量 %IntegrationFileFolder% 是指向集成服务 btn 文件所在目录;
Folder:预览图片文件生成后保存的目录;
FileNameTemplate:预览图片文件名;
请求数据:
<?xml version="1.0" encoding="utf-8"?>
<XMLScript Version="2.0" Name="09232006_103601_Job1" ID="123">
<Command Name="Job1">
<ExportPrintPreviewToImage ReturnImageInResponse="true">
<Format>%IntegrationFileFolder%C001-BOX-Lable3.btw</Format>
<Folder>%IntegrationFileFolder%</Folder>
<FileNameTemplate>Preview_Label%PageNumber%.png</FileNameTemplate>
<ImageFormatType>PNG</ImageFormatType>
<Colors>btColors24Bit</Colors>
<DPI>300</DPI>
<Overwrite>true</Overwrite>
<IncludeMargins>true</IncludeMargins>
<IncludeBorder>true</IncludeBorder>
<BackgroundColor>16777215</BackgroundColor>
<PrintSetup>
<IdenticalCopiesOfLabel>1</IdenticalCopiesOfLabel>
</PrintSetup>
</ExportPrintPreviewToImage>
</Command>
</XMLScript>
返回数据:
<Response Version="2.0" Name="09232006_103601_Job1" ID="123" AppName="BarTender" AppVersion="2022 R5" AppVersionId="1130" AppVersionMajor="11" AppVersionMinor="30" AppVersionBuild="197999" AppInstancePid="28272" AppInstanceGuid="{590AD1C8-6DE8-4DFE-A510-F9F70ABC6BFA}">
<User>DESKTOP-IIR74FO\SYSTEM</User>
<Server>DESKTOP-IIR74FO</Server>
<Command Name="Job1">
<ExportPrintPreviewToImage>
<ImageData Page="1" ImageFormatType="PNG">iVBORw0KGgoAAAANSUhEUgAACbAAAA20CAIAAACh3m5aAAAA
CXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5wYaAiIWJ5Pk
3gAAAAd0RVh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2NyaXB0
aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF
WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJl
.............此处省略1000行....................
AAAAAABkCaIAAAAAAABAliAKAAAAAAAAZAmiAAAAAAAAQJYg
CgAAAAAAAGQJogAAAAAAAECWIAoAAAAAAABkCaIAAAAAAABA
liAKAAAAAAAAZAmiAAAAAAAAQJYgCgAAAAAAAGT9BK+S3YEv
AWyBAAAAAElFTkSuQmCC</ImageData>
</ExportPrintPreviewToImage>
</Command>
</Response>
调试状态和结果:

打印标签

CDATA 即为需要打印的标签数据,同时可以指定标签格式文件(*.btw)、打印机和打印份数。
请求数据:
<?xml version="1.0" encoding="utf-8"?>
<XMLScript Version="2.0">
<Command>
<Print JobName="Job1">
<Format>%IntegrationFileFolder%C001-BOX-Lable3.btw</Format>
<PrintSetup>
<IdenticalCopiesOfLabel>2</IdenticalCopiesOfLabel>
<Printer>EPSON</Printer>
</PrintSetup>
<RecordSet Type="btTextFile">
<TextData>
<![CDATA[ItemCode,ItemName,SN,DC,VendorCode
001090093,底板,B2023051108101,2322,V003
001090093,底板,B2023051108101,2322,V005]]>
</TextData>
</RecordSet>
</Print>
</Command>
</XMLScript>
返回数据:
<Response Version="2.0" AppName="BarTender" AppVersion="2022 R5" AppVersionId="1130" AppVersionMajor="11" AppVersionMinor="30" AppVersionBuild="197999" AppInstancePid="28272" AppInstanceGuid="{590AD1C8-6DE8-4DFE-A510-F9F70ABC6BFA}">
<User>DESKTOP-IIR74FO\SYSTEM</User>
<Server>DESKTOP-IIR74FO</Server>
<Command>
<Print ID="21" GUID="{D575E4D7-6624-40E0-ABD3-D5C2ADD5F10A}" JobLastStatus="Queued" JobCompleted="true" JobName="Job1">
<JobStatus Completed="true">
<TimeJobStart>2023-06-26T10:42:35.622</TimeJobStart>
<TimeJobQueued>2023-06-26T10:42:36.102</TimeJobQueued>
<TimeJobSent>2023-06-26T10:42:36.102</TimeJobSent>
<LastStatus>Queued</LastStatus>
<Description>打印作业正在等待被发送至打印机。</Description>
</JobStatus>
<Message Id="1750" Guid="{5ED9611D-0E82-4A89-A1F4-9ADD5BCD3186}" Severity="Information" Category="Printing" Response="OK">
<Text>BarTender 已将打印作业成功发送到后台处理程序。
作业名称: Job1
文档: C001-BOX-Lable3.btw
打印机: EPSON</Text>
</Message>
</Print>
</Command>
</Response>
部署
将 Integration Builder 工具切换至“部署”页签,执行部署操作,并选择部署在本机。

监控
启动 Administration Console 工具,在集成页面可以进行启动或停止集成服务的操作,


总结
可视化的配置界面,全过程 Codeless,可以完美配合明道云应用在工业领域的标签打印场景。
除了本例介绍的 BTXML 数据格式,还支持 JSON 数据格式的 Web 服务请求,但貌似每个请求仅支持打印一个标签(如一个包装标签、一个序列号),实际生产环境中更多的是需要多个标签批量的连续打印。建议先了解下 BarTender 中 BTXML、变量等基本概念,进而灵活运用集成工具,实现更复杂的标签打印功能。
