网路冷眼@BlogJava

熙熙攘攘一闲人 以冷静的眼光观察技术
posts - 88, comments - 193, trackbacks - 0, articles - 28
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于Activiti的常见问题(翻译)

Posted on 2010-12-11 20:40 网路冷眼@BlogJava 阅读(3760) 评论(0)  编辑  收藏 所属分类: BPM

Frequently Asked Questions about Activiti

关于Activiti的常见问题

Q:  What is BPM?(BPM是什么?)
Q:  Why are the Business Intelligence (BI) reports so valuable for the business?(为何商业智能(BI)报告对于业务来说如此珍贵?)
Q:  What does Activiti do for me as a Java developer?(Activiti能为Java 开发者做些什么?)
Q:  What is The Process Virtual Machine?(流程虚拟机是什么?)
Q:  What is BPMN 2.0?(何为BPMN 2.0?)
Q:  Is BPMN 2.0 readable enough for developers?(BPMN 2.0对开发人员来说,可读性够吗?)
Q:  Why is the first version called 5.0?(为何第一个版本叫 5.0?)
Q:  Why Apache license?(为何第一个版本叫 5.0?)
Q:  How can I become a contributor to Activiti?(如何才能成为Activiti的贡献者?)
Q:  Which databases does Activiti support?(Activiti支持哪些数据库?)
Q:  What is the difference between process concurrency and Java concurrency? (什么是流程并发和Java并发的差别?)
Q:  Which transaction demarcation technologies can Activiti integrate with? (Activiti能集成哪些事务界定技术?)
Q:  Where can I find the sources? (在哪里找到源代码?)
Q:  Which companies are behind Activiti? (Activiti有哪些幕后的公司?)

What is BPM?

BPM是什么?

BPM stands for Business Process Management.  There are 2 different aspects of BPM: BPM as management discipline and BPM as software engineering.  The BPM vendors have long time tried to make abstraction of those 2 distinct aspects.  That path lead to more confusion then anything else.

BPM代表业务流程管理。BPM有两个不同方面:作为管理学科的BPM和作为软件工程的BPM。BPM供应商长时间来尝试对这两个明显的方面进行抽象。这条道路导致更多的混乱。

BPM as a management discipline is the responsibility of every strategic executive manager.  It's to ensure that the organization performs well in their core business processes.  This involves understanding what values the organization delivers and how those are achieved.  This means analyzing, documenting and improving the way that people and systems work together.  As part of that work, it's useful to work with models and diagrams.   BPMN diagrams express the execution flow of the steps to accomplish a certain goal.   Important to note that these models are used for people to people communication.  They can be underspecified, which means that they can contain valuable high level information without including unnecessary details.  Such underspecified process models are also known as abstract business processes.

作为管理学科的BPM是每个策略执行经理的责任。它确保组织在他们核心的业务流程执行更好。这包括组织提供什么样的价值和那些价值是如何实现的理解。这意味着分析,文档化和改善人们和系统的合作。作为那个工作的一部分,采用模型和图表工作是大有裨益的。BPMN流程图表达了完成某一目标所需步骤的执行流程。它们不能被指定,它意味着它们能包含宝贵的高级信息而不用包括不必要的细节。如此欠指定的流程模型也就是所谓的抽象业务流程。

BPM as software engineering means that executable business processes will be executed by a BPM System (BPMS).  Executable business processes are based on a diagram that represents the different steps in an execution flow.  The diagram can actually look exactly the same as the abstract business process.  But executable business processes are different in some very fundamental ways.  First of all they need more technical details.  That part is generally accepted.

作为软件工程的BPM意味着,可执行的业务流程将被一个BPM系统(BPMS)执行。可执行的业务流程基于在一个执行流程里面表示不同步骤的图表。这个图表实际上看起来和抽象业务流程一样。但是可执行的业务流程在一些非常基础的方法有所不同。首先它们需要更多的技术细节。那部分通常被接收。

But what is less understood is that executable processes only take the perspective of a single system, the BPMS.  The BPMS can act as a coordinator, so steps in the process could be for example user tasks.  Then the user task becomes a wait state for the BPMS.  And when the external task is completed, then the BPMS acting as a coordinator should be informed about the completion.   In that context, a BPMS often acts as a state machine.   So it's clear that the BPMS, even as a coordinator, can not handle steps between 2 external parties.  For example, warehouse clerk handing over an order to a packager that wraps the order package.  Imagine none of that is automated, then there is no way of the BPMS to be informed about those steps.  So they can't be modeled distinctly in the executable business process.

但是很少被理解的是可执行流程只采用了单个系统,BPMS的透视图。BPMS可能扮演一个协调者的角色,所以例如流程里面的步骤可能是用户任务。那么用户任务成为BPMS的等待状态。当外部任务完成时,作为协调者的BPMS应当接收到有关完成的通知。在那个上下文环境下,BPMS经常扮演一个状态机。所以,甚至作为一个协调者的BPMS,也不能处理两个外部当事人之间的步骤。想象一些那些没有被自动化,那么就没有方法让BPMS得到有关那些步骤的通知。所以不能明显地以可执行业务流程方式对它们建模。

Another less known difference between abstract and executable business processes is that executable processes are part of the software development lifecycle.  That implies they are under the control of the technical developers and that executable processes need unit testing just like any other piece of software.  

另外一个鲜有人知的抽象和可执行业务流程之间的差别是可执行流程是软件开发生命周期的一部分。那暗示它们在技术开发者控制之下并且可执行流程需要正如其它软件片段那样的单元测试。

Traditional BPM vendors try to abstract those differences with automagical round tripping between abstract process models and executable process models.   But in general, that approach fails in practice.  At Activiti, we've developed an innovative vision to deal with these differences.  The Process Cycle Layer will be a cornerstone in this strategy.

传统的BPM供应商尝试抽象那些在抽象流程模型和可执行流程模型之间的迂回的差别。但是,通常来讲,那个方法在实践上是失败的。在Activiti,我们已经开发一个创新视图来处理这些差别。流程周期层将是这个策略的基石。

Back to Top

Why are the Business Intelligence (BI) reports so valuable for the business?

为何商业智能(BI)报告对于业务来说如此珍贵?

Once you have your business processes deployed, Activiti automatically captures everything that happens in the Activiti history DB.  For example, how long does each process instance or activity instance take, who submitted which data and when, in which continent does this sale occur, which order is this process for, which contract was this insurance claim for, and so on.  If you don't turn it off explicitely, all that information stored in the history information.  From that history information, various kinds of reports can be generated.  Those reports show analytics on that data.  Like for example: The average time for each activity in the process,  the amount of sales per region, the percentage of rejected orders, and so on.

一旦部署业务流程,Activiti自动捕获在Activiti历史数据库中发生的任何事情。例如,流程实例或者活动实例花费多长时间,谁提交数据,合适提交,这个销售发生在哪个洲,这个流程处理那个订单,这个保险索赔哪个合同等等。如果你没有显示关掉,所有信息保存在历史信息。来自那些历史信息,能够产生不同种类的报告。这些报告显示那些数据的分析。例如像:流程里面每个活动的平均时间,每个地区的销售量,拒绝订单的百分比,等等。

Because the graphical diagram of the executable business processes has been driven by the business people, it means that the automatically generated analytics also have meaning on a business level.  That is a crucial win for BPM Systems.

因为可执行业务流程的图形化图表是被业务人员驱动的,这意味着自动化产生的分析也在业务水平上具有意义。那是BPM的关键胜利。

Another use case for the history information are audit logs.  Also those come for free when developing your solution based on a business process.  Who filled out what and when gives highly traceable decisions.  The task comments even can give the full context of why certain decisions were taken at the time.

历史信息的另外用例是审计日志。当开发基于业务流程上的解决方案时,那也是免费的。谁填充什么和何时给定高级可跟踪决策。任务注释甚至能够给定在那时为什么采取某一决策的全部上下文。

Back to Top

What does Activiti do for me as a Java developer?

Activiti能为Java 开发者做些什么?

First, you as a developer get business intelligence and audit logs features for free.  And with building your solution on business processes, Activiti will help developers to structure their software better.  Think about user tasks, external systems and timers that need to be managed.  And then try to think how you like your transaction boundaries    of your application.  That puzzle can be a challenge in enterprise applications.  Building that kind of features becomes a lot easier when structuring an application around a business process.  Managing wait states, timers and asynchronous continuations becomes peanuts.   A business process can express that structure a lot more compact then working with the fundamental instruments that the Java platform offers like JDBC and JMS.  And Activiti makes sure that you can easily link in Java or scripting for jobs that are better done in other languages.

首先,作为开发者,可以免费获得商业智能(BI)和审计日志。在业务流程之上的构建解决方案的帮助下,Activiti将帮助开发者让他们的软件结构更好。考虑关于用户任务,需要管理外部系统和定时器。然后尝试考虑应用程序的事务边界如何。在企业应用程序里,那个难题是一个挑战。当围绕业务流程对应用程序进行结构化分解,构建那种特性的软件成为相当容易的事。管理等待状态,定时器和异步持续成为小事一桩。业务流程能够表达结构更紧凑,用Java平台提供的像JDBC和JMS指令的基础仪器来工作。并且Activiti确保你能够轻松地以Java连接或者为作业编写脚本,这些语言比其它语言做得更好。

Back to Top

What is The Process Virtual Machine?

流程虚拟机是什么?

The Process Virtual Machine (PVM) is an architecture design pattern for process engines.  The structure of the process definition is separated from the implementation of the different activity types.  And the runtime data structure for process executions is based on a pointer to an activity in the process graph.  Activity types and hence whole process languages become pluggable on that single core engine.

流程虚拟机(PVM)是一个针对流程引擎的架构模式。流程定义的结果从不同的活动类型实现中分离开来。并且流程执行的运行时数据结构基于一个流程图数据结构的活动节点上的指针。活动类型因此整个流程语言在单个核心引擎上成为可插拔的。

In the forseeable future, Activiti will only target BPMN 2.0 as a general purpose process language.   But we anticipate that Activiti will be leveraged to build a lot of limited and dedicated process languages for specific use cases.  For example pageflow that models the navigation between pages in a webapp, or a simple language to script Spring integration services, or orchestrate some Spring batch jobs, and so on.

在可以预见的未来,Activiti只有一个目标:将BPMN 2.0作为通用的流程语言。但是我们希望Activiti将作为杠杆为特定用例构建许多有限的和专有的流程语言。例如,为webapp页面之间导航建模的页面流程,或者针对Spring集成服务进行脚本的简单语言,或者编排一些Spring批处理的作业,等等。

Back to Top

What is BPMN 2.0?

何为BPMN 2.0?

The BPM market has longtime been fragmented because there was no concerns us amongst BPM vendors. Several standards and specifications tried to fill that gap in the past, but none gathered enough traction in the industry to become an accepted standard for doing BPM. But luckily, times are changing, and over the past years BPM vendors have sat together to create a standard that unifies the BPM landscape. That standard is called 'BPMN', which stands for 'Business Process Model and Notation', and is developed and maintained by the Object Management Group (OMG) since 2004.

因为没有BPM供应商关注我们,所以BPM市场已经长期被割裂。几个标准和规格试图填补过去的差距,但没有足够的产业聚集在做牵引,以成为一个公认的标准业务流程管理。但幸运的是,时代在变,而且在过去几年里BPM厂商已经坐在一起,建立一个标准,统一的BPM景观。那个标准叫做“BPMN”,它代表“业务流程模型和符号”,自从2004年以来,由对象管理组(OMG)开发和维护。

The first version of the BPMN specification (versions 1.x, first version released in 2004) focussed on graphical notation only, and became quickly popular within the business analyst audience. This means that the BPMN 1.x specification defines how concepts such as a human task, an executable script, automated decisions, etc. are visualized in a vendor-neutral standardized way. The second version (2.0), extends that focus to include execution semantics and a common exchange format. This means that BPMN 2.0 process definition models are not only exchangeable between graphical editors, but those models can also be executed as-is on any BPMN 2.0 compliant engine such as Activiti.

BPMN规范的第一个版本(版本1.x,第一个版本在2004年发布)只关注图形符号,并在业务流程观众之间迅速流行。这意味着BPMN 1.x规范定义诸如人力任务,可执行脚本,自动化决策等等是如何的概念,并以一个供应商中立的标准的方式开可视化。第二个版本(2.0),扩展了该重点包括执行语义和共同交换格式。这意味着BPMN 2.0流程定义模型不仅在图像编辑器之间是可交换的,而且那些模型也能够在任何BPMN 2.0兼容的引擎里面得到执行,比如Activiti。

It's easy to understand that the future of BPM is BPMN 2.0. And we at Activiti are very happy to bring you that future, today.

BPM的未来是2.0是易于理解的。并且今天,作为Activiti团队的我们将荣幸地将你带到未来。

Back to Top

Is BPMN 2.0 readable enough for developers?

BPMN 2.0对开发人员来说,可读性够吗?

The Process Virtual Machine allows the Activiti Engine to support multiple process languages natively. Which language that the developers will choose is hard to predict at this time. In fact, developers will use different process languages depending on their needs. We'll go through great efforts to make BPMN 2.0 as developer friendly as possible. For example with the principle of BPMN shortcuts. We'll also include Java event listeners and Spring support into BPMN 2.0 so that your Spring beans can be accessed from any expressions.

流程虚拟机允许Activiti引擎内置支持多个流程语言。开发人员将选择哪种语言这是还很难预测。事实上,开发人员将依赖它们不同的需求使用不同的流程语言。我们将通过巨大的努力让BPMN 2.0 对开发人员尽可能友好。例如,采用BPMN捷径( BPMN shortcuts)的原则。我们也将包括Java事件监听器和包括把Spring支持集成到BPMN 2.0,以便从任何表达式访问Spring bean。

Back to Top

Activiti or jBPM, which should I use in my next project?

在我的下一个项目中使用哪个:是Activiti还是jBPM?

Activiti builds further on the huge experience that we build up from founding jBPM till the Process Virtual Machine design in jBPM 4.  In Activiti we now have united very skilled and talented people and companies to build the next generation BPM technology.  BPMN 2.0 will be the future of BPM and we have the know-how to bring these features in a developer friendly manner.  Activiti's dedicated focus on BPMN 2.0 enables us to deliver a future proof BPM and workflow solution.

Activiti进一步建立庞大的建设经验,这个经验自从在jBPM 4里的流程虚拟机设计时就开始构建。在Activiti我们现在已经具备非常熟练和团结的人才和公司来建立下一代BPM技术。 BPMN的2.0将BPM的未来,我们有知识,使开发人员友好的方式处理这些功能。 Activiti对BPMN的2.0专一的关注使我们能够提供面向未来的BPM和工作流程解决方案。

Given that we spend a lot of effort building jBPM 4 and that we were very proud of the results, we regret that a jBPM 4 is discontinued as indicated by JBoss

鉴于在构建jBPM 4时,我们做出了极大的努力并且我们以这个结果为荣,我们很遗憾JBoss指示终止就jBPM 4。

https://community.jboss.org/blogs/mark.little/2010/04/23/the-future-of-workflow-in-jboss
"It is fair to say that there was expectation that jBPM 4 would appear in a version of the SOA Platform as a replacement for jBPM 3. With the changes to the jBPM project team and the next steps in unifying our efforts in this area across projects, it is not going to happen."

“公平地说,有期望jBPM 4 将作为就BPM3 的替代,出现在SOA平台的一个版本。随着向jBPM项目团队的变化和统一我们在这方面的努力在项目间的下一步骤,它是不会发生的。”

Activiti will not suffer from a single company vulnerability.  We're extremely happy that Alfresco gave us the opportunity to develop Activiti with an intend to make it an Apache project.  Core at the Apache foundation's value is the continuity of projects and guaranteeing that it stays true the community.  So one of the requirements is that multiple companies have to be actively involved in the community of a project.   From the start, SpringSource is joining this initiative so we are well on our way to ensure Activiti will have a long life that is not under the full control of a single person or company.

Activiti不会遭遇到单个公司的漏洞。我们非常高兴的是,Alfresco公司使我们有机会开发Activiti并打算使其成为Apache项目。在Apache基金会的价值的核心是项目的连续性,保证它真正停留社区。所以其中的一个需求是公司介入到项目的社区中来。从一开始,SpringSource以我们的方式加入这一倡议,使我们有充分的保证Activiti将有长时间不会在在单个人士或公司的完全控制之下。

Back to Top

Why is the first version called 5.0?

为何第一个版本叫 5.0?

That's to indicate that we're not building experimental stuff here.  We continue to build on our experience that we gained developing the jBPM versions 1 to 4.  We use that knowledge as a base line and work with the community to build the next generation BPM solution.

那就是指明我们不是在生产实验性的玩具。我们是在我们在开发jBPM 版本1 到4 时积累的经验之上继续构建。我们使用那些知识作为基线,并和社区一道打造下一代的BPM解决方案。

Back to Top

Why Apache license?

为何采用Apache 许可方式?

Activiti is licensed under the Apache License 2.0 to encourage widespread usage and adoption of the Activiti BPM engine and BPMN 2.0. By choosing such a liberal licence, we want to emphasize our goal of commoditizing BPM technology.

Activiti采用Apache License 2.0方式授权许可,以鼓励广泛的使用和采用Activiti BPM引擎和BPMN 2.0。通过选择如此自由的许可,我们希望强调BPM技术的商品化目标。

Back to Top

How can I become a contributor to Activiti?

我如何才能成为Activiti的贡献者?

See wiki page How to become a contributor?.

参见wiki页面如何成为一个贡献者?

Back to Top

Which databases does Activiti support?

Activiti支持哪些数据库?

In this first alpha release, we only support H2. Before the 5.0.GA release we will include support for at least:

在首个alpha版本,我们只支持H2。在5.0版本发布之前,我们将至少支持:

· H2

· Oracle

· MySQL

· PostgreSQL

Subsequent database compatibility will be driven by demand.

后续的数据库兼容性将由需求驱动。

Back to Top

What is the difference between process concurrency and Java concurrency?

什么是流程并发和Java并发的差别?

The Activiti Engine uses the database for synchronization. A process is executed in transactional steps. Each step is calculated with a single thread. Which is logical since calculations that need to happen between two wait states is typically minimal and hence typically it is not an optimisation to calculate different paths in concurrent threads. Access to a DB connection has to be synchronized anyway.

Activiti为了同步使用数据库。流程在事务步骤里面执行。每步采用单个线程来计算。这是符合逻辑的,因为在连个等待状态之间需要发生的计算典型地市最小。并且由此典型地,在并发线程里面计算不同的路径不是最优的。对数据库连接的访问无论如何都必须同步。

By default, Activiti Engine uses the thread of the client to perform it's work. That is the easiest to embed it into other software. In the future we envision configurations that allow for asynchronous execution of the service methods. The current architecture would allow that very easily.

缺省地,Activiti引擎使用客户线程来完成它的工作。那时最容易将它嵌入到其它软件当中。在未来,我们设想允许服务方法的异步执行的配置。当前的架构非常容易地将允许这样的方式。

Processes include activities that need to wait for an external trigger. Activiti Engine will never block a thread in those situations. That is when the execution state is persisted and then the transaction commits. If you look at the database and you imagine that all calculations to execute the process happen instantly, then it's often easier to envision the logic of Activiti Engine.

流程包括需要等待一个外部触发器的活动。Activiti引擎将从不阻碍它们环境下的线程。那就是当执行状态持久化时,那么事务才提交。如果你查看数据库,你想象得到执行流程的计算立即发生,那么设想Activiti引擎的逻辑是通常是比较容易的方式。

The behavior of Activiti Engine to calculate possibly multiple steps in a process until a wait state is reached is the default behavior. Asynchronous continuations will be introduced to allow for a more fine grained demarcation of transactions for those situations where it is needed.

Activiti引擎的计算行为在多个步骤可能是一个等待状态到达流程的多个步骤,它是一个缺省行为。为了它们所需的状态的地方,将引入异步持续允许更细粒度的事务界定。

Back to Top

Which transaction demarcation technologies can Activiti integrate with?

Activiti能集成哪些事务界定技术?

Activiti integrates with:

Activiti能集成:

· Standalone JDBC

· Spring (alpha 2)

· JTA (alpha 3)

Back to Top

Where can I find the sources?

在哪里寻找源代码?

See the Community

参见

Back to Top

Which companies are behind Activiti?

Activiti有哪些幕后的公司?

See the Team page See the Team page

参见团队页面

Back to Top


只有注册用户登录后才能发表评论。


网站导航: