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

Activiti工作流引擎使用

澳门新葡8455手机版 1

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

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

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

对于工作流引擎的演讲请参见百度完善:办事流引擎

对于网络经济平台来说,首要的业务愈发是关系资本工作相关操作时都有须求有连锁的审查批准流程.同时在流水生产线的流转进程中要求和一一业务系统开始展览互动,完结真正的政工处理,
并记录那几个进度中全部人的操作以及每一步操作时所提到数额快速照相,以便于内外部审计和题材的追溯.

1.1 我与办事流引擎

在率先家商厦做事的时候根本职责正是开发OA系统,当然基本都是有工作流的帮衬,可是当下使用的做事流引擎是公司部分牛人开发的(据悉是用三个开源的斯特林发动机械修理改的),名称叫CoreFlow;作用相对Activiti来说相比弱,可是能满意普通的利用,当然也有很多的难题因而后来大家不得不修改引擎的代码打补丁。

近日是本人工作的第②家公司,因为要开发ETucsonP、OA等系列须求使用工作流,在品种调查切磋阶段本身先找找资料接纳选用哪个开源做事流引擎,最终明确了Activiti5并依据商行的架构做了有的DEMO。

1.1 小编与工作流引擎

在第①家商厦办事的时候根本职务就是开发OA系统,当然基本都以有工作流的扶助,可是当下采用的干活流引擎是集团部分牛人开发的(听新闻说是用三个开源的内燃机械修理改的),名称叫CoreFlow;效能相对Activiti来说比较弱,但是能知足普通的行使,当然也有过多的题材因而后来大家只可以修改引擎的代码打补丁。

后天是自小编工作的第一家公司,因为要开发EXC90P、OA等系统须求动用工作流,在品种调查钻探阶段自个儿先找找资料选用选拔哪个开源干活流引擎,最后明确了Activiti5并依据商户的架构做了有个别DEMO。

◆✦上面为三个独立的业务流程✦◆

1.2 Activiti与JBPM5?

对此Activiti、jBPM肆 、jBPM5我们理应怎样选用,在InfoQ上有一篇小说写的很好,从大的层面相比各种引擎之间的差别,请参见小说:纵观jBPM:从jBPM3到jBPM5以及Activiti5

1.2 Activiti与JBPM5?

对于Activiti、jBPM四 、jBPM5大家相应什么抉择,在InfoQ上有一篇文章写的很好,从大的范围比较各样引擎之间的差异,请参考作品:纵观jBPM:从jBPM3到jBPM5以及Activiti5

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

1.3 Activiti资料

  • 官网:

  • 下载:

  • 本子:Activiti的版本是从5开始的,因为Activiti是使用jBPM4的源码;本子发表:五个月发表一次。

  • Eclipse Plugin: 

  • Activit中文群:5435716

1.3 Activiti资料

  • 官网:

  • 下载:

  • 本子:Activiti的本子是从5开始的,因为Activiti是使用jBPM4的源码;本子发布:6个月发表一遍。

  • Eclipse Plugin: 

  • Activit中文群:236540304

澳门新葡8455手机版 2

2.第1使用遭受难题采访

因为Activiti刚刚退出不久所以资料比较空缺,普通话资料越发少的可怜,所以伊始的时候一只雾水(纵然此前用过工作流,不过觉得距离很多),而且官方的手册还不是很周到;所以自个儿把自个儿在就学应用的进度碰到的某些问号都位列出来分享给我们;以下几点是本人遇见和想到的,要是您还有啥样难点能够在评价卯月自家沟通再补充。

2.第二使用境遇标题收集

因为Activiti刚刚退出不久所以资料相比较空缺,汉语资料越发少的可怜,所以先河的时候一头雾水(固然事先用过工作流,但是感觉距离很多),而且官方的手册还不是很周密;所以自个儿把自身在上学生运动用的进程遇到的一部分疑点都位列出来分享给大家;以下几点是自己遇见和想到的,假使您还有啥样疑点能够在言三语四大壮本人沟通再补充。

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

2.1 计划流程图后中文乱码

乱码是一贯缠绕着国人的题材,在此以前各样技术、工具现身乱码的题目写过不少稿子,那里也不例外……,Activiti的乱码难题在流程图中。

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

澳门新葡8455手机版 3

消除办法有二种:

2.1 安顿流程图后普通话乱码

乱码是一贯缠绕着国人的题材,从前各类技术、工具出现乱码的标题写过无数篇章,那里也不例外……,Activiti的乱码难点在流程图中。

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

澳门新葡8455手机版 4

化解办法有二种:

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

2.1.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);

2.1.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.1.2 使用压缩包格局地署

Activiti援助安排*.bpmn20.xml、bar、zip格式的流水线定义。

运用Activit Deisigner工具设计流程图的时候会有四个项目标文书:

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

  • .bpmn20.xml设计工具自动根据.activiti文件生成的xml文件

  • .png流程图图片

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

从而把xml和图片同时配备的时候Activiti自动关联xml和图纸,当必要获得图片的时候一向重临安排时压缩包里面包车型大巴图样文件,而不是Activiti自动生成的图样文件

2.1.2 使用压缩包形式布置

Activiti支持布署*.bpmn20.xml、bar、zip格式的流水生产线定义。

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

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

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

  • .png流程图图片

消除办法就是把xml文件和图片文件同时配备,因为在独立布署xml文件的时候Activiti会自动生成一张流程图的图形文件,可是这样在应用的时候坐标和图纸对应不起来……

从而把xml和图纸同时配备的时候Activiti自动关联xml和图表,当须要获得图片的时候从来重临计划时压缩包里面包车型地铁图片文件,而不是Activiti自动生成的图纸文件

❷ 申请提交系统后, 由风控举办审查批准

2.1.2.1 使用工具打包Bar文件

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

2.1.2.1 使用工具打包Bar文件

在“Package Explorer”视图中右键项目名称然后点击“Create deployment
artifacts”,会在src目录中成立deployment文本夹,里面包涵*.bar文件.

❸ 运转部门开展改动操

2.1.2.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文件。

2.1.2.2 使用Ant脚本打包Zip文件

那也是我们运用的法门,你可以手动选项xml和png打包成zip格式的文件,也能够像大家一样接纳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.2 使用引擎提供的Form还是自定义业务Form

2.2 使用引擎提供的Form如故自定义业务Form

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

2.2.1 引擎提供的Form

概念表单的核心在各类Task标签中定义extensionElementsactiviti:formProperty即可,到达这么些节点的时候能够经过API读取表单元素。

Activiti官方的例子使用的正是在流程定义中设置每种节点彰显怎么的表单哪些字段要求出示、哪些字段只读、哪些字段必填。

然则那种格局唯有适用于比较简单的流程,对于有些复杂或然页面供给工作逻辑的判断的图景就不适用了。

对此数据的保留都是在外燃机的表中,不方便人民群众和其他表的涉嫌、对总系列统的陈设性也不利于!

2.2.1 引擎提供的Form

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

Activiti官方的例证使用的正是在工艺流程定义中安装每一种节点展现怎么的表单哪些字段须要出示、哪些字段只读、哪些字段必填。

但是那种措施唯有适用于比较简单的流程,对于有个别复杂也许页面必要工作逻辑的判定的图景就不适用了。

对此数据的保留都以在汽油发动机的表中,不方便人民群众和任何表的关系、对总体种类的宏图也不利于!

❶ 借款人联系客服人士, 提交报名

2.2.2 自定义业务Form

那种形式应该是豪门用的最多的了,因为一般的作业系统工作逻辑都会相比较复杂,而且数据库中有的是表都会有依靠关系,表单中有成都百货上千场所判断。

譬如大家的系统适用jQuery
UI作为UI,有那个javascript代码,页面包车型地铁无数操作需求尤其处理(例如:八个选项的排外、每种节点遵照项目和操作人展现差异的按钮);基本各类卖家都有一套本人的UI风格,要保证多个系统的操作习惯一致只好使用自定义表单才能满意。

2.2.2 自定义业务Form

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

澳门新葡8455手机版,譬如大家的系统适用jQuery
UI作为UI,有无数javascript代码,页面包车型地铁重重操作需求极度处理(例如:三个选用的排斥、每一种节点依据项目和操作人展现不一样的按钮);基本各样集团都有一套本身的UI风格,要有限支撑多个种类的操作习惯一致只好选拔自定义表单才能知足。

❷ 运维生成提前还款表达书, 其包含详细金额多少

2.3 业务和流程的关系格局

其一题材在群里面很四个人都问过,那也是本身刚刚开首迷惑的地点;

新兴看了以下API发现RuntimeService有八个章程:

2.3 业务和流程的关联格局

本条标题在群里面很多个人都问过,这也是本人刚刚起初迷惑的地点;

后来看了以下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)

提出数据库冗余设计:在业务表设计的时候添加一列: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;每一次安排三次流程定义就会添加一条数据,同名的版本号加上。

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

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.3 怎么着挑选

指出选取startProcessInstanceByKey,特殊情状需求动用过去的版本采取选用startProcessInstanceById

2.3.3 怎么着选拔

提出选用startProcessInstanceByKey,特殊情况供给动用过去的本子采纳接纳startProcessInstanceById

在平台的莫过于运转中, 有各式各种的政工必要处理, 包含借款人, 出借人,
资金等等, 同时还关系到各类差异的业务部门,
而且流程的流转操作职员和机关也乘机公司工作的前进而各异的调整.
设计3个基础的流程框架和落到实处基础代码, 形成简单的支出方式是该体系的重中之重.
因而总连串统的布署涉及到以下重点多少个地点:

2.4 同步用户数据

这一个标题也是比较多的人明白过,Activiti帮助对职责分配到:内定人、内定组、两者结合,而这么些人和组的音讯都保存在ACT_ID..表中,有投机的用户和组(剧中人物)管理让众多少人心惊肉跳了;原因是因为各样系统都会存在四个权力管理模块(维护:用户、部门、角色、授权),不领会该怎么和Activiti同步。

2.4 同步用户数量

本条难点也是比较多的人询问过,Activiti协理对职务分配到:钦点人、钦定组、两者结合,而这几个人和组的音信都保存在ACT_ID..表中,有协调的用户和组(剧中人物)管理让广大人心惊肉跳了;原因是因为各个系统都会设有3个权力管理模块(维护:用户、部门、角色、授权),不知情该怎么和Activiti同步。

☞ 选用适当的办事流引擎

2.4.1 建议处理方式

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的时候共同到对方,借使供给联合多少个子系统那么能够再调用Web瑟维斯实现。

2.4.1 提议处理格局

Activiti有一个IdentityService接口,通过这么些接口能够操控Activiti的ACT_ID_*表的数量,一般的做法是用工作系统的权能管理模块维护用户数据,当举办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完成。

对此三个类似涉及到审查批准以及实施实际业务的系统, 基于简单的情形控制的宏图,
或然电动开发类工作流引擎轮子的做法都以不合适.
所以3个开源并且被大面积选取的工作流引擎是3个不错而且必须的选拔. Activiti
工作流引擎由于其轻量级, 易用性等优点近期在产业界被普遍使用.
其工作流的状态机和外部系统的连日只须求经过八个ID实行关联即可,
即activiti的business key. (如下图)

2.5 流程图设计工具用什么样

Activiti提供了多少个流程设计工具,可是面向对象不相同。

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

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

2.5 流程图设计工具用哪些

Activiti提供了四个流程设计工具,可是面向对象区别。

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

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

澳门新葡8455手机版 5

2.5.1 大家的艺术

唯恐您会好奇,因为我们并未利用Activiti
Modeler,大家觉得用Viso已经能表明流程图的意趣了,而且项目老板也是技术出身,和开发职员也简单沟通。

当前以此种类是首先个应用Activiti的,伊始大家在需要调查商量阶段选择Viso设计流程图,利用泳道流程图安顿和客户关系,明确后由负责流程的开发人士用Eclipse
Designer设计赢得bpmn20.xml,最终布署。

2.5.1 大家的艺术

恐怕你会惊叹,因为大家平昔不应用Activiti
Modeler,大家以为用Viso已经能发挥流程图的趣味了,而且项目老板也是技巧出身,和开发人士也易于交流。

此时此刻以此项目是第一个利用Activiti的,开头我们在须求调查琢磨阶段选取Viso设计流程图,利用泳道流程图统一筹划和客户交流,明确后由负责流程的开发职员用Eclipse
Designer设计赢得bpmn20.xml,最终安顿。

☞设计通用的最底层数据来支撑分裂的业务

2.6 Eclipse Designer存在的题材

其一插件有一个很厌恶的Bug平素未修复,安装了插件后Eclipse的复制和粘帖急忙键会被撤换为(Ctrl+Insert、Shift+Insert);Bug描述请见:

  • Activit
    Forums中告诉的Bug

  • Jira的登记

因此最后大家只能单独开1个装置了Eclipse
Designer的Eclipse专门用来统一筹划流程图,那样就不影响健康使用Eclipse
JAVAEE了。

2.6 Eclipse Designer存在的难题

其一插件有贰个很讨厌的Bug一贯未修复,安装了插件后Eclipse的复制和粘帖赶快键会被转移为(Ctrl+Insert、Shift+Insert);Bug描述请见:

  • Activit
    Forums中报告的Bug

  • Jira的登记

于是最后大家只能单独开3个装置了Eclipse
Designer的Eclipse专门用来安排流程图,这样就不影响健康使用Eclipse
JAVAEE了。

发表评论

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

网站地图xml地图