作为工业界主流的标签软件,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、变量等基本概念,进而灵活运用集成工具,实现更复杂的标签打印功能。