Git Product home page Git Product logo

compileflow's Introduction

compileflow logo

compileflow

📖 See the 📖 中文文档 for the documents in Chinese.

Github Workflow Build Status Build Status Maven Central GitHub release Java support License GitHub Stars GitHub Forks GitHub issues GitHub Contributors

1. Introduction

Compileflow is a very lightweight, high-performance, integrable and extensible process engine.

The Compileflow process engine is an important part of Taobao Business Process Management(TBBPM), which is dedicated to optimizating operations at Alibaba’s Taobao Marketplace. Specifically, Compileflow is designed to focus on pure memory execution and stateless process engines by converting process files to generate, compile and execute java code.

Currently, compileflow powers multiple core systems such as Alibaba's e-commerce stores and transactions.

Compileflow allows developers to design their own business processes through the process editor, which will visualize complex business logic, and build a bridge between designers and development engineers.

2. Design Intention

1.Provide an end-to-end business process solution from design to execution of business development ideas.

2.Offer a variety of process engines to realize the visual global architecture, so that strategy easily translates to visualizations, which lead to enhanced business capabilities, processes and system.

3.Design an efficient execution engine that can support the company's rapid deployment of new services, and capable of streamlining processes that accelerate the development response and interaction speed.

3. Features

1.High performance: It is simple and efficient for compiling and executing java code, which is generated by converting process files.

2.Diverse application scenarios: Widely used across Alibaba's mid-platform solutions; supports multiple business scenarios such as shopping guides, transactions.

3.Integrable: Lightweight and concise design makes it extremely easy to integrate into various solutions and business scenarios.

4.Complete plugin support: Compileflow is currently supported by IntelliJ IDEA and Eclipse plugins. Java code can be dynamically generated and previewed in real-time during the process design. What you see is what you get.

5.Process design drawing:Supports exporting to SVG file and unit test code.

4. Quick start

Step1: Download and install IntelliJ IDEA plugin (optional)

Plugin download address: https://github.com/alibaba/compileflow-idea-designer

Installation instructions: Please use IntelliJ IDEA local installation method to install. Then restart IntelliJ IDEA to activate.

Step2: Import POM file

<dependency>
    <groupId>com.alibaba.compileflow</groupId>
    <artifactId>compileflow</artifactId>
    <version>1.2.0</version>
</dependency>

Check available version at search.maven.org.

Note: Compileflow only supports JDK 1.8 and above.

Step3: Process design

Refer to the KTV demo below to understand the configuration of nodes and attributes and the use of APIs through the demonstration and practice of the demo.

Demo description: N number of people go to ktv to sing. Each person sing a song. The usual fee for the ktv session is 30 yuan/person, but if the total price exceeds 300 yuan, they would receive 10% off. But if the group's total fee falls under 300 yuan, they need to pay the full price.

S3.1

Create a bpm file, as shown below:

ktv_demo_s1

Note: The path of the bpm file must be consistent with the code. When the process engine executes in the file loading mode, the file will be found according to the code.

S3.2

Design process through plug-ins or write process xml files directly.

S3.3 invoke process

Write the following unit test:

public void testProcessEngine() {
    final String code = "bpm.ktv.ktvExample";

    final Map<String, Object> context = new HashMap<>();
    final List<String> pList = new ArrayList<>();
    pList.add("wuxiang");
    pList.add("xuan");
    pList.add("yusu");
    context.put("pList", pList);

    final ProcessEngine<TbbpmModel> processEngine = ProcessEngineFactory.getProcessEngine();

    final TbbpmModel tbbpmModel = processEngine.load(code);
    final OutputStream outputStream = TbbpmModelConverter.getInstance().convertToStream(tbbpmModel);
    System.out.println(processEngine.getTestCode(code));

    processEngine.preCompile(code);

    System.out.println(processEngine.start(code, context));
}

Compileflow was designed to support the Taobao BPM specification. It has made adaptations to be compatible with the BPMN 2.0 specification, but only supports some of BPMN 2.0 elements. If other elements are needed, it can be extended on the original basis.

5. More information

DEMO quick start

Detailed description of the original Taobao BPM specification

6. Welcome to join the compileflow development group

Please contact @余苏 @徐工 @梵度 @哲良 @无相

Known Users

Welcome to register the company name in this issue: #9

compileflow's People

Contributors

alibaba-oss avatar dependabot[bot] avatar oldratlee avatar voff-halo avatar voff12 avatar xuan698400 avatar yusu1210 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

compileflow's Issues

感觉有两个硬伤,往解决

1、不支持并行,并行场景在高并发也常见;
2、采用XML定义,如果没有idea插件,可读性不好,建议采用JSON定义

Hi there

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.

Project status

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

审批流程

有实现审批流程的示例或者文档吗

BpmModel to xml exception.

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)

maven多模块集成报错

请求/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)

我的项目目录如下

image

增加SPI扩展点

增加SPI扩展点,可增加功能,如 定制图标,可在设计器展示。

辛苦了

Can param be an array?

the bpm code like this:
<var name="input" dataType="java.lang.Object[]" inOutType="param"/>
Can I set the var be an array?

执行demo.bpm报错

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

processEngine的reload方法,无法重新加载.bpmn的内容

        final String code = "bpmn.ktvExample1";
        processEngine.preCompile(code);
        processEngine.reload(code);
        System.out.println(processEngine.getJavaCode(code));
    }

上面的代码当我修改了`ktvExample.bpmn20`文件里的sign方法,修改为sign1。之后重新进行reload,或者是编译之后reload,都无法运行新的sign1方法

异步的执行流程的场景,当一个节点执行完执行下一个节点问题

我的理解trigger使用异步的执行流程的场景,有完整的使用example吗?如何进行异步执行流程?另外发现一些使用问题,流程在编排的时候可能需要一些节点固化的信息,比如流程名称,在actionHandle的自定义方法中使用,目前通过var的defaultvalue可以实现,但是StatefulProcess的actionHandle 封装在了函数中了,就不行了,这个怎么解决?

有回退的实现吗?

目前我们是基于activiti的开发,用画线的方式 来实现流程节点的回退 操作,请问下这个框架有这个功能吗?

如果有,能否告知下 实现思路?

运行有异常

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)

服务器上能正常执行,但在yarn环境下报错。

[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

当loop节点中的break节点填写了Expression时,不能生成正确的javaCode

复现条件:
当添加一个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 这个当前还没有验证;

使用idea插件新建一个bpm文件之后报错not supp

  1. 新建一个bpm文件之后,任意点击process-flow或Text,都会附件所示错误,
  2. 在process-flow页面编辑修改之后,Text页面内容无变化,仍然是附件所示错误,我的电脑是idea1903,开始以为是idea版本问题,后面更换为2003之后发现还是这样的。。
    error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.