關(guān)于Activiti的常見問題(翻譯)
Posted on 2010-12-11 20:40 網(wǎng)路冷眼@BlogJava 閱讀(3788) 評論(0) 編輯 收藏 所屬分類: BPMFrequently Asked Questions about Activiti
關(guān)于Activiti的常見問題
Q: What is BPM?(BPM是什么?)
Q: Why are the Business Intelligence (BI) reports so valuable for the business?(為何商業(yè)智能(BI)報告對于業(yè)務(wù)來說如此珍貴?)
Q: What does Activiti do for me as a Java developer?(Activiti能為Java 開發(fā)者做些什么?)
Q: What is The Process Virtual Machine?(流程虛擬機(jī)是什么?)
Q: What is BPMN 2.0?(何為BPMN 2.0?)
Q: Is BPMN 2.0 readable enough for developers?(BPMN 2.0對開發(fā)人員來說,可讀性夠嗎?)
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的貢獻(xiàn)者?)
Q: Which databases does Activiti support?(Activiti支持哪些數(shù)據(jù)庫?)
Q: What is the difference between process concurrency and Java concurrency? (什么是流程并發(fā)和Java并發(fā)的差別?)
Q: Which transaction demarcation technologies can Activiti integrate with? (Activiti能集成哪些事務(wù)界定技術(shù)?)
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代表業(yè)務(wù)流程管理。BPM有兩個不同方面:作為管理學(xué)科的BPM和作為軟件工程的BPM。BPM供應(yīng)商長時間來嘗試對這兩個明顯的方面進(jìn)行抽象。這條道路導(dǎo)致更多的混亂。
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.
作為管理學(xué)科的BPM是每個策略執(zhí)行經(jīng)理的責(zé)任。它確保組織在他們核心的業(yè)務(wù)流程執(zhí)行更好。這包括組織提供什么樣的價值和那些價值是如何實現(xiàn)的理解。這意味著分析,文檔化和改善人們和系統(tǒng)的合作。作為那個工作的一部分,采用模型和圖表工作是大有裨益的。BPMN流程圖表達(dá)了完成某一目標(biāo)所需步驟的執(zhí)行流程。它們不能被指定,它意味著它們能包含寶貴的高級信息而不用包括不必要的細(xì)節(jié)。如此欠指定的流程模型也就是所謂的抽象業(yè)務(wù)流程。
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意味著,可執(zhí)行的業(yè)務(wù)流程將被一個BPM系統(tǒng)(BPMS)執(zhí)行。可執(zhí)行的業(yè)務(wù)流程基于在一個執(zhí)行流程里面表示不同步驟的圖表。這個圖表實際上看起來和抽象業(yè)務(wù)流程一樣。但是可執(zhí)行的業(yè)務(wù)流程在一些非常基礎(chǔ)的方法有所不同。首先它們需要更多的技術(shù)細(xì)節(jié)。那部分通常被接收。
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.
但是很少被理解的是可執(zhí)行流程只采用了單個系統(tǒng),BPMS的透視圖。BPMS可能扮演一個協(xié)調(diào)者的角色,所以例如流程里面的步驟可能是用戶任務(wù)。那么用戶任務(wù)成為BPMS的等待狀態(tài)。當(dāng)外部任務(wù)完成時,作為協(xié)調(diào)者的BPMS應(yīng)當(dāng)接收到有關(guān)完成的通知。在那個上下文環(huán)境下,BPMS經(jīng)常扮演一個狀態(tài)機(jī)。所以,甚至作為一個協(xié)調(diào)者的BPMS,也不能處理兩個外部當(dāng)事人之間的步驟。想象一些那些沒有被自動化,那么就沒有方法讓BPMS得到有關(guān)那些步驟的通知。所以不能明顯地以可執(zhí)行業(yè)務(wù)流程方式對它們建模。
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.
另外一個鮮有人知的抽象和可執(zhí)行業(yè)務(wù)流程之間的差別是可執(zhí)行流程是軟件開發(fā)生命周期的一部分。那暗示它們在技術(shù)開發(fā)者控制之下并且可執(zhí)行流程需要正如其它軟件片段那樣的單元測試。
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.
傳統(tǒng)的BPM供應(yīng)商嘗試抽象那些在抽象流程模型和可執(zhí)行流程模型之間的迂回的差別。但是,通常來講,那個方法在實踐上是失敗的。在Activiti,我們已經(jīng)開發(fā)一個創(chuàng)新視圖來處理這些差別。流程周期層將是這個策略的基石。
Why are the Business Intelligence (BI) reports so valuable for the business?
為何商業(yè)智能(BI)報告對于業(yè)務(wù)來說如此珍貴?
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.
一旦部署業(yè)務(wù)流程,Activiti自動捕獲在Activiti歷史數(shù)據(jù)庫中發(fā)生的任何事情。例如,流程實例或者活動實例花費(fèi)多長時間,誰提交數(shù)據(jù),合適提交,這個銷售發(fā)生在哪個洲,這個流程處理那個訂單,這個保險索賠哪個合同等等。如果你沒有顯示關(guān)掉,所有信息保存在歷史信息。來自那些歷史信息,能夠產(chǎn)生不同種類的報告。這些報告顯示那些數(shù)據(jù)的分析。例如像:流程里面每個活動的平均時間,每個地區(qū)的銷售量,拒絕訂單的百分比,等等。
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.
因為可執(zhí)行業(yè)務(wù)流程的圖形化圖表是被業(yè)務(wù)人員驅(qū)動的,這意味著自動化產(chǎn)生的分析也在業(yè)務(wù)水平上具有意義。那是BPM的關(guān)鍵勝利。
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.
歷史信息的另外用例是審計日志。當(dāng)開發(fā)基于業(yè)務(wù)流程上的解決方案時,那也是免費(fèi)的。誰填充什么和何時給定高級可跟蹤決策。任務(wù)注釋甚至能夠給定在那時為什么采取某一決策的全部上下文。
What does Activiti do for me as a Java developer?
Activiti能為Java 開發(fā)者做些什么?
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.
首先,作為開發(fā)者,可以免費(fèi)獲得商業(yè)智能(BI)和審計日志。在業(yè)務(wù)流程之上的構(gòu)建解決方案的幫助下,Activiti將幫助開發(fā)者讓他們的軟件結(jié)構(gòu)更好。考慮關(guān)于用戶任務(wù),需要管理外部系統(tǒng)和定時器。然后嘗試考慮應(yīng)用程序的事務(wù)邊界如何。在企業(yè)應(yīng)用程序里,那個難題是一個挑戰(zhàn)。當(dāng)圍繞業(yè)務(wù)流程對應(yīng)用程序進(jìn)行結(jié)構(gòu)化分解,構(gòu)建那種特性的軟件成為相當(dāng)容易的事。管理等待狀態(tài),定時器和異步持續(xù)成為小事一樁。業(yè)務(wù)流程能夠表達(dá)結(jié)構(gòu)更緊湊,用Java平臺提供的像JDBC和JMS指令的基礎(chǔ)儀器來工作。并且Activiti確保你能夠輕松地以Java連接或者為作業(yè)編寫腳本,這些語言比其它語言做得更好。
What is The Process Virtual Machine?
流程虛擬機(jī)是什么?
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.
流程虛擬機(jī)(PVM)是一個針對流程引擎的架構(gòu)模式。流程定義的結(jié)果從不同的活動類型實現(xiàn)中分離開來。并且流程執(zhí)行的運(yùn)行時數(shù)據(jù)結(jié)構(gòu)基于一個流程圖數(shù)據(jù)結(jié)構(gòu)的活動節(jié)點(diǎn)上的指針。活動類型因此整個流程語言在單個核心引擎上成為可插拔的。
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.
在可以預(yù)見的未來,Activiti只有一個目標(biāo):將BPMN 2.0作為通用的流程語言。但是我們希望Activiti將作為杠桿為特定用例構(gòu)建許多有限的和專有的流程語言。例如,為webapp頁面之間導(dǎo)航建模的頁面流程,或者針對Spring集成服務(wù)進(jìn)行腳本的簡單語言,或者編排一些Spring批處理的作業(yè),等等。
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供應(yīng)商關(guān)注我們,所以BPM市場已經(jīng)長期被割裂。幾個標(biāo)準(zhǔn)和規(guī)格試圖填補(bǔ)過去的差距,但沒有足夠的產(chǎn)業(yè)聚集在做牽引,以成為一個公認(rèn)的標(biāo)準(zhǔn)業(yè)務(wù)流程管理。但幸運(yùn)的是,時代在變,而且在過去幾年里BPM廠商已經(jīng)坐在一起,建立一個標(biāo)準(zhǔn),統(tǒng)一的BPM景觀。那個標(biāo)準(zhǔn)叫做“BPMN”,它代表“業(yè)務(wù)流程模型和符號”,自從2004年以來,由對象管理組(OMG)開發(fā)和維護(hù)。
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規(guī)范的第一個版本(版本1.x,第一個版本在2004年發(fā)布)只關(guān)注圖形符號,并在業(yè)務(wù)流程觀眾之間迅速流行。這意味著BPMN 1.x規(guī)范定義諸如人力任務(wù),可執(zhí)行腳本,自動化決策等等是如何的概念,并以一個供應(yīng)商中立的標(biāo)準(zhǔn)的方式開可視化。第二個版本(2.0),擴(kuò)展了該重點(diǎn)包括執(zhí)行語義和共同交換格式。這意味著BPMN 2.0流程定義模型不僅在圖像編輯器之間是可交換的,而且那些模型也能夠在任何BPMN 2.0兼容的引擎里面得到執(zhí)行,比如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團(tuán)隊的我們將榮幸地將你帶到未來。
Is BPMN 2.0 readable enough for developers?
BPMN 2.0對開發(fā)人員來說,可讀性夠嗎?
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.
流程虛擬機(jī)允許Activiti引擎內(nèi)置支持多個流程語言。開發(fā)人員將選擇哪種語言這是還很難預(yù)測。事實上,開發(fā)人員將依賴它們不同的需求使用不同的流程語言。我們將通過巨大的努力讓BPMN 2.0 對開發(fā)人員盡可能友好。例如,采用BPMN捷徑( BPMN shortcuts)的原則。我們也將包括Java事件監(jiān)聽器和包括把Spring支持集成到BPMN 2.0,以便從任何表達(dá)式訪問Spring bean。
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進(jìn)一步建立龐大的建設(shè)經(jīng)驗,這個經(jīng)驗自從在jBPM 4里的流程虛擬機(jī)設(shè)計時就開始構(gòu)建。在Activiti我們現(xiàn)在已經(jīng)具備非常熟練和團(tuán)結(jié)的人才和公司來建立下一代BPM技術(shù)。 BPMN的2.0將BPM的未來,我們有知識,使開發(fā)人員友好的方式處理這些功能。 Activiti對BPMN的2.0專一的關(guān)注使我們能夠提供面向未來的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
鑒于在構(gòu)建jBPM 4時,我們做出了極大的努力并且我們以這個結(jié)果為榮,我們很遺憾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 的替代,出現(xiàn)在SOA平臺的一個版本。隨著向jBPM項目團(tuán)隊的變化和統(tǒng)一我們在這方面的努力在項目間的下一步驟,它是不會發(fā)生的。”
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公司使我們有機(jī)會開發(fā)Activiti并打算使其成為Apache項目。在Apache基金會的價值的核心是項目的連續(xù)性,保證它真正停留社區(qū)。所以其中的一個需求是公司介入到項目的社區(qū)中來。從一開始,SpringSource以我們的方式加入這一倡議,使我們有充分的保證Activiti將有長時間不會在在單個人士或公司的完全控制之下。
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.
那就是指明我們不是在生產(chǎn)實驗性的玩具。我們是在我們在開發(fā)jBPM 版本1 到4 時積累的經(jīng)驗之上繼續(xù)構(gòu)建。我們使用那些知識作為基線,并和社區(qū)一道打造下一代的BPM解決方案。
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方式授權(quán)許可,以鼓勵廣泛的使用和采用Activiti BPM引擎和BPMN 2.0。通過選擇如此自由的許可,我們希望強(qiáng)調(diào)BPM技術(shù)的商品化目標(biāo)。
How can I become a contributor to Activiti?
我如何才能成為Activiti的貢獻(xiàn)者?
See wiki page How to become a contributor?.
參見wiki頁面如何成為一個貢獻(xiàn)者?
Which databases does Activiti support?
Activiti支持哪些數(shù)據(jù)庫?
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版本發(fā)布之前,我們將至少支持:
· H2
· Oracle
· MySQL
· PostgreSQL
Subsequent database compatibility will be driven by demand.
后續(xù)的數(shù)據(jù)庫兼容性將由需求驅(qū)動。
What is the difference between process concurrency and Java concurrency?
什么是流程并發(fā)和Java并發(fā)的差別?
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為了同步使用數(shù)據(jù)庫。流程在事務(wù)步驟里面執(zhí)行。每步采用單個線程來計算。這是符合邏輯的,因為在連個等待狀態(tài)之間需要發(fā)生的計算典型地市最小。并且由此典型地,在并發(fā)線程里面計算不同的路徑不是最優(yōu)的。對數(shù)據(jù)庫連接的訪問無論如何都必須同步。
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引擎使用客戶線程來完成它的工作。那時最容易將它嵌入到其它軟件當(dāng)中。在未來,我們設(shè)想允許服務(wù)方法的異步執(zhí)行的配置。當(dāng)前的架構(gòu)非常容易地將允許這樣的方式。
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.
流程包括需要等待一個外部觸發(fā)器的活動。Activiti引擎將從不阻礙它們環(huán)境下的線程。那就是當(dāng)執(zhí)行狀態(tài)持久化時,那么事務(wù)才提交。如果你查看數(shù)據(jù)庫,你想象得到執(zhí)行流程的計算立即發(fā)生,那么設(shè)想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引擎的計算行為在多個步驟可能是一個等待狀態(tài)到達(dá)流程的多個步驟,它是一個缺省行為。為了它們所需的狀態(tài)的地方,將引入異步持續(xù)允許更細(xì)粒度的事務(wù)界定。
Which transaction demarcation technologies can Activiti integrate with?
Activiti能集成哪些事務(wù)界定技術(shù)?
Activiti integrates with:
Activiti能集成:
· Standalone JDBC
· Spring (alpha 2)
· JTA (alpha 3)
Where can I find the sources?
在哪里尋找源代碼?
See the Community
參見
Which companies are behind Activiti?
Activiti有哪些幕后的公司?
See the Team page See the Team page
參見團(tuán)隊頁面