通过 Web 服务集成在单个打印作业中打印数据库记录
概述
您可能正在考虑创建一个 Web 服务集成,以利用双向通信功能,从而让我们能够反馈更多有关触发文件接收情况的信息。此外,您可能还会为 BarTender 发送每个标签需要使用的变量数据。不过,您可能不喜欢每发送一条数据记录就会生成一个单独的打印作业。有些客户还遇到这样的情况:打印机在每个打印作业之间需要执行某些任务,这会大大增加打印所需的总时间,尤其是在需要大量标签时。
本示例方法让我们既能利用 Web 服务集成的触发处理功能,又能通过 Print Command Script(打印命令脚本)将您想要打印的多条记录合并为一个打印作业。
实现方法
在考虑任何集成时,最好的方式是至少将发生的事件分为两部分:触发集成的事件,以及收到触发后要执行的事件。这里的文章 我可以在 Web 服务集成中发送多条记录吗? 主要讲了集成的第一部分。正如文中所说,您可以设置一个 POST Web 服务集成,并像下图一样发送多条记录:
请注意,这只是用户选择将相关数据、标签和打印机信息都放在每条记录中的一种方法。您也可以尝试其他方式。例如,我是这样组织要发送到集成的数据的:
关键在于(也是 Integration Builder 强大之处)收到数据后该如何处理。此时,Web 服务集成并不知道这些数据是什么,也不知道它们的用途。我们需要以某种方式将发送过来的记录打包成一个记录集。这样,我们就可以用动态创建的数据库来打印所需的文档。
示例文件
以下是可用于本教程的示例文件,您也可以自行创建:
创建示例数据库文件
首先,创建一个示例数据库,用于模拟您将通过集成发送的数据格式。在本例中,我每个要打印的标签会发送两项数据:运单号和序列号。因此,我创建了如下的逗号分隔文本数据库,并将其保存为 TESTDB.txt:
TrackingNumber,SerialNumber,
T456826,S956845
创建 BarTender 文档
我们需要准备标签模板,以便通过集成接收运单号和序列号,并将数据库连接关联到相应的对象。
- 打开 ShippingLabel.btw。
- 通过 BarTender 的数据库连接设置选项,将数据库(TESTDB.txt)连接到 BarTender(可参考此文档:数据库连接入门(视频 - 5:20))
- 将记录的表头字段关联到标签模板中对应的对象(上述支持文章中也有介绍)
- 保存标签。
创建集成
现在我们需要创建集成。由于本例将使用 POST 请求方法,因此需要创建一个 Web 服务集成。
- 打开 Integration Builder
- 选择 创建新集成
- 选择 Web 服务 作为所需的集成选项,然后点击 确定。
- 在 输入数据 下,确保输入数据格式设置为 非结构化。
- 在 响应 下,填写您希望返回的任何响应内容。以下是一个可用的响应示例:
Print Job Status = %PrintJobStatus%
Print Job Messages = %PrintJobMessages% - 在操作列表中,点击右侧的红色 X 删除“打印文档”操作。然后,点击蓝色加号按钮,添加可在集成中执行的不同操作:
- 添加三个操作:
将文本转换为记录集
写入文件
打印命令脚本 - 在 将文本转换为记录集 操作中,进行如下设置:
在 文本数据库连接配置 选项下,将 TESTDB.txt 连接到集成。
确保 文本来源 设置为变量,并选择 %EventData%
确保 输出 设置为将记录保存到 %EventData% 变量中 - 在 写入文件 操作中,进行如下设置:
将 来源 设置为变量 %EventData%
将数据库文件的 目标 设置为您希望保存的位置。请确保集成有足够的权限访问该位置。本例将文件保存到 C:\test。
文件名可自定义,下一步会用到该文件名。
选择当数据库文件已存在时的处理方式。本例选择 如果已存在则替换文件。 - 在 打印命令脚本 操作中,进行如下设置:
选择 来源 为嵌入式脚本。
在 脚本 窗口中,输入以下内容:
在 打印选项覆盖 中,勾选“提示输入数据”。%BTW% /AF="C:\test\ShippingLabelMod.btw" /D="C:\test\TestResult.txt" /P
%END%
测试集成
在部署集成前,您需要确保集成可以正常工作!在 Integration Builder 中使用 测试集成 选项,可以点击主菜单中的图标,或在窗口底部的“属性”旁边点击“测试”标签页。
REST 客户端设置
- 我们需要使用 REST 客户端来测试向 BarTender 发送 POST 请求。您可以选择任何 REST 客户端。本例中我们选择了 Insomnia,您可以在这里下载:Insomnia Rest Client
- 安装好 REST 客户端后,创建一个新的 POST 请求,文本格式选择“other”。
- 输入如下数据。实际上,我们的请求结构类似于一个数据库,每条记录占一行。本例将打印五个标签,每行分别代表运单号和序列号,与 TESTDB.txt 示例数据库格式一致。
T456826,S956845,
T456827,S956846,
T456828,S956847,
T456829,S956848,
T456820,S956849 - 编辑网址,使用指向并触发集成的地址。格式如下:
http://<host>/Integration/WebServiceIntegration/Execute
您可以在集成的 服务 标签页中找到该地址。<host> 是您电脑的主机名。如果不确定主机名,可以打开命令提示符,输入“hostname”并回车。
在这里输入带主机名的完整 URL 路径:
测试集成
- 点击主菜单中的 测试集成 选项。
- 点击测试窗口右上角的 开始 按钮,集成将开始运行。
- 在 REST 客户端中点击发送。稍等几秒,您会在 REST 客户端和集成测试窗口中看到返回的响应:
部署集成
- 在 Integration Builder 工具栏中,点击
部署集成,打开 新部署 对话框。 - 在 新部署 对话框中,输入部署名称和描述。
- 确保 集成文件 设置为 IntegrationFile.btin(或您保存的集成文件名)。
- 在 目标服务器 中,添加您希望部署集成文件的服务器。
- 设置所需的 错误处理 选项。
- 点击 确定 关闭对话框并部署集成文件。
- 管理控制台会自动打开 集成 节点,显示您的集成。