基于工作流的阳台管理连串规划,Activiti工作流引擎使用

by admin on 2019年4月8日

原标题:基于工作流的阳台管理连串规划

Activiti工作流引擎使用

图片 1

1.不难介工作流引擎与Activiti

对此工作流引擎的解释请参见百度健全:行事流引擎

1.简单介工作流引擎与Activiti

对此工作流引擎的解说请参考百度完善:办事流引擎

对于网络经济平台来说,主要的事情愈发是关乎资金业务有关操作时都有供给有相关的审查批准流程.同时在工艺流程的萍踪浪迹进度中供给和顺序业务系统进行相互,完结真正的作业处理,
并记录这几个历程中全部人的操作以及每一步操作时所涉及数量快速照相,以便于内外部审计和题材的追溯.

一.一 笔者与做事流引擎

在首先家商家工作的时候根本任务正是开发OA系统,当然基本都以有工作流的协理,可是当下应用的办事流引擎是店铺部分牛人开发的(据书上说是用一个开源的斯特林发动机械修理改的),名为CoreFlow;功效绝对Activiti来说相比弱,然则能满意普通的使用,当然也有众多的标题因而后来大家只可以修改引擎的代码打补丁。

于今是本身工作的第一家协作社,因为要开发E凯雷德P、OA等体系须求利用工作流,在类型调研阶段本人先物色资料选择接纳哪个开源做事流引擎,最终显著了Activiti5并依据商家的架构做了1部分DEMO。

一.一 小编与工作流引擎

在第贰家商厦办事的时候根本任务正是开发OA系统,当然基本都以有工作流的扶助,可是当下利用的劳作流引擎是集团部分牛人开发的(听他们讲是用二个开源的斯特林发动机械修理改的),名为CoreFlow;成效相对Activiti来说相比弱,不过能满足普通的利用,当然也有那多少个的题材因而后来大家只好修改引擎的代码打补丁。

于今是自家工作的第3家公司,因为要开发ECRUISERP、OA等系统须求动用工作流,在档次调查研讨阶段自身先找找资料选用使用哪个开源办事流引擎,最终明确了Activiti5并依照商户的架构做了部分DEMO。

◆✦上边为四个独立的业务流程✦◆

1.2 Activiti与JBPM5?

对此Activiti、jBPM4、jBPM5大家应当怎么接纳,在InfoQ上有一篇小说写的很好,从大的层面比较各种引擎之间的差异,请参见文章:纵观jBPM:从jBPM3到jBPM5以及Activiti5

1.2 Activiti与JBPM5?

对于Activiti、jBPM4、jBPM5大家相应什么抉择,在InfoQ上有1篇作品写的很好,从大的范围相比种种引擎之间的距离,请参考小说:纵观jBPM:从jBPM3到jBPM5以及Activiti5

(注: 为了表达方便, 已经简化和改动有关手续, 和点融实操不等同)

1.3 Activiti资料

  • 官网:

  • 下载:

  • 本子:Activiti的版本是从5开始的,因为Activiti是使用jBPM4的源码;本子揭橥:多个月宣布3次。

  • Eclipse Plugin: 

  • Activit中文群:5435716

1.3 Activiti资料

  • 官网:

  • 下载:

  • 本子:Activiti的版本是从5开始的,因为Activiti是使用jBPM4的源码;本子发布:八个月宣布贰次。

  • Eclipse Plugin: 

  • Activit中文群:236540304

图片 2

二.首先使用遇到题目收集

因为Activiti刚刚退出不久所以资料比较空缺,汉语资料越来越少的可怜,所以开首的时候1头雾水(固然事先用过工作流,然而感觉距离很多),而且官方的手册还不是很周到;所以笔者把自个儿在攻读运用的进度遭逢的一些质疑都位列出来分享给我们;以下几点是自身遇上和想到的,借使你还有怎么着疑点可以在数短论长二月本人沟通再补充。

二.首先使用碰到难题收集

因为Activiti刚刚退出不久所以资料比较空缺,中文资料更少的可怜,所以开始的时候3只雾水(固然在此之前用过工作流,不过觉得距离很多),而且官方的手册还不是很完善;所以小编把自家在就学应用的进度蒙受的有的难题都位列出来分享给我们;以下几点是自己遇上和想到的,如若你还有怎样疑难能够在评价花月本身沟通再补充。

1. 借款人银行卡消息修改

二.一 计划流程图后汉语乱码

乱码是一向缠绕着国人的难题,在此之前各样技术、工具出现乱码的题材写过许多文章,那里也不例外……,Activiti的乱码难题在流程图中。

流程图的乱码如下图所示:

图片 3

化解办法有三种:

二.1 铺排流程图后粤语乱码

乱码是直接缠绕着国人的难题,从前各类技术、工具出现乱码的题材写过众多文章,那里也不例外……,Activiti的乱码问题在流程图中。

流程图的乱码如下图所示:

图片 4

消除办法有二种:

该流程发起原因首要是由于借款人银行卡转移原因供给修改. 流程关键步骤为:

二.一.1 修改源代码方式

修改源码

org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas

在构造方法

public ProcessDiagramCanvas(int width, int height)

中有一行代码是安装字体的,暗中同意是用 Arial 字体,那正是乱码发生的原故,把字改为本地的中文字体即可,例如:

Font font = new Font("WenQuanYi Micro Hei", Font.BOLD, 11);

理所当然假若您有安顿文件读取工具那么能够安装在*.properties文件中,小编就是如此做的:

Font font = new Font(PropertyFileUtil.get("activiti.diagram.canvas.font"), Font.BOLD, 11);

二.一.1 修改源代码格局

修改源码

org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas

在构造方法

public ProcessDiagramCanvas(int width, int height)

中有一行代码是设置字体的,暗中同意是用Arial字体,那正是乱码发生的来由,把字改为地面包车型大巴中文字体即可,例如:

?

1
Font
font =
new
Font(
"WenQuanYi
Micro Hei"
,
Font.BOLD,
11);

理所当然假使你有布署文件读取工具那么能够设置在*.properties文件中,笔者正是那般做的:

?

1
Font
font =
new
Font(PropertyFileUtil.get(
"activiti.diagram.canvas.font"),
Font.BOLD,
11);

5.12本子初叶扶助设置字体名称,在外燃机中添加如下设置,在生成图片时即可使用微软雅黑安装图片中的文字。

?

1
<property
name
="activityFontName"
value
="微软雅黑"></property>

❶ 用户联系客户服务人士,提交申请, 包罗借贷音讯, 手持身份证照片,
银行卡消息等

二.一.2 使用压缩包情势配置

Activiti帮忙陈设*.bpmn20.xml、bar、zip格式的流程定义。

采取Activit Deisigner工具设计流程图的时候会有两个门类的文书:

  • .activiti设计工具使用的公文

  • .bpmn20.xml规划工具自动依照.activiti文件生成的xml文件

  • .png流程图图片

消除办法正是把xml文件和图片文件同时布置,因为在独立安排xml文件的时候Activiti会自动生成一张流程图的图样文件,不过如此在应用的时候坐标和图片对应不起来……

为此把xml和图纸同时布置的时候Activiti自动关联xml和图表,当须求取得图片的时候一贯再次来到布置时压缩包里面包车型大巴图样文件,而不是Activiti自动生成的图样文件

二.一.2 使用压缩包格局配置

Activiti帮忙铺排*.bpmn20.xml、bar、zip格式的流水生产线定义。

利用Activit Deisigner工具设计流程图的时候会有多个类型的文件:

  • .activiti设计工具使用的文本

  • .bpmn20.xml统筹工具自动依照.activiti文件生成的xml文件

  • .png流程图图片

解决办法就是把xml文件和图纸文件同时安顿,因为在单身安插xml文件的时候Activiti会自动生成一张流程图的图形文件,不过这么在应用的时候坐标和图纸对应不起来……

于是把xml和图片同时安插的时候Activiti自动关联xml和图纸,当必要得到图片的时候从来重临陈设时压缩包里面包车型地铁图形文件,而不是Activiti自动生成的图样文件

❷ 申请提交系统后, 由风控举行甄别

二.一.二.1 使用工具打包Bar文件

右键项目名称然后点击“Create deployment
artifacts”,会在src目录中创设deployment文件夹,里面含有*.bar文件.

贰.一.二.1 使用工具打包Bar文件

在“Package Explorer”视图中右键项目名称然后点击“Create deployment
artifacts”,会在src目录中开创deployment文件夹,里面富含*.bar文件.

❸ 运转单位进行修改操

2.1.2.二 使用Ant脚本打包Zip文件

那也是大家采取的点子,你能够手动选项xml和png打包成zip格式的公文,也可以像大家同样使用ant
target的秘籍打包那五个文本。

<?xml version="1.0" encoding="UTF-8"?>
<project name="foo">

    <property name="workflow.definition" value="foo-common-core/src/main/resources/diagrams" />
    <property name="workflow.deployments" value="foo-common-core/src/main/resources/deployments" />

<target name="workflow.package.oa.leave">
        <echo>打包流程定义及流程图::OA-请假</echo>
        <zip destfile="${workflow.deployments}/oa/leave.zip" basedir="${workflow.definition}/oa/leave" update="true"
            includes="*.xml,*.png" />
    </target>
</project>

如此那般当修改流程定义文件后如若运维ant命令就足以打包了:

ant workflow.package.oa.leave

以往陈设bar只怕zip文件查看流程图图片就不是乱码了,而是你的压缩包里面包车型客车png文件。

二.壹.二.二 使用Ant脚本打包Zip文件

那也是大家选拔的不2法门,你能够手动选项xml和png打包成zip格式的文件,也得以像我们1致选取ant
target的方法打包那七个文件。

123456789101112
<?xml version="1.0" encoding="UTF-8"?><project name="foo">     <property name="workflow.definition" value="foo-common-core/src/main/resources/diagrams" />    <property name="workflow.deployments" value="foo-common-core/src/main/resources/deployments" /> <target name="workflow.package.oa.leave">     <echo>打包流程定义及流程图::OA-请假</echo>        <zip destfile="${workflow.deployments}/oa/leave.zip" basedir="${workflow.definition}/oa/leave" update="true"            includes="*.xml,*.png" /> </target></project>

view
rawbuild.xml hosted
with ❤ by GitHub

如此当修改流程定义文件后假使运维ant命令就足以打包了:

ant workflow.package.oa.leave

未来铺排bar恐怕zip文件查看流程图图片就不是乱码了,而是你的压缩包里面的png文件。

②. 提前还款流程

2.贰 使用引擎提供的Form照旧自定义业务Form

贰.二 使用引擎提供的Form还是自定义业务Form

发起流程的要害原因是用户期望根据合同举办提前还款. 流程关键步骤为:

二.2.一 引擎提供的Form

概念表单的办法在每个Task标签中定义extensionElementsactiviti:formProperty即可,到达那么些节点的时候能够经过API读取表单成分。

Activiti官方的事例使用的就是在流水生产线定义中装置每四个节点显示怎么的表单哪些字段须要体现、哪些字段只读、哪些字段必填。

但是那种格局唯有适用于相比简单的流水生产线,对于有个别复杂也许页面需求工作逻辑的判定的景况就不适用了。

对此数据的保留都以在电动机的表中,不便利和其余表的涉及、对总体连串的宏图也不利于!

二.2.一 引擎提供的Form

概念表单的宗目的在于各类Task标签中定义extensionElementsactiviti:formProperty即可,到达那一个节点的时候能够经过API读取表单成分。

Activiti官方的事例使用的正是在流水线定义中安装各个节点呈现怎么的表单哪些字段需求出示、哪些字段只读、哪些字段必填。

可是那种艺术唯有适用于比较简单的流水生产线,对于有些复杂或然页面须求工作逻辑的判定的地方就不适用了。

对此数据的保留都以在斯特林发动机的表中,不便利和其余表的涉及、对全部类其他筹划也不利于!

❶ 借款人联系客服人士, 提交申请

二.2.二 自定义业务Form

那种方式应该是大家用的最多的了,因为相似的事情体系业务逻辑都会相比较复杂,而且数据库中诸多表都会有依靠关系,表单中有许多情状判断。

例如大家的系统适用jQuery
UI作为UI,有不计其数javascript代码,页面包车型大巴广大操作要求格外处理(例如:七个选项的排挤、每种节点根据项目和操作人突显分化的按钮);基本每一种商户都有1套自个儿的UI风格,要保障多个体系的操作习惯一致只可以选取自定义表单才能满足。

二.二.二 自定义业务Form

那种办法应该是豪门用的最多的了,因为相似的事情系统工作逻辑都会相比复杂,而且数据库中诸多表都会有依靠关系,表单中有诸多情景判断。

诸如大家的系统适用jQuery
UI作为UI,有好多javascript代码,页面包车型地铁众多操作须要尤其处理(例如:多个挑选的排挤、每种节点依据项目和操作人显示不相同的按钮);基本每一种集团都有一套本人的UI风格,要维持四个种类的操作习惯一致只可以利用自定义表单才能满意。

❷ 运转生成提前还款表明书, 其蕴含详细金额多少

二.3 业务和流程的关联格局

本条难题在群里面很四个人都问过,那也是自家刚刚开首吸引的地点;

后来看了以下API发现RuntimeService有五个点子:

2.三 业务和流程的关系情势

这一个难点在群里面很多人都问过,那也是自家刚刚起首吸引的地点;

后来看了以下API发现RuntimeService有四个点子:

❸ 借款人确认, 通过客服服务人口上传签字照片

2.3.1 startProcessInstanceByKey

javadoc对其认证:

startProcessInstanceByKey(String processDefinitionKey, Map variabes) 
          Starts a new process instance in the latest version of the process definition with the given key

 

其中businessKey便是事情ID,例如要提请请假,那么先填写登记音信,然后(保存+运维流程),因为请假是单身设计的数据表,所以保存后得到实体ID就足以把它传给processInstanceBusinessKey形式运营流程。当须要根据businessKey查询流程的时候就足以经过API查询:

runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(processInstanceBusinessKey, processDefinitionKey);

 

议数据库冗余设计:在业务表设计的时候添加一列:PROCESS_INSTANCE_ID varchar2(64),在工艺流程运行未来把流程ID更新到事情表中,那样不管从作业依旧流程都能够查询到对方!

特意表达: 此方法运维时自动选用新型版本的流程定义。

2.3.1 startProcessInstanceByKey

javadoc对其表达:

startProcessInstanceByKey(String processDefinitionKey, Map variables) 
          Starts a new process instance in the latest version of the process definition with the given key

其中businessKey正是事情ID,例如要申请请假,那么先填写登记音信,然后(保存+运行流程),因为请假是独立设计的数据表,所以保存后拿走实体ID就足以把它传给processInstanceBusinessKey主意运转流程。当要求依照businessKey查询流程的时候就足以由此API查询:

?

1
runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(processInstanceBusinessKey,
processDefinitionKey)

提议数据库冗余设计:在业务表设计的时候添加1列:PROCESS_INSTANCE_ID
varchar2(64)
,在流程运行以后把流程ID更新到事情表中,那样不管从事情恐怕流程都可以查询到对方!

专门表明: 此方法运行时自动选取新型版本的流水生产线定义。

❹ 运行代扣还款金额, 结清借款

2.3.2 startProcessInstanceById

javadoc对其认证:

startProcessInstanceById(String processDefinitionId, String businessKey, Map variables) 
          Starts a new process instance in the exactly specified version of the process definition with the given id.

 

processDefinitionId:这些参数的值能够通过repositoryService.createProcessDefinitionQuery()主意查询,对应数据库:ACT_RE_PROCDEF;每一次计划一遍流程定义就会添加一条数据,同名的版本号加上。

特意表达: 此能够钦定不一致版本的流程定义,让用户多1层选择。

2.3.2 startProcessInstanceById

javadoc对其表明:

startProcessInstanceById(String processDefinitionId, String businessKey, Map variables) 
          Starts a new process instance in the exactly specified version of the process definition with the given id.

processDefinitionId:那个参数的值可以因此repositoryService.createProcessDefinitionQuery()格局查询,对应数据库:ACT_RE_PROCDEF;每一次计划一次流程定义就会添加一条数据,同名的本子号添加。

专程表达: 此能够钦赐差别版本的流程定义,让用户多一层选择。

❺ 生成还款结清注解

2.3.叁 怎样挑选

提出接纳startProcessInstanceByKey,特殊意况需求动用过去的版本选择使用startProcessInstanceById

二.三.叁 怎么样挑选

提出接纳startProcessInstanceByKey,特殊境况供给动用过去的版本选拔使用startProcessInstanceById

在平台的骨子里运维中, 有丰硕多采的事情需求处理, 包涵借款人, 出借人,
资金等等, 同时还提到到各样分歧的业务部门,
而且流程的漂泊操作人士和单位也随着企务的上进而各异的调整.
设计叁个基础的流水生产线框架和促成基础代码, 形成不难的费用形式是该体系的要紧.
由此全体系统的设计涉及到以下重点多少个地方:

二.4 同步用户数量

其一标题也是比较多的人询问过,Activiti援助对职责分配到:钦点人、钦命组、两者结合,而那个人和组的新闻都保存在ACT_ID..表中,有自个儿的用户和组(剧中人物)管理让很五人仓皇了;原因是因为各种系统都会存在一个权力管理模块(维护:用户、部门、剧中人物、授权),不知底该怎么和Activiti同步。

贰.四 同步用户数据

以此题材也是比较多的人掌握过,Activiti接济对职分分配到:钦命人、钦定组、两者结合,而那个人和组的消息都保存在ACT_ID..表中,有协调的用户和组(剧中人物)管理让广大人慌慌张张了;原因是因为种种系统都会设有四个权力管理模块(维护:用户、部门、角色、授权),不知晓该怎么和Activiti同步。

☞ 选拔伏贴的行事流引擎

二.四.一 提议处理形式

Activiti有一个IdentityService接口,通过这么些接口可以操控Activiti的ACT_ID_*表的数量,一般的做法是用工作系统的权限管理模块维护用户数据,当进行CRUD操作的时候在原始工作逻辑后边添加同步到Activiti的代码;例如添加二个用户时同步Activiti
User的代码片段:

/**
 * 保存用户信息 并且同步用户信息到activiti的identity.User,同时设置角色
 * @param user
 * @param roleIds
 */
public void saveUser(User user, List<Long> roleIds, boolean synToActiviti) {
    accountManager.saveEntity(user);
    String userId = user.getId().toString();

    if (synToActiviti) {
        List<org.activiti.engine.identity.User> activitiUsers = identityService.createUserQuery().userId(userId).list();
        if (activitiUsers.size() == 1) {
            //更新信息
            org.activiti.engine.identity.User activitiUser = activitiUsers.get(0);
            activitiUser.setFirstName(user.getName());
            activitiUser.setLastName("");
            activitiUser.setPassword(user.getPassword());
            activitiUser.setEmail(user.getEmail());
            identityService.saveUser(activitiUser);

            // 删除用户的membership
            List<Group> activitiGroups = identityService.createGroupQuery().groupMember(userId).list();
            for (Group group : activitiGroups) {
                identityService.deleteMembership(userId, group.getId());
            }

            // 添加membership
            for (Long roleId : roleIds) {
                Role role = roleManager.getEntity(roleId);
                identityService.createMembership(userId, role.getEnName());
            }

        } else {
            org.activiti.engine.identity.User newUser = identityService.newUser(userId);
            newUser.setFirstName(user.getName());
            newUser.setLastName("");
            newUser.setPassword(user.getPassword());
            newUser.setEmail(user.getEmail());
            identityService.saveUser(newUser);

            // 添加membership
            for (Long roleId : roleIds) {
                Role role = roleManager.getEntity(roleId);
                identityService.createMembership(userId, role.getEnName());
            }
        }
    }

}

 

除去操作也和这些类似!

随便从作业系统尊崇用户仍旧从Activiti维护,肯定要鲜明一方,然后CRUD的时候一起到对方,要是必要共同四个子系统那么能够再调用WebService达成。

二.四.一 提议处理格局

Activiti有一个IdentityService接口,通过这么些接口能够操控Activiti的ACT_ID_*表的数码,1般的做法是用工作种类的权位管理模块维护用户数量,当举办CRUD操作的时候在原本业务逻辑前边添加同步到Activiti的代码;例如添加一个用户时同步Activiti
User的代码片段:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
/** * 保存用户信息 并且同步用户信息到activiti的identity.User,同时设置角色 * @param user * @param roleIds */public void saveUser(User user, List<Long> roleIds, boolean synToActiviti) { accountManager.saveEntity(user); String userId = user.getId().toString();   if (synToActiviti) {      List<org.activiti.engine.identity.User> activitiUsers = identityService.createUserQuery().userId(userId).list();       if (activitiUsers.size() == 1) {          //更新信息         org.activiti.engine.identity.User activitiUser = activitiUsers.get(0);          activitiUser.setFirstName(user.getName());           activitiUser.setLastName("");          activitiUser.setPassword(user.getPassword());            activitiUser.setEmail(user.getEmail());          identityService.saveUser(activitiUser);             // 删除用户的membership          List<Group> activitiGroups = identityService.createGroupQuery().groupMember(userId).list();            for (Group group : activitiGroups) {                identityService.deleteMembership(userId, group.getId());          }            // 添加membership          for (Long roleId : roleIds) {               Role role = roleManager.getEntity(roleId);                identityService.createMembership(userId, role.getEnName());           }        } else {         org.activiti.engine.identity.User newUser = identityService.newUser(userId);          newUser.setFirstName(user.getName());            newUser.setLastName("");           newUser.setPassword(user.getPassword());         newUser.setEmail(user.getEmail());           identityService.saveUser(newUser);          // 添加membership          for (Long roleId : roleIds) {               Role role = roleManager.getEntity(roleId);                identityService.createMembership(userId, role.getEnName());           }        }    } }

view
rawAccountServiceImpl.java hosted
with ❤ by GitHub

剔除操作也和那一个就像!

不论从工作连串保障用户依然从Activiti维护,肯定要规定壹方,然后CRUD的时候共同到对方,假使急需一块五个子系统那么能够再调用WebService完毕。

对于多个近乎涉及到审查批准以及实践实际工作的种类, 基于简单的动静控制的统一筹划,
只怕电动开发类工作流引擎轮子的做法都以不合适.
所以1个开源并且被普遍利用的行事流引擎是1个毋庸置疑而且必须的采纳. Activiti
工作流引擎由于其轻量级, 易用性等优点近年来在产业界被大规模使用.
其工作流的状态机和外部系统的连接只供给经过三个ID进行关联即可,
即activiti的business key. (如下图)

二.5 流程图设计工具用哪些

Activiti提供了五个流程设计工具,但是面向对象分裂。

  • Activiti
    Modeler,面向业务人士,使用开源的BPMN设计工具Signavio,使用BPMN描述业务流程图

  • Eclipse
    Designer,面向开发人士,Eclipse的插件,能够让开发人士定制各种节点的属性(ID、Name、Listener、Attr等)

二.5 流程图设计工具用什么

Activiti提供了多个流程设计工具,然则面向对象不一致。

  • Activiti
    Modeler,面向业务职员,使用开源的BPMN设计工具Signavio,使用BPMN描述业务流程图

  • Eclipse
    Designer,面向开发人士,Eclipse的插件,能够让开发职员定制每一个节点的本性(ID、Name、Listener、Attr等)

图片 5

二.伍.1 我们的艺术

莫不你会惊讶,因为大家尚无选取Activiti
Modeler,大家以为用Viso已经能发挥流程图的趣味了,而且项目COO也是技术出身,和开发职员也易于交流。

时下这几个种类是率先个应用Activiti的,初叶我们在要求调查商量阶段接纳Viso设计流程图,利用泳道流程图统一筹划和客户联系,明确后由负责流程的开发职员用Eclipse
Designer设计赢得bpmn20.xml,最终安顿。

二.5.一 我们的法门

或是您会惊讶,因为大家从未利用Activiti
Modeler,大家认为用Viso已经能表达流程图的意趣了,而且项目首席执行官也是技术出身,和开发职员也便于沟通。

此时此刻这一个项目是第二个利用Activiti的,起先大家在须要调查商讨阶段选择Viso设计流程图,利用泳道流程图统筹和客户沟通,分明后由负责流程的开发职员用Eclipse
Designer设计赢得bpmn20.xml,最终布置。

☞设计通用的最底层数据来帮忙分歧的事体

二.陆 Eclipse Designer存在的难点

本条插件有3个很看不惯的Bug向来未修复,安装了插件后Eclipse的复制和粘帖快速键会被转换为(Ctrl+Insert、Shift+Insert);Bug描述请见:

  • Activit
    Forums中告知的Bug

  • Jira的登记

故而最终大家只好单独开二个装置了Eclipse
Designer的Eclipse专门用来布署流程图,那样就不影响健康使用Eclipse
JAVAEE了。

二.陆 Eclipse Designer存在的难点

以此插件有一个很看不惯的Bug一直未修复,安装了插件后Eclipse的复制和粘帖神速键会被更换为(Ctrl+Insert、Shift+Insert);Bug描述请见:

  • Activit
    Forums中告知的Bug

  • Jira的登记

为此最终大家不得不单独开贰个设置了Eclipse
Designer的Eclipse专门用来布署流程图,那样就不影响平时使用Eclipse
JAVAEE了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图