Flowable入门系列文章83 - 验证图表并导出为自定义输出格式

除了自定义调色板之外,您还可以创建Flowable Designer的扩展,以便执行验证并将信息从图中保存到Eclipse工作区中的自定义资源中。这里有内置的扩展点,本节介绍如何使用它们。

ExportMarshaller函数最近被重新引入。我们仍在研究验证功能。下面的文档详细说明了旧的行为,并将在新功能可用时进行更新。

Flowable Designer允许您编写验证图的扩展。在默认情况下,工具中已经有了对BPMN结构的验证,但是如果要验证其他项目(如建模约定或CustomServiceTasks 属性中的值),则可以添加自己的项目。这些扩展名被称为Process Validators。

您还可以自定义Flowable Designer以在保存图表时发布到其他格式。这些扩展被调用Export Marshallers,并由Flowable Designer在用户的每个保存操作中自动调用。通过在Eclipse的首选项对话框中为每个检测到扩展的格式设置首选项,可以启用或禁用此行为。设计师将确保您ExportMarshaller在保存图表时调用,具体取决于用户的偏好。

通常,你会想要结合一个ProcessValidator和一个ExportMarshaller。假设你有一些CustomServiceTask正在使用的具有你想在生成过程中使用的属性。但是,在生成过程之前,您首先需要验证其中一些值。结合ProcessValidator和ExportMarshaller是最好的方法来实现这一点,Flowable Designer使您能够无缝地将扩展插入到工具中。

要创建一个ProcessValidator或者一个ExportMarshaller,你需要创建一个不同于扩展调色板的扩展。原因很简单:从您的代码中,您将需要访问比集成库提供的API更多的API。尤其是,您将需要Eclipse中可用的类。因此,要开始,您应该创建一个Eclipse插件(您可以使用Eclipse的PDE支持来完成),并将其打包到自定义的Eclipse产品或功能中。这个用户指南的范围超出了开发Eclipse插件所涉及的所有细节,所以下面的说明仅限于扩展Flowable Designer的功能。

您的包应该依赖于以下库:

  • org.eclipse.core.runtime
  • org.eclipse.core.resources
  • org.flowable.designer.eclipse
  • org.flowable.designer.libs
  • org.flowable.designer.util

可选的,如果你想在你的扩展中使用org.apache.commons.lang包,可以通过Designer使用。

两个ProcessValidatorS和ExportMarshallerS被延伸的基部类创建的。这些基类从它们的超类,类继承了一些有用的方法AbstractDiagramWorker。使用这些方法,您可以创建出现在Eclipse问题视图中的信息,警告和错误标记,以便用户找出错误或重要的地方。你可以用Resources和的形式获得有关图表的信息InputStreams。这些信息DiagramWorkerContext由AbstractDiagramWorker课程提供。

clearMarkers()作为你在a ProcessValidator或a中做的第一件事情之一,可能是一个好主意ExportMarshaller。这将清除您的工作人员以前的任何标记(标记会自动链接到工作人员,清除标记对于一名工作人员不会触及其他标记)。例如:

// Clear markers for this diagram first
clearMarkersForDiagram();

您还应该使用提供的进度监视器(在)中将DiagramWorkerContext您的进度报告给用户,因为验证和编组操作可能需要一段时间来强制用户
等待。报告进度需要一些关于如何使用Eclipse功能的知识。

1、创建一个ProcessValidator扩展

org.flowable.designer.eclipse.extension.validation.ProcessValidator在您的plugin.xml文件中创建扩展点的扩展点。对于这个扩展点,你需要继承这个AbstractProcessValidator类。

<?eclipse version="3.6"?>
<plugin>
<extension
point="org.flowable.designer.eclipse.extension.validation.ProcessValidator">
<ProcessValidator
class="org.acme.validation.AcmeProcessValidator">
</ProcessValidator>
</extension>
</plugin>
public class AcmeProcessValidator extends AbstractProcessValidator {
}

你必须实现一些方法。最重要的是,实施,getValidatorId()所以你返回一个全球唯一的ID验证码。这将使你能够从中调用它ExportMarshaller,甚至让其他人从他们的调用你的验证器ExportMarshaller。实现getValidatorName()并返回验证器的逻辑名称。该名称在对话框中显示给用户。在中getFormatName(),您可以返回验证器通常验证的图的类型。

验证工作本身在validateDiagram()方法中完成。从这一点来看,这取决于你在这里编码的具体功能。但是,通常情况下,您首先需要掌握图表流程中的节点,以便遍历它们,收集,比较和验证数据。这个片段告诉你如何做到这一点:

final EList<EObject> contents = getResourceForDiagram(diagram).getContents();
for (final EObject object : contents) {
if (object instanceof StartEvent ) {
// Perform some validations for StartEvents
}
// Other node types and validations
}

当你通过验证时,不要忘记调用addProblemToDiagram()和/或addWarningToDiagram()等等。确保你在最后返回一个正确的布尔结果来表示你是否认为验证成功或失败了。这可以通过调用ExportMarshaller来确定下一个操作过程。

2、创建一个ExportMarshaller扩展

org.flowable.designer.eclipse.extension.ExportMarshaller在您的plugin.xml文件中创建扩展点的扩展点。对于这个扩展点,你需要继承这个AbstractExportMarshaller类。这个抽象基类在编组为自己的格式时为您提供了许多有用的方法,但最重要的是,它允许您将资源保存到工作区并调用验证器。

Designer的示例文件夹中提供了一个示例实现。这个例子展示了如何使用基类中的方法来完成基础知识,比如访问图表InputStream,使用它BpmnModel并将资源保存到工作区。

<?eclipse version="3.6"?>
<plugin>
<extension
point="org.flowable.designer.eclipse.extension.ExportMarshaller">
<ExportMarshaller
class="org.acme.export.AcmeExportMarshaller">
</ExportMarshaller>
</extension>
</plugin>
public class AcmeExportMarshaller extends AbstractExportMarshaller {
}

你需要实现一些方法,如getMarshallerName()和getFormatName()。这些方法用于向用户显示选项,并在进度对话框中显示信息,因此请确保您返回的描述反映了您正在实施的功能。

您的大部分工作是在该doMarshallDiagram()方法中执行的。

如果您想先执行某个验证,则可以直接从编组调用验证程序。你从验证器收到一个布尔结果,所以你知道验证是否成功。在大多数情况下,如果无效,则不想继续编组图表,但如果验证失败,则可以选择继续,甚至创建不同的资源。

一旦你有所有你需要的数据,你应该调用这个saveResource()方法来创建一个包含你的数据的文件。您可以saveResource()从一个ExportMarshaller 调用多次; 因此可以使用编组器创建多个输出文件。

您可以使用类中的saveResource()方法为输出资源构建一个文件名AbstractDiagramWorker。有几个有用的变量可以替代,允许你创建文件名,例如_original-filename__my-format-name.xml。这些变量在Javadoc中描述并由ExportMarshaller接口定义。resolvePlaceholders()如果您想自己替换占位符,也可以使用字符串(例如,路径)。getURIRelativeToDiagram()会为你调用这个。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程是《Flowable流程入门课程》的后续高级课程。在学习本课程前,应先学习入门课程,以掌握相关基础知识。高级课程着重讲解Flowable工作流的高级概念、复杂理论和实战应用。课程内容包括流程管理思想、技术与标准、工作流的控制模式和资源模式;Flowable数据库表及变量;与Spring、Spring Boot的集成;BPMN 2.0主要类图;Flowable高级服务如JAVA服务任务、脚本任务、Web Service任务、外部工作者任务、多实例任务、补偿处理程序、子流程和调用活动等;Flowable事件侦听器、执行侦听器和任务侦听器;Flowable历史和REST API;Flowable事务、并发性、身份管理及LDAP集成;Flowable高级主题如流程实例迁移、异步执行器的设计与配置、用于高并发的UUID ID生成器、多租户、高级流程引擎配置、执行自定义SQL和实验性流程调试器等;Flowable Eclipse设计器特性及定制;Flowable 事件注册;Flowable相关标准和规范如ISO8601标准和cron等。本课程对Flowable官方文档进行了彻底梳理和融汇贯通,并结合实践,形象生动、系统全面、简单易懂地呈现给大家,让大家从开源软件文档冗长耗时、英文晦涩难懂、概念理解困难、知识点分散等困境中解脱出来,从而能快速地将Flowable具有的高级特性应用到项目的高级需求和复杂实践中去。课程特色:案例和代码驱动、基础概念与经典实战相结合、知识环节融会贯通、关联知识平滑拓展、概念和原理展示形象生动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值