Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
47f70cf0
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,发现更多精彩内容 >>
提交
47f70cf0
编写于
12月 10, 2010
作者:
M
meyerd
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Activiti Cycle: implemented "Overwrite technical model(s)" action
上级
92f0caca
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
204 addition
and
30 deletion
+204
-30
modules/activiti-cycle/src/main/java/org/activiti/cycle/ArtifactAwareParameterizedAction.java
.../org/activiti/cycle/ArtifactAwareParameterizedAction.java
+18
-0
modules/activiti-cycle/src/main/java/org/activiti/cycle/ParameterizedAction.java
...src/main/java/org/activiti/cycle/ParameterizedAction.java
+1
-1
modules/activiti-cycle/src/main/java/org/activiti/cycle/RepositoryArtifact.java
.../src/main/java/org/activiti/cycle/RepositoryArtifact.java
+2
-0
modules/activiti-cycle/src/main/java/org/activiti/cycle/context/CycleApplicationContext.java
...a/org/activiti/cycle/context/CycleApplicationContext.java
+1
-0
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/RepositoryArtifactImpl.java
.../java/org/activiti/cycle/impl/RepositoryArtifactImpl.java
+20
-1
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioPluginDefinition.java
...cle/impl/connector/signavio/SignavioPluginDefinition.java
+2
-0
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/AbstractTechnicalBpmnXmlAction.java
...ector/signavio/action/AbstractTechnicalBpmnXmlAction.java
+41
-0
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.java
...nnector/signavio/action/CreateTechnicalBpmnXmlAction.java
+6
-21
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/OverwriteTechnicalBpmnXmlAction.java
...ctor/signavio/action/OverwriteTechnicalBpmnXmlAction.java
+92
-0
modules/activiti-cycle/src/main/java/org/activiti/cycle/incubator/connector/svn/SvnRepositoryConnector.java
...cycle/incubator/connector/svn/SvnRepositoryConnector.java
+10
-6
modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/OverwriteTechnicalBpmnXmlAction.html
...ctor/signavio/action/OverwriteTechnicalBpmnXmlAction.html
+6
-0
modules/activiti-webapp-rest/src/main/java/org/activiti/rest/api/cycle/ArtifactGet.java
...rc/main/java/org/activiti/rest/api/cycle/ArtifactGet.java
+1
-1
modules/activiti-webapp-rest/src/main/java/org/activiti/rest/api/cycle/session/ConnectorLoginRequestFilter.java
...i/rest/api/cycle/session/ConnectorLoginRequestFilter.java
+4
-0
未找到文件。
modules/activiti-cycle/src/main/java/org/activiti/cycle/ArtifactAwareParameterizedAction.java
0 → 100644
浏览文件 @
47f70cf0
package
org.activiti.cycle
;
/**
* {@link ParameterizedAction} allowing indicating whether it is applicable to a
* certain artifact via the {@link #isApplicable(RepositoryArtifact)}-method.
* <p/>
* TODO: merge into {@link ParameterizedAction} ?
*
* @author daniel.meyer@camunda.com
*/
public
interface
ArtifactAwareParameterizedAction
extends
ParameterizedAction
{
/**
* returns true if the action is applicable to the provided
* {@link RepositoryArtifact}. return false otherwise.
*/
public
boolean
isApplicable
(
RepositoryArtifact
toArtifact
);
}
modules/activiti-cycle/src/main/java/org/activiti/cycle/ParameterizedAction.java
浏览文件 @
47f70cf0
...
...
@@ -29,5 +29,5 @@ public interface ParameterizedAction {
public
String
getFormAsHtml
();
public
void
execute
(
RepositoryConnector
connector
,
RepositoryArtifact
artifact
,
Map
<
String
,
Object
>
parameters
)
throws
Exception
;
}
modules/activiti-cycle/src/main/java/org/activiti/cycle/RepositoryArtifact.java
浏览文件 @
47f70cf0
...
...
@@ -27,4 +27,6 @@ public interface RepositoryArtifact extends RepositoryNode {
public
List
<
RepositoryArtifactOpenLinkAction
>
getOpenLinkActions
();
public
List
<
ParameterizedAction
>
getParameterizedActions
();
}
modules/activiti-cycle/src/main/java/org/activiti/cycle/context/CycleApplicationContext.java
浏览文件 @
47f70cf0
...
...
@@ -28,6 +28,7 @@ public class CycleApplicationContext {
}
public
static
Object
get
(
String
key
)
{
// TODO: restore discarded or un-initialized instances.
return
wrappedContext
.
get
(
key
);
}
...
...
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/RepositoryArtifactImpl.java
浏览文件 @
47f70cf0
...
...
@@ -12,9 +12,12 @@
*/
package
org.activiti.cycle.impl
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.activiti.cycle.ArtifactAwareParameterizedAction
;
import
org.activiti.cycle.ArtifactType
;
import
org.activiti.cycle.ParameterizedAction
;
import
org.activiti.cycle.RepositoryArtifact
;
import
org.activiti.cycle.RepositoryArtifactOpenLinkAction
;
import
org.activiti.cycle.RepositoryConnector
;
...
...
@@ -44,7 +47,6 @@ public class RepositoryArtifactImpl extends RepositoryNodeImpl implements Reposi
+
getMetadata
()
+
"]"
;
}
public
ArtifactType
getArtifactType
()
{
return
artifactType
;
}
...
...
@@ -52,4 +54,21 @@ public class RepositoryArtifactImpl extends RepositoryNodeImpl implements Reposi
public
List
<
RepositoryArtifactOpenLinkAction
>
getOpenLinkActions
()
{
return
openLinkActions
;
}
public
List
<
ParameterizedAction
>
getParameterizedActions
()
{
List
<
ParameterizedAction
>
actions
=
getArtifactType
().
getParameterizedActions
();
List
<
ParameterizedAction
>
filteredActions
=
new
ArrayList
<
ParameterizedAction
>();
// filter actions not applicable to this artifact.
for
(
ParameterizedAction
parameterizedAction
:
actions
)
{
if
(
parameterizedAction
instanceof
ArtifactAwareParameterizedAction
)
{
ArtifactAwareParameterizedAction
artifactAwareAction
=
(
ArtifactAwareParameterizedAction
)
parameterizedAction
;
if
(
artifactAwareAction
.
isApplicable
(
this
))
{
filteredActions
.
add
(
parameterizedAction
);
}
}
else
{
filteredActions
.
add
(
parameterizedAction
);
}
}
return
filteredActions
;
}
}
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioPluginDefinition.java
浏览文件 @
47f70cf0
...
...
@@ -12,6 +12,7 @@ import org.activiti.cycle.impl.connector.signavio.action.CopySignavioModelAction
import
org.activiti.cycle.impl.connector.signavio.action.CreateMavenProjectAction
;
import
org.activiti.cycle.impl.connector.signavio.action.CreateTechnicalBpmnXmlAction
;
import
org.activiti.cycle.impl.connector.signavio.action.OpenModelerAction
;
import
org.activiti.cycle.impl.connector.signavio.action.OverwriteTechnicalBpmnXmlAction
;
import
org.activiti.cycle.impl.connector.signavio.action.SelectDiffTargetAction
;
import
org.activiti.cycle.impl.connector.signavio.action.ValidateActivitiDeployment
;
import
org.activiti.cycle.impl.connector.signavio.provider.ActivitiCompliantBpmn20Provider
;
...
...
@@ -79,6 +80,7 @@ public class SignavioPluginDefinition implements ActivitiCyclePluginDefinition {
// new SignavioDiffProvider());
artifactType1
.
addParameterizedAction
(
new
CreateTechnicalBpmnXmlAction
());
artifactType1
.
addParameterizedAction
(
new
OverwriteTechnicalBpmnXmlAction
());
artifactType1
.
addParameterizedAction
(
new
ValidateActivitiDeployment
());
artifactType1
.
addParameterizedAction
(
new
CopySignavioModelAction
());
// artifactType1.addParameterizedAction(new SelectDiffTargetAction());
...
...
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/AbstractTechnicalBpmnXmlAction.java
0 → 100644
浏览文件 @
47f70cf0
package
org.activiti.cycle.impl.connector.signavio.action
;
import
org.activiti.cycle.Content
;
import
org.activiti.cycle.RepositoryArtifact
;
import
org.activiti.cycle.RepositoryConnector
;
import
org.activiti.cycle.impl.ParameterizedHtmlFormTemplateAction
;
import
org.activiti.cycle.impl.connector.signavio.provider.ActivitiCompliantBpmn20Provider
;
import
org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkEntity
;
/**
* Abstract base action for creating technical bpmn models.
*/
public
abstract
class
AbstractTechnicalBpmnXmlAction
extends
ParameterizedHtmlFormTemplateAction
{
private
static
final
long
serialVersionUID
=
1L
;
public
AbstractTechnicalBpmnXmlAction
(
String
name
)
{
super
(
name
);
}
public
String
getLinkType
()
{
return
RepositoryArtifactLinkEntity
.
TYPE_IMPLEMENTS
;
}
public
Content
createContent
(
RepositoryConnector
connector
,
RepositoryArtifact
artifact
)
{
String
bpmnXml
=
ActivitiCompliantBpmn20Provider
.
createBpmnXml
(
connector
,
artifact
);
Content
content
=
new
Content
();
content
.
setValue
(
bpmnXml
);
return
content
;
}
public
String
getProcessName
(
RepositoryArtifact
artifact
)
{
return
artifact
.
getMetadata
().
getName
();
}
@Override
public
String
getFormResourceName
()
{
return
getDefaultFormName
();
}
}
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.java
浏览文件 @
47f70cf0
...
...
@@ -23,7 +23,7 @@ import org.activiti.cycle.service.CycleServiceFactory;
*
* @author bernd.ruecker@camunda.com
*/
public
class
CreateTechnicalBpmnXmlAction
extends
ParameterizedHtmlFormTemplate
Action
{
public
class
CreateTechnicalBpmnXmlAction
extends
AbstractTechnicalBpmnXml
Action
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -65,33 +65,18 @@ public class CreateTechnicalBpmnXmlAction extends ParameterizedHtmlFormTemplateA
repositoryService
.
addArtifactLink
(
link
);
}
}
public
String
getLinkType
()
{
return
RepositoryArtifactLinkEntity
.
TYPE_IMPLEMENTS
;
}
public
RepositoryArtifact
createArtifact
(
RepositoryConnector
connector
,
RepositoryArtifact
a
rtifact
,
String
targetFolderId
,
String
targetName
,
public
RepositoryArtifact
createArtifact
(
RepositoryConnector
sourceConnector
,
RepositoryArtifact
sourceA
rtifact
,
String
targetFolderId
,
String
targetName
,
RepositoryConnector
targetConnector
)
throws
Exception
{
String
bpmnXml
=
ActivitiCompliantBpmn20Provider
.
createBpmnXml
(
connector
,
artifact
);
RepositoryArtifact
targetArtifact
=
createTargetArtifact
(
targetConnector
,
targetFolderId
,
targetName
+
".bpmn20.xml"
,
bpmnXml
,
FileSystemPluginDefinition
.
ARTIFACT_TYPE_BPMN_20_XML
);
return
targetArtifact
;
}
public
RepositoryArtifact
createTargetArtifact
(
RepositoryConnector
targetConnector
,
String
targetFolderId
,
String
artifactId
,
String
bpmnXml
,
String
artifactTypeId
)
{
Content
content
=
new
Content
();
content
.
setValue
(
bpmnXml
);
return
targetConnector
.
createArtifact
(
targetFolderId
,
artifactId
,
artifactTypeId
,
content
);
}
public
String
getProcessName
(
RepositoryArtifact
artifact
)
{
return
artifact
.
getMetadata
().
getName
();
}
String
targetArtifactId
=
targetName
+
".bpmn20.xml"
;
String
targetArtifactTypeId
=
FileSystemPluginDefinition
.
ARTIFACT_TYPE_BPMN_20_XML
;
Content
content
=
createContent
(
sourceConnector
,
sourceArtifact
);
@Override
public
String
getFormResourceName
()
{
return
getDefaultFormName
();
return
targetConnector
.
createArtifact
(
targetFolderId
,
targetArtifactId
,
targetArtifactTypeId
,
content
);
}
}
modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/OverwriteTechnicalBpmnXmlAction.java
0 → 100644
浏览文件 @
47f70cf0
package
org.activiti.cycle.impl.connector.signavio.action
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
org.activiti.cycle.ArtifactAwareParameterizedAction
;
import
org.activiti.cycle.Content
;
import
org.activiti.cycle.RepositoryArtifact
;
import
org.activiti.cycle.RepositoryArtifactLink
;
import
org.activiti.cycle.RepositoryConnector
;
import
org.activiti.cycle.RepositoryFolder
;
import
org.activiti.cycle.service.CycleRepositoryService
;
import
org.activiti.cycle.service.CycleServiceFactory
;
/**
* This action creates a technical BPMN 2.0 XML for the process engines. It
* copies the XML from Signavio to a given {@link RepositoryFolder}.
*
* By doing that, registered plugins / transformations are executed. The link
* between the two {@link RepositoryArtifact}s is remembered (TODO).
*
* @author bernd.ruecker@camunda.com
*/
public
class
OverwriteTechnicalBpmnXmlAction
extends
AbstractTechnicalBpmnXmlAction
implements
ArtifactAwareParameterizedAction
{
private
static
final
long
serialVersionUID
=
1L
;
public
static
final
String
PARAM_TARGET_FOLDER
=
"targetFolderId"
;
public
static
final
String
PARAM_TARGET_CONNECTOR
=
"targetConnectorId"
;
public
static
final
String
PARAM_TARGET_NAME
=
"targetName"
;
public
static
final
String
PARAM_COMMENT
=
"comment"
;
public
static
final
String
CREATE_LINK_NAME
=
"createLink"
;
public
OverwriteTechnicalBpmnXmlAction
()
{
// TODO: remove when real labels are introduced in the GUI
super
(
"Overwrite technical model(s)"
);
}
public
OverwriteTechnicalBpmnXmlAction
(
String
name
)
{
// TODO: remove when real labels are introduced in the GUI
super
(
name
);
}
/**
* TODO: dedicated query? might be too in-efficient if we have a huge ammount
* of links...
*/
private
List
<
RepositoryArtifactLink
>
getImplementationLinks
(
RepositoryArtifact
forArtifact
)
{
CycleRepositoryService
cycleRepositoryService
=
CycleServiceFactory
.
getRepositoryService
();
List
<
RepositoryArtifactLink
>
links
=
cycleRepositoryService
.
getArtifactLinks
(
forArtifact
.
getConnectorId
(),
forArtifact
.
getNodeId
());
List
<
RepositoryArtifactLink
>
implementationLinks
=
new
ArrayList
<
RepositoryArtifactLink
>();
for
(
RepositoryArtifactLink
repositoryArtifactLink
:
links
)
{
if
(!
getLinkType
().
equals
(
repositoryArtifactLink
.
getLinkType
()))
{
continue
;
}
implementationLinks
.
add
(
repositoryArtifactLink
);
}
return
implementationLinks
;
}
public
void
execute
(
RepositoryConnector
connector
,
RepositoryArtifact
artifact
,
Map
<
String
,
Object
>
parameters
)
throws
Exception
{
List
<
RepositoryArtifactLink
>
implementations
=
getImplementationLinks
(
artifact
);
for
(
RepositoryArtifactLink
repositoryArtifactLink
:
implementations
)
{
RepositoryArtifact
implementationArtifact
=
repositoryArtifactLink
.
getTargetArtifact
();
if
(
implementationArtifact
==
null
)
{
throw
new
Exception
(
"Cannot resolve artifact '"
+
repositoryArtifactLink
.
getTargetElementId
()
+
"'. Corresponding connector not logged in?"
);
}
updateArtifact
(
connector
,
artifact
,
implementationArtifact
.
getNodeId
(),
implementationArtifact
.
getConnectorId
());
}
}
private
void
updateArtifact
(
RepositoryConnector
sourceConnector
,
RepositoryArtifact
sourceArtifact
,
String
targetNodeId
,
String
targetConnectorId
)
{
CycleRepositoryService
cycleRepositoryService
=
CycleServiceFactory
.
getRepositoryService
();
Content
content
=
createContent
(
sourceConnector
,
sourceArtifact
);
cycleRepositoryService
.
updateContent
(
targetConnectorId
,
targetNodeId
,
content
);
}
public
boolean
isApplicable
(
RepositoryArtifact
toArtifact
)
{
return
getImplementationLinks
(
toArtifact
).
size
()
>
0
;
}
}
modules/activiti-cycle/src/main/java/org/activiti/cycle/incubator/connector/svn/SvnRepositoryConnector.java
浏览文件 @
47f70cf0
...
...
@@ -76,11 +76,11 @@ public class SvnRepositoryConnector extends AbstractRepositoryConnector<SvnConne
static
{
setupFactories
();
}
public
SvnRepositoryConnector
()
{
}
protected
void
validateConfig
()
{
String
repositoryPath
=
getConfiguration
().
getRepositoryPath
();
if
(
repositoryPath
==
null
)
{
...
...
@@ -651,11 +651,15 @@ public class SvnRepositoryConnector extends AbstractRepositoryConnector<SvnConne
}
private
void
unlock
()
{
for
(
int
i
=
0
;
i
<
transactionLock
.
getHoldCount
();
i
++)
{
transactionLock
.
unlock
();
// TODO: <!> hack, find a better way to do this properly:
while
(
true
)
{
try
{
transactionLock
.
unlock
();
}
catch
(
Exception
e
)
{
break
;
}
}
}
public
void
beginTransaction
()
{
// do not autocommit on transactions coming in via the public API.
beginTransaction
(
false
);
...
...
modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/OverwriteTechnicalBpmnXmlAction.html
0 → 100644
浏览文件 @
47f70cf0
<h1>
Overwrite Technical Model(s)
</h1>
This action overwrites all technical models linked to this model.
<br
/>
Warning: changes made to the technical models will be lost.
<input
type=
"hidden"
name=
"test"
value=
""
/>
modules/activiti-webapp-rest/src/main/java/org/activiti/rest/api/cycle/ArtifactGet.java
浏览文件 @
47f70cf0
...
...
@@ -54,7 +54,7 @@ public class ArtifactGet extends ActivitiCycleWebScript {
model
.
put
(
"contentRepresentations"
,
contentRepresentations
);
model
.
put
(
"actions"
,
artifact
.
get
ArtifactType
().
get
ParameterizedActions
());
model
.
put
(
"actions"
,
artifact
.
getParameterizedActions
());
// Create downloadContentView DTOs
List
<
DownloadActionView
>
downloads
=
new
ArrayList
<
DownloadActionView
>();
...
...
modules/activiti-webapp-rest/src/main/java/org/activiti/rest/api/cycle/session/ConnectorLoginRequestFilter.java
浏览文件 @
47f70cf0
...
...
@@ -19,6 +19,10 @@ public class ConnectorLoginRequestFilter implements CycleRequestFilter {
return
;
String
connectorId
=
(
String
)
connectorIdObject
;
if
(
connectorId
.
length
()
==
0
)
return
;
// read credentials from request
String
username
=
req
.
getString
(
connectorId
+
"_username"
);
String
password
=
req
.
getString
(
connectorId
+
"_password"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录