Skip to content
本页目录

FBP自定义服务开发及配置说明

MAS平台 、LOCAS平台(可选)要求:

  • [MAS >= v5.10.20]
  • [LOCAS >= v2.6.17]

场景说明

FBP提供了大量的基础task能满足平时的日常开发需求,针对小众和特殊的业务需求,FBP提供自定义开发FBP服务的能力,自己开发的服务打成jar包,然后通过FBP的ExtensionServiceTask的配置即可运行自定义服务

示例说明

本文将以开发一个pdf转png图片的自定义服务来说明如何开发自定义服务、如何配置ExtensionServiceTask将自己开发的jar服务在FBP环境上运行起来

开发步骤

1、新建一个java开发项目

2、在项目中建立一个com.gsoft.mas.fbp.logicflow.task.extension包路径,并在其下建立一个ExtensionService的接口【注意:包路径必须为:com.gsoft.mas.fbp.logicflow.task.extension,接口必须为:ExtensionService】

java
package com.gsoft.mas.fbp.logicflow.task.extension;

import java.util.Map;

public interface ExtensionService {

    /**
     * 执行扩展服务
     * @param execution 执行上下文
     */
    void run(Map<String,Object> execution);
}

3、对接口ExtensionService进行实现,在实现类的run方法里编写pdf转png图片的代码逻辑

run方法提供execution参数,ExtensionServiceTask配置的自定义参数都可以通过execution获取到 如果需要将run方法计算的结果返回到ExtensionServiceTask,可以在execution上put一个标识,ExtensionServiceTask上面再配置出参,将这个标识的数据丢给后续环节使用

java
package com.gsoft.mas.fbp.logicflow.task.extension;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Map;

public class ExtTaskOne implements ExtensionService{
    public ExtTaskOne(){

    }
    @Override
    public void run(Map<String, Object> execution) {
        //ExtensionServiceTask上配置的参数,以下仅仅打印下来说明参数传递
        for(String key: execution.keySet()){
            System.out.println("execution key:" + key + "  val=:" + execution.get(key));
        }

        //pdf转png图片
        pdf2Png();

        //将本方法计算的结果传递给ExtensionServiceTask,以下仅仅是实例
        execution.put("ExtTaskOne","ExtTaskOne结果");
        
        System.out.println("执行扩展服务ExtTaskOne");
    }

    private void pdf2Png(){
        PDDocument document = null;
        try {

            File pdfFile = new File("D:\\workspace\\pc-server\\locasfbp\\data\\test\\test.pdf");
            document = PDDocument.load(pdfFile);

            PDFRenderer pdfRenderer = new PDFRenderer(document);
            for (int page = 0; page < document.getNumberOfPages(); ++page) {
                BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);

                // 输出格式为PNG的图片文件
                ImageIO.write(bim, "PNG", new File("D:\\workspace\\pc-server\\locasfbp\\data\\test\\output-" + (page + 1) + ".png"));
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            if( document!= null) {
                try {
                    document.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}

4、将项目打成jar包,至此自定义服务开发完毕,接下来将说明如何将这个jar服务运行起来

5、在项目空间里新建一个接口,拖一个JAR服务(ExtensionServiceTask)到设计器

配置存储,并将开发的jar包,如果有依赖的jar一起放入存储配置的目录下 类路径为ExtensionService的实现类包全路径 如果需要给自定义服务传递参数,就新增自定义入参 如果需要将自定义服务里的运行结果返回给后续节点或页面,就新增自定义出参

1.png

6、运行该接口

内部资料,请勿外传