Appearance
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的实现类包全路径 如果需要给自定义服务传递参数,就新增自定义入参 如果需要将自定义服务里的运行结果返回给后续节点或页面,就新增自定义出参
6、运行该接口