Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
cd2a3495
F
Flowable Engine
项目概览
开发团队
/
Flowable Engine
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Flowable Engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cd2a3495
编写于
11月 23, 2012
作者:
T
tijsrademakers
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added import to Modeler component
上级
8f1b1f88
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
607 addition
and
213 deletion
+607
-213
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/DeleteModelPopupWindow.java
...n/java/org/activiti/editor/ui/DeleteModelPopupWindow.java
+1
-0
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/EditorProcessDefinitionDetailPanel.java
...ctiviti/editor/ui/EditorProcessDefinitionDetailPanel.java
+107
-25
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/EditorProcessDefinitionPage.java
...a/org/activiti/editor/ui/EditorProcessDefinitionPage.java
+12
-1
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/ImportUploadReceiver.java
...ain/java/org/activiti/editor/ui/ImportUploadReceiver.java
+152
-0
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/NewModelPopupWindow.java
...main/java/org/activiti/editor/ui/NewModelPopupWindow.java
+1
-0
modules/activiti-explorer/src/main/java/org/activiti/explorer/Messages.java
...xplorer/src/main/java/org/activiti/explorer/Messages.java
+13
-0
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/custom/ImportComponent.java
...java/org/activiti/explorer/ui/custom/ImportComponent.java
+173
-0
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/custom/ImportPopupWindow.java
...va/org/activiti/explorer/ui/custom/ImportPopupWindow.java
+89
-0
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/custom/ToolBar.java
...rc/main/java/org/activiti/explorer/ui/custom/ToolBar.java
+14
-0
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/CopyModelClickListener.java
.../explorer/ui/process/listener/CopyModelClickListener.java
+0
-26
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/DeployProcessDefinitionClickListener.java
...rocess/listener/DeployProcessDefinitionClickListener.java
+0
-68
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/ExportModelClickListener.java
...xplorer/ui/process/listener/ExportModelClickListener.java
+0
-89
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/ImportModelClickListener.java
...xplorer/ui/process/listener/ImportModelClickListener.java
+28
-0
modules/activiti-explorer/src/main/resources/messages.properties
.../activiti-explorer/src/main/resources/messages.properties
+17
-4
未找到文件。
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/DeleteModelPopupWindow.java
浏览文件 @
cd2a3495
...
...
@@ -58,6 +58,7 @@ public class DeleteModelPopupWindow extends PopupWindow implements ModelDataJson
windowLayout
.
setSpacing
(
true
);
addStyleName
(
Reindeer
.
WINDOW_LIGHT
);
setModal
(
true
);
setWidth
(
"300px"
);
center
();
setCaption
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_DELETE_POPUP_CAPTION
,
modelData
.
getName
()));
...
...
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/EditorProcessDefinitionDetailPanel.java
浏览文件 @
cd2a3495
...
...
@@ -12,8 +12,17 @@
*/
package
org.activiti.editor.ui
;
import
java.io.ByteArrayInputStream
;
import
java.io.File
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
org.activiti.bpmn.converter.BpmnXMLConverter
;
import
org.activiti.bpmn.model.BpmnModel
;
import
org.activiti.editor.language.json.converter.BpmnJsonConverter
;
import
org.activiti.engine.ProcessEngines
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.repository.Deployment
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.I18nManager
;
...
...
@@ -22,19 +31,26 @@ import org.activiti.explorer.ui.Images;
import
org.activiti.explorer.ui.custom.DetailPanel
;
import
org.activiti.explorer.ui.form.FormPropertiesForm
;
import
org.activiti.explorer.ui.mainlayout.ExplorerLayout
;
import
org.activiti.explorer.ui.process.listener.CopyModelClickListener
;
import
org.activiti.explorer.ui.process.listener.DeleteModelClickListener
;
import
org.activiti.explorer.ui.process.listener.DeployProcessDefinitionClickListener
;
import
org.activiti.explorer.ui.process.listener.EditModelClickListener
;
import
org.activiti.explorer.ui.process.listener.
Ex
portModelClickListener
;
import
org.activiti.explorer.ui.process.listener.
Im
portModelClickListener
;
import
org.activiti.explorer.ui.process.listener.NewModelClickListener
;
import
org.codehaus.jackson.JsonNode
;
import
org.codehaus.jackson.map.ObjectMapper
;
import
org.codehaus.jackson.node.ObjectNode
;
import
com.vaadin.data.Property.ValueChangeEvent
;
import
com.vaadin.data.Property.ValueChangeListener
;
import
com.vaadin.terminal.DownloadStream
;
import
com.vaadin.terminal.FileResource
;
import
com.vaadin.ui.AbstractSelect.Filtering
;
import
com.vaadin.ui.Alignment
;
import
com.vaadin.ui.Button
;
import
com.vaadin.ui.ComponentContainer
;
import
com.vaadin.ui.Embedded
;
import
com.vaadin.ui.GridLayout
;
import
com.vaadin.ui.HorizontalLayout
;
import
com.vaadin.ui.Label
;
import
com.vaadin.ui.Select
;
import
com.vaadin.ui.VerticalLayout
;
import
com.vaadin.ui.themes.Reindeer
;
...
...
@@ -47,6 +63,7 @@ import com.vaadin.ui.themes.Reindeer;
public
class
EditorProcessDefinitionDetailPanel
extends
DetailPanel
{
private
static
final
long
serialVersionUID
=
1L
;
protected
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
EditorProcessDefinitionDetailPanel
.
class
.
getName
());
// Members
protected
Model
modelData
;
...
...
@@ -61,11 +78,10 @@ public class EditorProcessDefinitionDetailPanel extends DetailPanel {
protected
HorizontalLayout
actionsContainer
;
protected
Label
nameLabel
;
protected
Button
newModelButton
;
protected
Button
deployProcessDefinitionButton
;
protected
Button
exportModelButton
;
protected
Button
importModelButton
;
protected
Button
editModelButton
;
protected
Button
copyModelButton
;
protected
Button
deleteModelButton
;
protected
Label
actionLabel
;
protected
Select
actionSelect
;
protected
FormPropertiesForm
processDefinitionStartForm
;
protected
EditorProcessDefinitionInfoComponent
definitionInfoComponent
;
...
...
@@ -106,29 +122,51 @@ public class EditorProcessDefinitionDetailPanel extends DetailPanel {
newModelButton
=
new
Button
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_NEW
));
newModelButton
.
addListener
(
new
NewModelClickListener
());
deployProcessDefinitionButton
=
new
Button
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_DEPLOY
));
deployProcessDefinitionButton
.
addListener
(
new
DeployProcessDefinitionClickListener
(
modelData
));
exportModelButton
=
new
Button
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_EXPORT
));
exportModelButton
.
addListener
(
new
ExportModelClickListener
(
modelData
));
importModelButton
=
new
Button
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_IMPORT
));
importModelButton
.
addListener
(
new
ImportModelClickListener
());
editModelButton
=
new
Button
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_EDIT
));
editModelButton
.
addListener
(
new
EditModelClickListener
(
modelData
.
getId
()));
copyModelButton
=
new
Button
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_COPY
));
copyModelButton
.
addListener
(
new
CopyModelClickListener
(
modelData
));
actionLabel
=
new
Label
(
i18nManager
.
getMessage
(
Messages
.
MODEL_ACTION
));
actionLabel
.
setSizeUndefined
();
actionSelect
=
new
Select
();
actionSelect
.
addItem
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_COPY
));
actionSelect
.
addItem
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_DELETE
));
actionSelect
.
addItem
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_DEPLOY
));
actionSelect
.
addItem
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_EXPORT
));
deleteModelButton
=
new
Button
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_DELETE
));
deleteModelButton
.
addListener
(
new
DeleteModelClickListener
(
modelData
));
actionSelect
.
setWidth
(
"100px"
);
actionSelect
.
setFilteringMode
(
Filtering
.
FILTERINGMODE_OFF
);
actionSelect
.
setImmediate
(
true
);
actionSelect
.
addListener
(
new
ValueChangeListener
()
{
private
static
final
long
serialVersionUID
=
1L
;
@Override
public
void
valueChange
(
ValueChangeEvent
event
)
{
if
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_COPY
).
equals
(
event
.
getProperty
().
getValue
()))
{
ExplorerApp
.
get
().
getViewManager
().
showPopupWindow
(
new
CopyModelPopupWindow
(
modelData
));
}
else
if
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_DELETE
).
equals
(
event
.
getProperty
().
getValue
()))
{
ExplorerApp
.
get
().
getViewManager
().
showPopupWindow
(
new
DeleteModelPopupWindow
(
modelData
));
}
else
if
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_DEPLOY
).
equals
(
event
.
getProperty
().
getValue
()))
{
deployModel
();
}
else
if
(
i18nManager
.
getMessage
(
Messages
.
PROCESS_EXPORT
).
equals
(
event
.
getProperty
().
getValue
()))
{
exportModel
();
}
}
});
// Clear toolbar and add 'start' button
processDefinitionPage
.
getToolBar
().
removeAllButtons
();
processDefinitionPage
.
getToolBar
().
removeAllAdditionalComponents
();
processDefinitionPage
.
getToolBar
().
addButton
(
newModelButton
);
processDefinitionPage
.
getToolBar
().
addButton
(
deployProcessDefinitionButton
);
processDefinitionPage
.
getToolBar
().
addButton
(
exportModelButton
);
processDefinitionPage
.
getToolBar
().
addButton
(
importModelButton
);
processDefinitionPage
.
getToolBar
().
addButton
(
editModelButton
);
processDefinitionPage
.
getToolBar
().
addButton
(
copyModelButton
);
processDefinitionPage
.
getToolBar
().
addButton
(
deleteModelButton
);
processDefinitionPage
.
getToolBar
().
addAdditionalComponent
(
actionLabel
);
processDefinitionPage
.
getToolBar
().
setComponentAlignment
(
actionLabel
,
Alignment
.
MIDDLE_LEFT
);
processDefinitionPage
.
getToolBar
().
addAdditionalComponent
(
actionSelect
);
processDefinitionPage
.
getToolBar
().
setComponentAlignment
(
actionSelect
,
Alignment
.
MIDDLE_RIGHT
);
}
...
...
@@ -137,10 +175,6 @@ public class EditorProcessDefinitionDetailPanel extends DetailPanel {
definitionInfoComponent
=
new
EditorProcessDefinitionInfoComponent
(
modelData
);
}
if
(
deployProcessDefinitionButton
!=
null
)
{
deployProcessDefinitionButton
.
setEnabled
(
true
);
}
detailContainer
.
removeAllComponents
();
detailContainer
.
addComponent
(
definitionInfoComponent
);
}
...
...
@@ -180,4 +214,52 @@ public class EditorProcessDefinitionDetailPanel extends DetailPanel {
emptySpace
.
setSizeUndefined
();
container
.
addComponent
(
emptySpace
);
}
protected
void
exportModel
()
{
final
FileResource
stream
=
new
FileResource
(
new
File
(
""
),
ExplorerApp
.
get
())
{
private
static
final
long
serialVersionUID
=
1L
;
@Override
public
DownloadStream
getStream
()
{
DownloadStream
ds
=
null
;
try
{
BpmnJsonConverter
jsonConverter
=
new
BpmnJsonConverter
();
JsonNode
editorNode
=
new
ObjectMapper
().
readTree
(
repositoryService
.
getModelEditorSource
(
modelData
.
getId
()));
BpmnModel
bpmnModel
=
jsonConverter
.
convertToBpmnModel
(
editorNode
);
BpmnXMLConverter
xmlConverter
=
new
BpmnXMLConverter
();
byte
[]
bpmnBytes
=
xmlConverter
.
convertToXML
(
bpmnModel
);
ByteArrayInputStream
in
=
new
ByteArrayInputStream
(
bpmnBytes
);
String
filename
=
bpmnModel
.
getMainProcess
().
getId
()
+
".bpmn20.xml"
;
ds
=
new
DownloadStream
(
in
,
"application/xml"
,
filename
);
// Need a file download POPUP
ds
.
setParameter
(
"Content-Disposition"
,
"attachment; filename="
+
filename
);
}
catch
(
Exception
e
)
{
LOGGER
.
log
(
Level
.
SEVERE
,
"failed to export model to BPMN XML"
,
e
);
ExplorerApp
.
get
().
getNotificationManager
().
showErrorNotification
(
Messages
.
PROCESS_TOXML_FAILED
,
e
);
}
return
ds
;
}
};
stream
.
setCacheTime
(
0
);
ExplorerApp
.
get
().
getMainWindow
().
open
(
stream
);
}
protected
void
deployModel
()
{
try
{
ObjectNode
modelNode
=
(
ObjectNode
)
new
ObjectMapper
().
readTree
(
repositoryService
.
getModelEditorSource
(
modelData
.
getId
()));
BpmnModel
model
=
new
BpmnJsonConverter
().
convertToBpmnModel
(
modelNode
);
byte
[]
bpmnBytes
=
new
BpmnXMLConverter
().
convertToXML
(
model
);
Deployment
deployment
=
repositoryService
.
createDeployment
().
name
(
modelData
.
getName
())
.
addString
(
modelData
.
getName
()
+
".bpmn20.xml"
,
new
String
(
bpmnBytes
)).
deploy
();
ExplorerApp
.
get
().
getViewManager
().
showDeploymentPage
(
deployment
.
getId
());
}
catch
(
Exception
e
)
{
ExplorerApp
.
get
().
getNotificationManager
().
showErrorNotification
(
Messages
.
PROCESS_TOXML_FAILED
,
e
);
}
}
}
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/EditorProcessDefinitionPage.java
浏览文件 @
cd2a3495
...
...
@@ -19,6 +19,7 @@ import org.activiti.engine.ProcessEngines;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.Messages
;
import
org.activiti.explorer.navigation.ProcessModelNavigator
;
import
org.activiti.explorer.navigation.UriFragment
;
import
org.activiti.explorer.ui.AbstractTablePage
;
...
...
@@ -26,11 +27,14 @@ import org.activiti.explorer.ui.Images;
import
org.activiti.explorer.ui.custom.ToolBar
;
import
org.activiti.explorer.ui.mainlayout.ExplorerLayout
;
import
org.activiti.explorer.ui.process.ProcessMenuBar
;
import
org.activiti.explorer.ui.process.listener.ImportModelClickListener
;
import
org.activiti.explorer.ui.process.listener.NewModelClickListener
;
import
org.activiti.explorer.ui.util.ThemeImageColumnGenerator
;
import
com.vaadin.data.Item
;
import
com.vaadin.data.Property
;
import
com.vaadin.data.Property.ValueChangeEvent
;
import
com.vaadin.ui.Button
;
import
com.vaadin.ui.Table
;
...
...
@@ -73,7 +77,14 @@ public class EditorProcessDefinitionPage extends AbstractTablePage {
@Override
protected
ToolBar
createMenuBar
()
{
return
new
ProcessMenuBar
();
ProcessMenuBar
menuBar
=
new
ProcessMenuBar
();
Button
newModelButton
=
new
Button
(
ExplorerApp
.
get
().
getI18nManager
().
getMessage
(
Messages
.
PROCESS_NEW
));
newModelButton
.
addListener
(
new
NewModelClickListener
());
menuBar
.
addButton
(
newModelButton
);
Button
importModelButton
=
new
Button
(
ExplorerApp
.
get
().
getI18nManager
().
getMessage
(
Messages
.
PROCESS_IMPORT
));
importModelButton
.
addListener
(
new
ImportModelClickListener
());
menuBar
.
addButton
(
importModelButton
);
return
menuBar
;
}
@Override
...
...
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/ImportUploadReceiver.java
0 → 100644
浏览文件 @
cd2a3495
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.editor.ui
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.io.OutputStream
;
import
javax.xml.stream.XMLInputFactory
;
import
javax.xml.stream.XMLStreamReader
;
import
org.activiti.bpmn.converter.BpmnXMLConverter
;
import
org.activiti.bpmn.model.BpmnModel
;
import
org.activiti.editor.constants.ModelDataJsonConstants
;
import
org.activiti.editor.language.json.converter.BpmnJsonConverter
;
import
org.activiti.engine.ProcessEngines
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.I18nManager
;
import
org.activiti.explorer.Messages
;
import
org.activiti.explorer.NotificationManager
;
import
org.activiti.explorer.ViewManager
;
import
org.apache.commons.lang.StringUtils
;
import
org.codehaus.jackson.map.ObjectMapper
;
import
org.codehaus.jackson.node.ObjectNode
;
import
com.vaadin.ui.Upload.FinishedEvent
;
import
com.vaadin.ui.Upload.FinishedListener
;
import
com.vaadin.ui.Upload.Receiver
;
/**
* @author Tijs Rademakers
*/
public
class
ImportUploadReceiver
implements
Receiver
,
FinishedListener
,
ModelDataJsonConstants
{
private
static
final
long
serialVersionUID
=
1L
;
protected
RepositoryService
repositoryService
;
protected
I18nManager
i18nManager
;
protected
NotificationManager
notificationManager
;
protected
ViewManager
viewManager
;
// Will be assigned during upload
protected
ByteArrayOutputStream
outputStream
;
protected
String
fileName
;
// Will be assigned after deployment
protected
boolean
validFile
=
false
;
protected
Model
modelData
;
public
ImportUploadReceiver
()
{
this
.
repositoryService
=
ProcessEngines
.
getDefaultProcessEngine
().
getRepositoryService
();
this
.
i18nManager
=
ExplorerApp
.
get
().
getI18nManager
();
this
.
notificationManager
=
ExplorerApp
.
get
().
getNotificationManager
();
this
.
viewManager
=
ExplorerApp
.
get
().
getViewManager
();
}
public
OutputStream
receiveUpload
(
String
filename
,
String
mimeType
)
{
this
.
fileName
=
filename
;
this
.
outputStream
=
new
ByteArrayOutputStream
();
return
outputStream
;
}
public
void
uploadFinished
(
FinishedEvent
event
)
{
deployUploadedFile
();
if
(
validFile
)
{
showUploadedDeployment
();
}
}
protected
void
deployUploadedFile
()
{
try
{
try
{
if
(
fileName
.
endsWith
(
".bpmn20.xml"
)
||
fileName
.
endsWith
(
".bpmn"
))
{
validFile
=
true
;
BpmnXMLConverter
xmlConverter
=
new
BpmnXMLConverter
();
XMLInputFactory
xif
=
XMLInputFactory
.
newInstance
();
InputStreamReader
in
=
new
InputStreamReader
(
new
ByteArrayInputStream
(
outputStream
.
toByteArray
()),
"UTF-8"
);
XMLStreamReader
xtr
=
xif
.
createXMLStreamReader
(
in
);
BpmnModel
bpmnModel
=
new
BpmnXMLConverter
().
convertToBpmnModel
(
xtr
);
xmlConverter
.
convertToBpmnModel
(
xtr
);
if
(
bpmnModel
.
getMainProcess
()
==
null
||
bpmnModel
.
getMainProcess
().
getId
()
==
null
)
{
notificationManager
.
showErrorNotification
(
Messages
.
MODEL_IMPORT_FAILED
,
i18nManager
.
getMessage
(
Messages
.
MODEL_IMPORT_INVALID_BPMN_EXPLANATION
));
}
else
{
if
(
bpmnModel
.
getLocationMap
().
size
()
==
0
)
{
notificationManager
.
showErrorNotification
(
Messages
.
MODEL_IMPORT_INVALID_BPMNDI
,
i18nManager
.
getMessage
(
Messages
.
MODEL_IMPORT_INVALID_BPMNDI_EXPLANATION
));
}
else
{
String
processName
=
null
;
if
(
StringUtils
.
isNotEmpty
(
bpmnModel
.
getMainProcess
().
getName
()))
{
processName
=
bpmnModel
.
getMainProcess
().
getName
();
}
else
{
processName
=
bpmnModel
.
getMainProcess
().
getId
();
}
modelData
=
repositoryService
.
newModel
();
ObjectNode
modelObjectNode
=
new
ObjectMapper
().
createObjectNode
();
modelObjectNode
.
put
(
MODEL_NAME
,
processName
);
modelObjectNode
.
put
(
MODEL_REVISION
,
1
);
modelData
.
setMetaInfo
(
modelObjectNode
.
toString
());
modelData
.
setName
(
processName
);
repositoryService
.
saveModel
(
modelData
);
BpmnJsonConverter
jsonConverter
=
new
BpmnJsonConverter
();
ObjectNode
editorNode
=
jsonConverter
.
convertToJson
(
bpmnModel
);
repositoryService
.
addModelEditorSource
(
modelData
.
getId
(),
editorNode
.
toString
().
getBytes
(
"utf-8"
));
}
}
}
else
{
notificationManager
.
showErrorNotification
(
Messages
.
MODEL_IMPORT_INVALID_FILE
,
i18nManager
.
getMessage
(
Messages
.
MODEL_IMPORT_INVALID_FILE_EXPLANATION
));
}
}
catch
(
Exception
e
)
{
String
errorMsg
=
e
.
getMessage
().
replace
(
System
.
getProperty
(
"line.separator"
),
"<br/>"
);
notificationManager
.
showErrorNotification
(
Messages
.
MODEL_IMPORT_FAILED
,
errorMsg
);
}
}
finally
{
if
(
outputStream
!=
null
)
{
try
{
outputStream
.
close
();
}
catch
(
IOException
e
)
{
notificationManager
.
showErrorNotification
(
"Server-side error"
,
e
.
getMessage
());
}
}
}
}
protected
void
showUploadedDeployment
()
{
viewManager
.
showEditorProcessDefinitionPage
(
modelData
.
getId
());
}
}
modules/activiti-explorer/src/main/java/org/activiti/editor/ui/NewModelPopupWindow.java
浏览文件 @
cd2a3495
...
...
@@ -148,6 +148,7 @@ public class NewModelPopupWindow extends PopupWindow implements ModelDataJsonCon
}
modelObjectNode
.
put
(
MODEL_DESCRIPTION
,
description
);
modelData
.
setMetaInfo
(
modelObjectNode
.
toString
());
modelData
.
setName
((
String
)
nameTextField
.
getValue
());
repositoryService
.
saveModel
(
modelData
);
...
...
modules/activiti-explorer/src/main/java/org/activiti/explorer/Messages.java
浏览文件 @
cd2a3495
...
...
@@ -201,6 +201,7 @@ public interface Messages {
static
final
String
PROCESS_EDIT
=
"process.edit"
;
static
final
String
PROCESS_COPY
=
"process.copy"
;
static
final
String
PROCESS_NEW
=
"process.new"
;
static
final
String
PROCESS_IMPORT
=
"process.import"
;
static
final
String
PROCESS_DELETE
=
"process.delete"
;
static
final
String
PROCESS_DEPLOY
=
"process.deploy"
;
static
final
String
PROCESS_ACTIVATE
=
"process.activate"
;
...
...
@@ -293,6 +294,18 @@ public interface Messages {
static
final
String
DEPLOYMENT_DELETE_POPUP_WARNING
=
"deployment.delete.popup.warning"
;
static
final
String
DEPLOYMENT_DELETE_POPUP_DELETE_BUTTON
=
"deployment.delete.popup.delete.button"
;
// Import to model workspace
static
final
String
MODEL_IMPORT
=
"model.import"
;
static
final
String
MODEL_IMPORT_DESCRIPTION
=
"model.import.description"
;
static
final
String
MODEL_IMPORT_FAILED
=
"model.import.failed"
;
static
final
String
MODEL_IMPORT_INVALID_FILE
=
"model.import.invalid.file"
;
static
final
String
MODEL_IMPORT_INVALID_FILE_EXPLANATION
=
"model.import.invalid.file.explanation"
;
static
final
String
MODEL_IMPORT_INVALID_BPMNDI
=
"model.import.invalid.bpmndi"
;
static
final
String
MODEL_IMPORT_INVALID_BPMNDI_EXPLANATION
=
"model.import.invalid.bpmndi.explanation"
;
static
final
String
MODEL_IMPORT_INVALID_BPMN_EXPLANATION
=
"model.import.invalid.bpmn.explanation"
;
static
final
String
MODEL_ACTION
=
"model.action"
;
// Database page
static
final
String
DATABASE_NO_ROWS
=
"database.no.rows"
;
...
...
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/custom/ImportComponent.java
0 → 100644
浏览文件 @
cd2a3495
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.explorer.ui.custom
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.I18nManager
;
import
org.activiti.explorer.Messages
;
import
org.activiti.explorer.NotificationManager
;
import
org.activiti.explorer.ui.mainlayout.ExplorerLayout
;
import
com.vaadin.event.dd.acceptcriteria.AcceptAll
;
import
com.vaadin.event.dd.acceptcriteria.AcceptCriterion
;
import
com.vaadin.ui.Alignment
;
import
com.vaadin.ui.Label
;
import
com.vaadin.ui.ProgressIndicator
;
import
com.vaadin.ui.Upload
;
import
com.vaadin.ui.Upload.FailedEvent
;
import
com.vaadin.ui.Upload.FailedListener
;
import
com.vaadin.ui.Upload.FinishedEvent
;
import
com.vaadin.ui.Upload.FinishedListener
;
import
com.vaadin.ui.Upload.ProgressListener
;
import
com.vaadin.ui.Upload.Receiver
;
import
com.vaadin.ui.Upload.StartedEvent
;
import
com.vaadin.ui.Upload.StartedListener
;
import
com.vaadin.ui.VerticalLayout
;
import
com.vaadin.ui.themes.Reindeer
;
/**
* Component that can be used to upload files using file-select
*
* @author Joram Barrez
* @author Frederik Heremans
*/
public
class
ImportComponent
extends
VerticalLayout
implements
StartedListener
,
FinishedListener
,
FailedListener
,
ProgressListener
{
private
static
final
long
serialVersionUID
=
1L
;
// Services
protected
I18nManager
i18nManager
;
protected
NotificationManager
notificationManager
;
// Ui components
protected
ProgressIndicator
progressIndicator
;
protected
Upload
upload
;
protected
Receiver
receiver
;
// Additional listeners can be attached to the upload components
protected
List
<
FinishedListener
>
finishedListeners
=
new
ArrayList
<
FinishedListener
>();
protected
List
<
StartedListener
>
startedListeners
=
new
ArrayList
<
StartedListener
>();
protected
boolean
showGenericFailureMessage
=
true
;
protected
List
<
FailedListener
>
failedListeners
=
new
ArrayList
<
FailedListener
>();
protected
List
<
ProgressListener
>
progressListeners
=
new
ArrayList
<
ProgressListener
>();
public
ImportComponent
(
String
description
,
Receiver
receiver
)
{
this
.
receiver
=
receiver
;
this
.
i18nManager
=
ExplorerApp
.
get
().
getI18nManager
();
this
.
notificationManager
=
ExplorerApp
.
get
().
getNotificationManager
();
init
(
description
);
}
// UI initialisation ----------------------------------------------------------------------------
protected
void
init
(
String
description
)
{
setSpacing
(
true
);
setSizeFull
();
addDescription
(
description
);
addUpload
();
}
protected
void
addDescription
(
String
description
)
{
if
(
description
!=
null
)
{
Label
descriptionLabel
=
new
Label
(
description
);
descriptionLabel
.
addStyleName
(
Reindeer
.
LABEL_SMALL
);
descriptionLabel
.
addStyleName
(
ExplorerLayout
.
STYLE_DEPLOYMENT_UPLOAD_DESCRIPTION
);
addComponent
(
descriptionLabel
);
}
}
protected
void
addUpload
()
{
this
.
upload
=
new
Upload
(
null
,
receiver
);
upload
.
setButtonCaption
(
i18nManager
.
getMessage
(
Messages
.
UPLOAD_SELECT
));
upload
.
setImmediate
(
true
);
addComponent
(
upload
);
setComponentAlignment
(
upload
,
Alignment
.
MIDDLE_CENTER
);
// register ourselves as listener for upload events
upload
.
addListener
((
StartedListener
)
this
);
upload
.
addListener
((
FailedListener
)
this
);
upload
.
addListener
((
FinishedListener
)
this
);
upload
.
addListener
((
ProgressListener
)
this
);
}
// File upload event handling -------------------------------------------------------------------
public
void
uploadStarted
(
StartedEvent
event
)
{
removeAllComponents
();
// Visible components are replaced by a progress bar
this
.
progressIndicator
=
new
ProgressIndicator
();
progressIndicator
.
setPollingInterval
(
500
);
addComponent
(
progressIndicator
);
setComponentAlignment
(
progressIndicator
,
Alignment
.
MIDDLE_CENTER
);
for
(
StartedListener
startedListener
:
startedListeners
)
{
startedListener
.
uploadStarted
(
event
);
}
}
public
void
updateProgress
(
long
readBytes
,
long
contentLength
)
{
progressIndicator
.
setValue
(
new
Float
(
readBytes
/
(
float
)
contentLength
));
for
(
ProgressListener
progressListener
:
progressListeners
)
{
progressListener
.
updateProgress
(
readBytes
,
contentLength
);
}
}
public
void
uploadFinished
(
FinishedEvent
event
)
{
// Hide progress indicator
progressIndicator
.
setVisible
(
false
);
for
(
FinishedListener
finishedListener
:
finishedListeners
)
{
finishedListener
.
uploadFinished
(
event
);
}
}
public
void
uploadFailed
(
FailedEvent
event
)
{
for
(
FailedListener
failedListener
:
failedListeners
)
{
failedListener
.
uploadFailed
(
event
);
}
}
public
AcceptCriterion
getAcceptCriterion
()
{
return
AcceptAll
.
get
();
}
// Upload Listeners ----------------------------------------------------------------------------
public
void
addFinishedListener
(
FinishedListener
finishedListener
)
{
finishedListeners
.
add
(
finishedListener
);
}
public
void
addStartedListener
(
StartedListener
startedListener
)
{
startedListeners
.
add
(
startedListener
);
}
public
void
addFailedListener
(
FailedListener
failedListener
)
{
failedListeners
.
add
(
failedListener
);
}
public
void
addProgressListener
(
ProgressListener
progressListener
)
{
progressListeners
.
add
(
progressListener
);
}
}
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/custom/ImportPopupWindow.java
0 → 100644
浏览文件 @
cd2a3495
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.explorer.ui.custom
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.I18nManager
;
import
com.vaadin.ui.Upload.FailedListener
;
import
com.vaadin.ui.Upload.FinishedEvent
;
import
com.vaadin.ui.Upload.FinishedListener
;
import
com.vaadin.ui.Upload.ProgressListener
;
import
com.vaadin.ui.Upload.Receiver
;
import
com.vaadin.ui.Upload.StartedListener
;
import
com.vaadin.ui.themes.Reindeer
;
/**
* @author Tijs Rademakers
*/
public
class
ImportPopupWindow
extends
PopupWindow
{
private
static
final
long
serialVersionUID
=
1L
;
// Services
protected
I18nManager
i18nManager
;
protected
ImportComponent
importComponent
;
public
ImportPopupWindow
(
String
caption
,
String
description
,
Receiver
receiver
)
{
this
.
i18nManager
=
ExplorerApp
.
get
().
getI18nManager
();
init
(
caption
,
description
,
receiver
);
importComponent
.
addFinishedListener
(
new
FinishedListener
()
{
private
static
final
long
serialVersionUID
=
1L
;
public
void
uploadFinished
(
FinishedEvent
event
)
{
close
();
}
});
}
// UI initialisation ----------------------------------------------------------------------------
protected
void
init
(
String
caption
,
String
description
,
Receiver
receiver
)
{
importComponent
=
new
ImportComponent
(
description
,
receiver
);
importComponent
.
setSizeFull
();
initWindow
(
caption
);
}
protected
void
initWindow
(
String
caption
)
{
// Fixed width/height since otherwise the layout can be screwed by the drag and drop
setWidth
(
"300px"
);
setHeight
(
"200px"
);
addStyleName
(
Reindeer
.
WINDOW_LIGHT
);
setModal
(
true
);
center
();
setCaption
(
caption
);
setContent
(
importComponent
);
}
// Upload Listeners ----------------------------------------------------------------------------
public
void
addFinishedListener
(
FinishedListener
finishedListener
)
{
importComponent
.
addFinishedListener
(
finishedListener
);
}
public
void
addStartedListener
(
StartedListener
startedListener
)
{
importComponent
.
addStartedListener
(
startedListener
);
}
public
void
addFailedListener
(
FailedListener
failedListener
)
{
importComponent
.
addFailedListener
(
failedListener
);
}
public
void
addProgressListener
(
ProgressListener
progressListener
)
{
importComponent
.
addProgressListener
(
progressListener
);
}
}
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/custom/ToolBar.java
浏览文件 @
cd2a3495
...
...
@@ -23,6 +23,7 @@ import org.activiti.explorer.ui.mainlayout.ExplorerLayout;
import
com.vaadin.ui.Alignment
;
import
com.vaadin.ui.Button
;
import
com.vaadin.ui.Component
;
import
com.vaadin.ui.HorizontalLayout
;
import
com.vaadin.ui.Label
;
...
...
@@ -39,10 +40,12 @@ public class ToolBar extends HorizontalLayout {
protected
Map
<
String
,
ToolbarEntry
>
entryMap
;
protected
ToolbarEntry
currentEntry
;
protected
List
<
Button
>
actionButtons
;
protected
List
<
Component
>
additionalComponents
;
public
ToolBar
()
{
entryMap
=
new
HashMap
<
String
,
ToolbarEntry
>();
actionButtons
=
new
ArrayList
<
Button
>();
additionalComponents
=
new
ArrayList
<
Component
>();
setWidth
(
"100%"
);
setHeight
(
36
,
UNITS_PIXELS
);
...
...
@@ -110,6 +113,17 @@ public class ToolBar extends HorizontalLayout {
}
}
public
void
addAdditionalComponent
(
Component
component
)
{
additionalComponents
.
add
(
component
);
addComponent
(
component
);
}
public
void
removeAllAdditionalComponents
()
{
for
(
Component
c
:
additionalComponents
)
{
removeComponent
(
c
);
}
}
public
long
getCount
(
String
key
)
{
ToolbarEntry
toolbarEntry
=
entryMap
.
get
(
key
);
if
(
toolbarEntry
==
null
)
{
...
...
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/CopyModelClickListener.java
已删除
100644 → 0
浏览文件 @
8f1b1f88
package
org.activiti.explorer.ui.process.listener
;
import
org.activiti.editor.ui.CopyModelPopupWindow
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.explorer.ExplorerApp
;
import
com.vaadin.ui.Button.ClickEvent
;
import
com.vaadin.ui.Button.ClickListener
;
/**
* @author Tijs Rademakers
*/
public
class
CopyModelClickListener
implements
ClickListener
{
private
static
final
long
serialVersionUID
=
1L
;
private
Model
modelData
;
public
CopyModelClickListener
(
Model
model
)
{
this
.
modelData
=
model
;
}
public
void
buttonClick
(
ClickEvent
event
)
{
ExplorerApp
.
get
().
getViewManager
().
showPopupWindow
(
new
CopyModelPopupWindow
(
modelData
));
}
}
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/DeployProcessDefinitionClickListener.java
已删除
100644 → 0
浏览文件 @
8f1b1f88
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.explorer.ui.process.listener
;
import
org.activiti.bpmn.converter.BpmnXMLConverter
;
import
org.activiti.bpmn.model.BpmnModel
;
import
org.activiti.editor.language.json.converter.BpmnJsonConverter
;
import
org.activiti.engine.ProcessEngines
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.repository.Deployment
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.Messages
;
import
org.activiti.explorer.NotificationManager
;
import
org.codehaus.jackson.map.ObjectMapper
;
import
org.codehaus.jackson.node.ObjectNode
;
import
com.vaadin.ui.Button.ClickEvent
;
import
com.vaadin.ui.Button.ClickListener
;
/**
* @author Tijs Rademakers
*/
public
class
DeployProcessDefinitionClickListener
implements
ClickListener
{
private
static
final
long
serialVersionUID
=
1L
;
protected
RepositoryService
repositoryService
;
protected
NotificationManager
notificationManager
;
protected
Model
modelData
;
public
DeployProcessDefinitionClickListener
(
Model
model
)
{
this
.
repositoryService
=
ProcessEngines
.
getDefaultProcessEngine
().
getRepositoryService
();
this
.
notificationManager
=
ExplorerApp
.
get
().
getNotificationManager
();
this
.
modelData
=
model
;
}
public
void
buttonClick
(
ClickEvent
event
)
{
try
{
ObjectNode
modelNode
=
(
ObjectNode
)
new
ObjectMapper
().
readTree
(
repositoryService
.
getModelEditorSource
(
modelData
.
getId
()));
BpmnModel
model
=
new
BpmnJsonConverter
().
convertToBpmnModel
(
modelNode
);
byte
[]
bpmnBytes
=
new
BpmnXMLConverter
().
convertToXML
(
model
);
Deployment
deployment
=
repositoryService
.
createDeployment
().
name
(
modelData
.
getName
())
.
addString
(
modelData
.
getName
()
+
".bpmn20.xml"
,
new
String
(
bpmnBytes
)).
deploy
();
ExplorerApp
.
get
().
getViewManager
().
showDeploymentPage
(
deployment
.
getId
());
}
catch
(
Exception
e
)
{
notificationManager
.
showErrorNotification
(
Messages
.
PROCESS_TOXML_FAILED
,
e
);
}
}
}
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/ExportModelClickListener.java
已删除
100644 → 0
浏览文件 @
8f1b1f88
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.explorer.ui.process.listener
;
import
java.io.ByteArrayInputStream
;
import
java.io.File
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
org.activiti.bpmn.converter.BpmnXMLConverter
;
import
org.activiti.bpmn.model.BpmnModel
;
import
org.activiti.editor.language.json.converter.BpmnJsonConverter
;
import
org.activiti.engine.ProcessEngines
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.Messages
;
import
org.activiti.explorer.NotificationManager
;
import
org.codehaus.jackson.JsonNode
;
import
org.codehaus.jackson.map.ObjectMapper
;
import
com.vaadin.terminal.DownloadStream
;
import
com.vaadin.terminal.FileResource
;
import
com.vaadin.ui.Button.ClickEvent
;
import
com.vaadin.ui.Button.ClickListener
;
/**
* @author Tijs Rademakers
*/
public
class
ExportModelClickListener
implements
ClickListener
{
private
static
final
long
serialVersionUID
=
1L
;
protected
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
ExportModelClickListener
.
class
.
getName
());
protected
RepositoryService
repositoryService
;
protected
NotificationManager
notificationManager
;
protected
Model
modelData
;
public
ExportModelClickListener
(
Model
model
)
{
this
.
repositoryService
=
ProcessEngines
.
getDefaultProcessEngine
().
getRepositoryService
();
this
.
notificationManager
=
ExplorerApp
.
get
().
getNotificationManager
();
this
.
modelData
=
model
;
}
public
void
buttonClick
(
ClickEvent
event
)
{
final
FileResource
stream
=
new
FileResource
(
new
File
(
""
),
ExplorerApp
.
get
())
{
private
static
final
long
serialVersionUID
=
1L
;
@Override
public
DownloadStream
getStream
()
{
DownloadStream
ds
=
null
;
try
{
BpmnJsonConverter
jsonConverter
=
new
BpmnJsonConverter
();
JsonNode
editorNode
=
new
ObjectMapper
().
readTree
(
repositoryService
.
getModelEditorSource
(
modelData
.
getId
()));
BpmnModel
bpmnModel
=
jsonConverter
.
convertToBpmnModel
(
editorNode
);
BpmnXMLConverter
xmlConverter
=
new
BpmnXMLConverter
();
byte
[]
bpmnBytes
=
xmlConverter
.
convertToXML
(
bpmnModel
);
ByteArrayInputStream
in
=
new
ByteArrayInputStream
(
bpmnBytes
);
String
filename
=
bpmnModel
.
getMainProcess
().
getId
()
+
".bpmn20.xml"
;
ds
=
new
DownloadStream
(
in
,
"application/xml"
,
filename
);
// Need a file download POPUP
ds
.
setParameter
(
"Content-Disposition"
,
"attachment; filename="
+
filename
);
}
catch
(
Exception
e
)
{
LOGGER
.
log
(
Level
.
SEVERE
,
"failed to export model to BPMN XML"
,
e
);
notificationManager
.
showErrorNotification
(
Messages
.
PROCESS_TOXML_FAILED
,
e
);
}
return
ds
;
}
};
stream
.
setCacheTime
(
0
);
ExplorerApp
.
get
().
getMainWindow
().
open
(
stream
);
}
}
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/
Delete
ModelClickListener.java
→
modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/process/listener/
Import
ModelClickListener.java
浏览文件 @
cd2a3495
package
org.activiti.explorer.ui.process.listener
;
import
org.activiti.editor.ui.DeleteModelPopupWindow
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.editor.ui.ImportUploadReceiver
;
import
org.activiti.explorer.ExplorerApp
;
import
org.activiti.explorer.Messages
;
import
org.activiti.explorer.ui.custom.ImportPopupWindow
;
import
com.vaadin.ui.Button.ClickEvent
;
import
com.vaadin.ui.Button.ClickListener
;
...
...
@@ -11,17 +12,17 @@ import com.vaadin.ui.Button.ClickListener;
/**
* @author Tijs Rademakers
*/
public
class
Delete
ModelClickListener
implements
ClickListener
{
public
class
Import
ModelClickListener
implements
ClickListener
{
private
static
final
long
serialVersionUID
=
1L
;
protected
Model
modelData
;
public
DeleteModelClickListener
(
Model
model
)
{
this
.
modelData
=
model
;
}
public
void
buttonClick
(
ClickEvent
event
)
{
ExplorerApp
.
get
().
getViewManager
().
showPopupWindow
(
new
DeleteModelPopupWindow
(
modelData
));
ImportUploadReceiver
receiver
=
new
ImportUploadReceiver
();
ImportPopupWindow
importPopupWindow
=
new
ImportPopupWindow
(
ExplorerApp
.
get
().
getI18nManager
().
getMessage
(
Messages
.
MODEL_IMPORT
),
ExplorerApp
.
get
().
getI18nManager
().
getMessage
(
Messages
.
MODEL_IMPORT_DESCRIPTION
),
receiver
);
importPopupWindow
.
addFinishedListener
(
receiver
);
ExplorerApp
.
get
().
getViewManager
().
showPopupWindow
(
importPopupWindow
);
}
}
modules/activiti-explorer/src/main/resources/messages.properties
浏览文件 @
cd2a3495
...
...
@@ -180,10 +180,11 @@ process.header.suspension.state = Suspension state changes
process.scheduled.suspend
=
This process definition is scheduled to be <b>suspended on {0}</b>
process.scheduled.activate
=
This process definition is scheduled to be <b>activated on {0}</b>
process.start
=
Start process
process.edit
=
Edit
model
process.edit
=
Edit
process.copy
=
Copy model
process.delete
=
Delete model
process.new
=
New model
process.import
=
Import
process.deploy
=
Deploy
process.activate
=
Activate
process.activate.popup
=
Activate process definition
...
...
@@ -196,7 +197,7 @@ process.suspend.popup.time.now = now
process.suspend.popup.time.date
=
on
process.suspend.popup.process.instances.description
=
Also suspend all process instances for this process definition
process.convert
=
Convert to editable model
process.export
=
Export
to BPMN 2.0
process.export
=
Export
model
process.toxml.failed
=
Create of BPMN XML failed
process.instance.delete
=
Delete
process.instance.delete.popup.title
=
Delete process instance {0}?
...
...
@@ -263,10 +264,10 @@ deployment.create.time = Deployed
deployment.header.definitions
=
Process Definitions
deployment.header.resources
=
Resources
deployment.upload
=
Upload new deployment
deployment.upload.description
=
Select a file (.bar, .zip or .bpmn20.xml) or drop a file in the rectangle below.
deployment.upload.description
=
Select a file (.bar, .zip
, .bpmn
or .bpmn20.xml) or drop a file in the rectangle below.
deployment.upload.failed
=
Deployment failed
deployment.upload.invalid.file
=
Could not upload file
deployment.upload.invalid.file.explanation
=
Only .bar, .zip and .bpmn20.xml files are supported
deployment.upload.invalid.file.explanation
=
Only .bar, .zip
, .bpmn
and .bpmn20.xml files are supported
deployment.upload.server.error
=
Server-side error ...
deployment.deploy.time
=
Deployed {0}
deployment.no.name
=
(Nameless deployment)
...
...
@@ -275,6 +276,18 @@ deployment.delete.popup.caption = Delete deployment {0}?
deployment.delete.popup.warning
=
Found <b>{0} running process instances</b> for this deployment.<br/>Are you sure you want to go ahead?
deployment.delete.popup.delete.button
=
Delete deployment
# Import to model workspace
model.import
=
Import a model
model.import.description
=
Select a file (.bpmn20.xml or .bpmn) with BPMN DI information.
model.import.failed
=
Import failed
model.import.invalid.file
=
Could not import file
model.import.invalid.file.explanation
=
Only .bpmn or .bpmn20.xml files are supported
model.import.invalid.bpmndi
=
Could not find BPMN DI
model.import.invalid.bpmndi.explanation
=
Make sure that the file contains BPMN DI information
model.import.invalid.bpmn.explanation
=
Make sure that the file contains valid BPMN
model.action
=
Model action:
# Database page
database.no.rows
=
Table contains no rows.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录