alibaba / compileflow Goto Github PK
View Code? Open in Web Editor NEW🎨 core business process engine of Alibaba Halo platform, best process engine for trade scenes. | 一个高性能流程编排引擎
License: Apache License 2.0
🎨 core business process engine of Alibaba Halo platform, best process engine for trade scenes. | 一个高性能流程编排引擎
License: Apache License 2.0
tbbpm只支持单机运行么
It's been 10 months since the last update
what is the status of the project
will maintenance and new feature development continue?
best regards
能否像flowable,activitie一样能支持动态添加节点呢?
提供web端设计器方便和业务中台可视化集成,业务流程可视化,修改编辑
增加SPI
扩展点,可增加功能,如 定制图标,可在设计器展示。
辛苦了
提供BPM.xml文件的实时下发生效接口-方便对接配置中心,实时推送生效
java.lang.NullPointerException
at com.alibaba.compileflow.idea.graph.codec.impl.tbbpm.TbbpmModelXmlConvertExtImpl.toXml(TbbpmModelXmlConvertExtImpl.java:46)
at com.alibaba.compileflow.idea.graph.codec.impl.tbbpm.TbbpmModelCodeConvertExtImpl.buildProcessRuntime(TbbpmModelCodeConvertExtImpl.java:60)
at com.alibaba.compileflow.idea.graph.codec.impl.tbbpm.TbbpmModelCodeConvertExtImpl.getJavaCode(TbbpmModelCodeConvertExtImpl.java:55)
at com.alibaba.compileflow.idea.plugin.provider.fileeditor.JavaSourceFileEditor.loadJavaCode(JavaSourceFileEditor.java:130)
at com.alibaba.compileflow.idea.plugin.provider.fileeditor.JavaSourceFileEditor.lambda$new$0(JavaSourceFileEditor.java:106)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:309)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:441)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
2021.1版本的idea,编辑器调整的内容并不生效,也就是text里面根本没有改动,text里面调整了编辑器也没有同步
Originally posted by @blake8816 in #9 (comment)
复现条件:
当添加一个loop节点,并且在loop节点中添加一个break节点,并且配置break节点的Expression,
错误描述:
则生成的javaCode出现如下错误:
在生成成员变量后,方法的头行最左边多出现一个"}"
问题定位:
我自己进行了debug,发现在执行到 com.alibaba.compileflow.engine.process.preruntime.generator.code.MethodTarget.generateCode()
时,codeBuffer的toStringCache 中含有一个"}",这个自动添加到这个MethodCode 之前,导致生成出来的代码除错;
注意点:
在配置了loop,不配置break时,不出现
在配置loop,配置了break,但不配置break的Expression时,不出现
continue 这个当前还没有验证;
请问这个开源的工作流引擎是否有官方的钉钉群?
Compileflow Design的Eclipse插件在哪里?
1、不支持并行,并行场景在高并发也常见;
2、采用XML定义,如果没有idea插件,可读性不好,建议采用JSON定义
Caused by: java.lang.IllegalAccessException: Class com.alibaba.compileflow.engine.common.utils.ClassUtils can not access a member of class java.lang.Math with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
at java.lang.Class.newInstance(Class.java:436)
at com.alibaba.compileflow.engine.common.utils.ClassUtils.newInstance(ClassUtils.java:39)
at com.alibaba.compileflow.engine.common.utils.ClassUtils.newInstance(ClassUtils.java:27)
at com.alibaba.compileflow.engine.common.utils.ObjectFactory.lambda$getInstance$0(ObjectFactory.java:34)
... 94 more
在插件里没有看到并行相关的节点,整个流程是否都是串行执行的?
我的理解trigger使用异步的执行流程的场景,有完整的使用example吗?如何进行异步执行流程?另外发现一些使用问题,流程在编排的时候可能需要一些节点固化的信息,比如流程名称,在actionHandle的自定义方法中使用,目前通过var的defaultvalue可以实现,但是StatefulProcess的actionHandle 封装在了函数中了,就不行了,这个怎么解决?
Not support in IDE build 213.* +
I installed 2022.2.3 idea recently , this plugin has been auto banned. Please update the compile version. Thanks.
can't find @余苏 @徐工 @梵度 @哲良 @无相 in 钉钉
plz
I have a business process which there is some activity,
according to the business, the next activity must be triggerred after the previous activity finished.
but the previous activity is time-cost activity, e.g.: docker image build
maybe event-drive is a good choice.
当前只支持从resource 里面加载bpm文件,能否考虑通过db 后者配置中心等动态加载bpmn文件。
通过开放文件加载解析类,自行指定从配置中心或者其他地方获取xml bpm,然后动态编译成class.
init
请求/run
后报错代码如下
com.alibaba.compileflow.engine.common.CompileFlowException: compile file[D:\project\myboot\server\erupt-myboot\.flowclasses\compileflow\stateless\bpm\SqrtFlow.java] to class[compileflow.stateless.bpm.SqrtFlow] failed,Pb(387) Only a type can be imported. com.alibaba.compileflow.demo.mock.MockJavaClazz resolves to a package
Pb(2) MockJavaClazz cannot be resolved to a type
at com.alibaba.compileflow.engine.process.preruntime.compiler.impl.support.EcJavaCompiler.compile(EcJavaCompiler.java:233)
at com.alibaba.compileflow.engine.process.preruntime.compiler.impl.CompilerImpl.compileJavaCode(CompilerImpl.java:52)
at com.alibaba.compileflow.engine.runtime.impl.AbstractProcessRuntime.compileJavaCode(AbstractProcessRuntime.java:250)
at com.alibaba.compileflow.engine.runtime.impl.AbstractProcessRuntime.lambda$compile$0(AbstractProcessRuntime.java:130)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at com.alibaba.compileflow.engine.runtime.impl.AbstractProcessRuntime.compile(AbstractProcessRuntime.java:130)
at com.alibaba.compileflow.engine.process.impl.AbstractProcessEngine.getCompiledRuntime(AbstractProcessEngine.java:79)
at com.alibaba.compileflow.engine.process.impl.AbstractProcessEngine.lambda$getProcessRuntime$1(AbstractProcessEngine.java:73)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at com.alibaba.compileflow.engine.process.impl.AbstractProcessEngine.getProcessRuntime(AbstractProcessEngine.java:72)
at com.alibaba.compileflow.engine.process.impl.TbbpmStatelessProcessEngineImpl.execute(TbbpmStatelessProcessEngineImpl.java:37)
at com.alibaba.compileflow.engine.process.impl.TbbpmStatelessProcessEngineImpl.start(TbbpmStatelessProcessEngineImpl.java:43)
at com.anganing.myboot.RunCase.run2(RunCase.java:52)
at com.anganing.myboot.DemoController.run2(DemoController.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.ssssssss.magicapi.config.MagicCorsFilter.doFilter(MagicCorsFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
我的项目目录如下
是否考虑新增其他加载文件实现?如数据库
有实现审批流程的示例或者文档吗
因为我这边涉及到的需求是每个用户可以自定义流程,所以目前不知道怎么让新流程生效
java.util.ConcurrentModificationException
at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1226)
at com.alibaba.compileflow.engine.runtime.impl.AbstractStatelessProcessRuntime.buildFollowingNodes(AbstractStatelessProcessRuntime.java:94)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1510)
目前我们是基于activiti的开发,用画线的方式 来实现流程节点的回退 操作,请问下这个框架有这个功能吗?
如果有,能否告知下 实现思路?
the bpm code like this:
<var name="input" dataType="java.lang.Object[]" inOutType="param"/>
Can I set the var be an array?
网上找了半天,发现没有
[INFO] 2021-09-11 14:30:15.142 - [taskAppId=TASK-13-70-92]:[217] - process has exited, execute path:/tmp/dolphinscheduler/exec/process/1/13/70/92, processId:31343 ,exitStatusCode:0
[INFO] 2021-09-11 14:30:15.267 - [taskAppId=TASK-13-70-92]:[129] - -> com.alibaba.compileflow.engine.common.CompileFlowException: compile file[/tmp/.flowclasses/compileflow/stateless/bmp/DemoFlow.java] to class[compileflow.stateless.bmp.DemoFlow] failed,Pb(387) Only a type can be imported. ls.xchange.data.task.demo.DatasourceJob resolves to a package
Pb(387) Only a type can be imported. ls.xchange.data.task.demo.StringJob resolves to a package
Pb(2) DatasourceJob cannot be resolved to a type
Pb(2) StringJob cannot be resolved to a type
Pb(2) DatasourceJob cannot be resolved to a type
at com.alibaba.compileflow.engine.process.preruntime.compiler.impl.support.EcJavaCompiler.compile(EcJavaCompiler.java:233)
at com.alibaba.compileflow.engine.process.preruntime.compiler.impl.CompilerImpl.compileJavaCode(CompilerImpl.java:52)
at com.alibaba.compileflow.engine.runtime.impl.AbstractProcessRuntime.compileJavaCode(AbstractProcessRuntime.java:251)
at com.alibaba.compileflow.engine.runtime.impl.AbstractProcessRuntime.lambda$compile$0(AbstractProcessRuntime.java:131)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at com.alibaba.compileflow.engine.runtime.impl.AbstractProcessRuntime.compile(AbstractProcessRuntime.java:131)
at com.alibaba.compileflow.engine.process.impl.AbstractProcessEngine.getCompiledRuntime(AbstractProcessEngine.java:79)
at com.alibaba.compileflow.engine.process.impl.AbstractProcessEngine.lambda$getProcessRuntime$1(AbstractProcessEngine.java:73)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at com.alibaba.compileflow.engine.process.impl.AbstractProcessEngine.getProcessRuntime(AbstractProcessEngine.java:72)
at com.alibaba.compileflow.engine.process.impl.TbbpmStatelessProcessEngineImpl.execute(TbbpmStatelessProcessEngineImpl.java:37)
at ls.xchange.data.task.demo.Task.main(Task.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:851)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:926)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:935)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
21/09/11 14:30:15 INFO util.ShutdownHookManager: Shutdown hook called
21/09/11 14:30:15 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-69fc985a-8ea5-4315-b5dd-1c8b027e538e
final String code = "bpmn.ktvExample1";
processEngine.preCompile(code);
processEngine.reload(code);
System.out.println(processEngine.getJavaCode(code));
}
上面的代码当我修改了`ktvExample.bpmn20`文件里的sign方法,修改为sign1。之后重新进行reload,或者是编译之后reload,都无法运行新的sign1方法
compileflow跟Spring Boot怎么集成?会开发一个Starter吗?钉钉群号发一个或者二维码
var标签可以声明一个带默认值的变量吗?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.