Commit 83e6a7b0 authored by 雍欢's avatar 雍欢

设置流程事件监听和用户任务监听器的时候可以通过easysearch查询已有spring bean

parent 31b47eba
...@@ -7,6 +7,11 @@ import com.huigou.explorer.converters.WorkflowModeConverter; ...@@ -7,6 +7,11 @@ import com.huigou.explorer.converters.WorkflowModeConverter;
import com.huigou.explorer.domain.model.Model; import com.huigou.explorer.domain.model.Model;
import com.huigou.explorer.util.GraphUtils; import com.huigou.explorer.util.GraphUtils;
import com.huigou.uasp.annotation.ControllerMapping; import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.bmp.common.easysearch.EasySearch;
import com.huigou.uasp.bmp.common.easysearch.domain.model.EasySearchParse;
import com.huigou.uasp.bmp.common.easysearch.domain.model.QuerySchemeField;
import com.huigou.uasp.bmp.opm.application.impl.MemEasySearcherImpl;
import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.uasp.bpm.managment.application.ProcDefinitionApplication; import com.huigou.uasp.bpm.managment.application.ProcDefinitionApplication;
import com.huigou.uasp.bpm.managment.domain.model.ProcDefinition; import com.huigou.uasp.bpm.managment.domain.model.ProcDefinition;
import com.huigou.uasp.client.CommonController; import com.huigou.uasp.client.CommonController;
...@@ -18,11 +23,18 @@ import com.mxgraph.util.mxUtils; ...@@ -18,11 +23,18 @@ import com.mxgraph.util.mxUtils;
import org.activiti.bpmn.converter.BpmnXMLConverter; import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel; import org.activiti.bpmn.model.BpmnModel;
import org.activiti.engine.RepositoryService; import org.activiti.engine.RepositoryService;
import org.activiti.engine.delegate.ExecutionListener;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.impl.util.io.StringStreamSource; import org.activiti.engine.impl.util.io.StringStreamSource;
import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.util.MimeTypeUtils; import org.springframework.util.MimeTypeUtils;
...@@ -39,15 +51,16 @@ import java.io.OutputStream; ...@@ -39,15 +51,16 @@ import java.io.OutputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.List; import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* @author yonghuan * @author yonghuan
*/ */
@ControllerMapping("procDefinition") @ControllerMapping("procDefinition")
@Controller @Controller
public class ModelController extends CommonController { public class ModelController extends CommonController implements ApplicationContextAware {
@Autowired @Autowired
private ProcDefinitionApplication procDefinitionApplication; private ProcDefinitionApplication procDefinitionApplication;
...@@ -61,6 +74,12 @@ public class ModelController extends CommonController { ...@@ -61,6 +74,12 @@ public class ModelController extends CommonController {
private BpmnXMLConverter bpmnXMLConverter; private BpmnXMLConverter bpmnXMLConverter;
@Autowired @Autowired
private GeneralRepository generalRepository; private GeneralRepository generalRepository;
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
protected String getPagePath() { protected String getPagePath() {
return "/system/configtool/editor/"; return "/system/configtool/editor/";
...@@ -269,4 +288,43 @@ public class ModelController extends CommonController { ...@@ -269,4 +288,43 @@ public class ModelController extends CommonController {
return toResult(formFields); return toResult(formFields);
} }
/**
* easy search用户任务监听器。
*/
@EasySearch(configType = "bpm", queryName = "taskListener")
public Object searchTaskListener(SDO sdo) {
return searchListener(sdo, TaskListener.class);
}
/**
* easy search ExecutionListener
*/
@EasySearch(configType = "bpm", queryName = "executionListener")
public Object searchExecutionListener(SDO sdo) {
return searchListener(sdo, ExecutionListener.class);
}
private Object searchListener(SDO sdo, Class<?> listenerClass) {
Integer intPage = sdo.getInteger("intPage", 1);
Integer pageSize = sdo.getInteger("pageSize");
PageRequest pageRequest = new PageRequest(intPage - 1, pageSize);
String paramValue = sdo.getString("paramValue");
List<QuerySchemeField> fields = Arrays.asList(new QuerySchemeField("监听器名称", "name", "string", 400L));
EasySearchParse easySearchParse = new EasySearchParse();
easySearchParse.setFields(fields);
easySearchParse.setWidth(400L);
MemEasySearcherImpl<Map<String, Object>> memEasySearcher = new MemEasySearcherImpl<>();
ApplicationContext rootApplicationContext = applicationContext.getParent();
List<Map<String, Object>> flowBrokers = rootApplicationContext.getBeansOfType(listenerClass).keySet().stream()
.map(name -> {
Map<String, Object> flowBroker = new HashMap<>(1);
flowBroker.put("name", name);
return flowBroker;
}).collect(Collectors.toList());
return memEasySearcher.search(flowBrokers, easySearchParse, pageRequest, (flowBroker -> StringUtils.isBlank(paramValue) || ((String) flowBroker.get("name")).contains(paramValue)));
}
} }
...@@ -12,7 +12,8 @@ ...@@ -12,7 +12,8 @@
required="true"/> required="true"/>
</div> </div>
<div class="hg-form-row"> <div class="hg-form-row">
<x:inputC label="Java Class" name="implementation" labelCol="4" fieldCol="8" required="true"/> <x:inputC label="实现" name="implementation" labelCol="4" fieldCol="8" required="true" wrapper="select"/>
<x:hidden name="implementationSelector" />
</div> </div>
</form> </form>
<div id="field-grid"></div> <div id="field-grid"></div>
......
...@@ -92,8 +92,8 @@ function addListenerHandler() { ...@@ -92,8 +92,8 @@ function addListenerHandler() {
title: '添加执行监听器', title: '添加执行监听器',
width: 500, width: 500,
height: 430, height: 430,
init: function () { init: function (div) {
initListenerDialog(); initListenerDialog(div);
}, },
okVal: '确定', okVal: '确定',
ok: function () { ok: function () {
...@@ -117,8 +117,8 @@ function updateListenerHandler() { ...@@ -117,8 +117,8 @@ function updateListenerHandler() {
title: '修改执行监听器', title: '修改执行监听器',
width: 500, width: 500,
height: 430, height: 430,
init: function () { init: function (div) {
initListenerDialog(); initListenerDialog(div);
}, },
okVal: '确定', okVal: '确定',
ok: function () { ok: function () {
...@@ -127,7 +127,7 @@ function updateListenerHandler() { ...@@ -127,7 +127,7 @@ function updateListenerHandler() {
}); });
} }
function initListenerDialog() { function initListenerDialog(div) {
$('#submitForm [name="implementation"]').parent().parent().hide(); $('#submitForm [name="implementation"]').parent().parent().hide();
$('#submitForm [name="implementationType"]').combox({ $('#submitForm [name="implementationType"]').combox({
'onChange': function (val) { 'onChange': function (val) {
...@@ -137,6 +137,15 @@ function initListenerDialog() { ...@@ -137,6 +137,15 @@ function initListenerDialog() {
} else { } else {
$('#submitForm [name="implementation"]').parent().parent().hide(); $('#submitForm [name="implementation"]').parent().parent().hide();
} }
if (val.text == 'delegateExpression') {
$('#implementation_click button')
.removeProp('disabled')
.removeClass('disabled');
} else {
$('#implementation_click button')
.prop('disabled', 'disabled')
.addClass('disabled');
}
} }
}); });
var __id = $('#submitForm [name="__id"]').val(), fieldExtensions = []; var __id = $('#submitForm [name="__id"]').val(), fieldExtensions = [];
...@@ -156,6 +165,32 @@ function initListenerDialog() { ...@@ -156,6 +165,32 @@ function initListenerDialog() {
} }
} }
} }
$('#implementation_click button', div).click(function () {
$('#implementation-selector-container').remove();
$('<div id="implementation-selector-container"><input id="implementationSelector" name="implementationSelector" /></div>').insertBefore('#implementation_click');
$('#implementationSelector').searchbox({
type: 'bpm',
name: 'executionListener',
getParam: function () {
return {};
},
onChange: function (data) {
$('#implementation', div).val(data.text ? ('#{' + data.text + '}') : data.text);
}
});
$('#implementation-selector-container').css({
height: 1,
width: 1,
})
$('#implementation-selector-container .input-group input').css({
width: 0.1,
height: 0.1,
padding: 0,
margin: 0
});
$('#implementation-selector-container .input-group-btn').remove();
$('#implementation-selector-container #implementationSelector_text').trigger('click');
});
initFieldGrid(fieldExtensions); initFieldGrid(fieldExtensions);
} }
......
...@@ -12,7 +12,8 @@ ...@@ -12,7 +12,8 @@
required="true"/> required="true"/>
</div> </div>
<div class="hg-form-row"> <div class="hg-form-row">
<x:inputC label="Java Class" name="implementation" labelCol="4" fieldCol="8" required="true"/> <x:inputC label="实现" name="implementation" labelCol="4" fieldCol="8" required="true" wrapper="select"/>
<x:hidden name="implementationSelector" />
</div> </div>
</form> </form>
<div id="field-grid"></div> <div id="field-grid"></div>
......
...@@ -92,8 +92,8 @@ function addListenerHandler() { ...@@ -92,8 +92,8 @@ function addListenerHandler() {
title: '添加任务监听器', title: '添加任务监听器',
width: 500, width: 500,
height: 430, height: 430,
init: function () { init: function (div) {
initListenerDialog(); initListenerDialog(div);
}, },
okVal: '确定', okVal: '确定',
ok: function () { ok: function () {
...@@ -114,11 +114,11 @@ function updateListenerHandler() { ...@@ -114,11 +114,11 @@ function updateListenerHandler() {
__id: row.__id, __id: row.__id,
shape: parent.getSelectionShape() shape: parent.getSelectionShape()
}, },
title: '修改执行监听器', title: '修改任务监听器',
width: 500, width: 500,
height: 430, height: 430,
init: function () { init: function (div) {
initListenerDialog(); initListenerDialog(div);
}, },
okVal: '确定', okVal: '确定',
ok: function () { ok: function () {
...@@ -127,7 +127,7 @@ function updateListenerHandler() { ...@@ -127,7 +127,7 @@ function updateListenerHandler() {
}); });
} }
function initListenerDialog() { function initListenerDialog(div) {
$('#submitForm [name="implementation"]').parent().parent().hide(); $('#submitForm [name="implementation"]').parent().parent().hide();
$('#submitForm [name="implementationType"]').combox({ $('#submitForm [name="implementationType"]').combox({
'onChange': function (val) { 'onChange': function (val) {
...@@ -137,6 +137,15 @@ function initListenerDialog() { ...@@ -137,6 +137,15 @@ function initListenerDialog() {
} else { } else {
$('#submitForm [name="implementation"]').parent().parent().hide(); $('#submitForm [name="implementation"]').parent().parent().hide();
} }
if (val.text == 'delegateExpression') {
$('#implementation_click button')
.removeProp('disabled')
.removeClass('disabled');
} else {
$('#implementation_click button')
.prop('disabled', 'disabled')
.addClass('disabled');
}
} }
}); });
var __id = $('#submitForm [name="__id"]').val(), fieldExtensions = []; var __id = $('#submitForm [name="__id"]').val(), fieldExtensions = [];
...@@ -156,6 +165,32 @@ function initListenerDialog() { ...@@ -156,6 +165,32 @@ function initListenerDialog() {
} }
} }
} }
$('#implementation_click button', div).click(function () {
$('#implementation-selector-container').remove();
$('<div id="implementation-selector-container"><input id="implementationSelector" name="implementationSelector" /></div>').insertBefore('#implementation_click');
$('#implementationSelector').searchbox({
type: 'bpm',
name: 'taskListener',
getParam: function () {
return {};
},
onChange: function (data) {
$('#implementation', div).val(data.text ? ('#{' + data.text + '}') : data.text);
}
});
$('#implementation-selector-container').css({
height: 1,
width: 1,
})
$('#implementation-selector-container .input-group input').css({
width: 0.1,
height: 0.1,
padding: 0,
margin: 0
});
$('#implementation-selector-container .input-group-btn').remove();
$('#implementation-selector-container #implementationSelector_text').trigger('click');
});
initFieldGrid(fieldExtensions); initFieldGrid(fieldExtensions);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment