Explorar o código

动态表单适配

xiongzhu %!s(int64=7) %!d(string=hai) anos
pai
achega
7c1270ac86

+ 2 - 47
.gitignore

@@ -30,51 +30,6 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-engine:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-bpmn-converter:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-process-validation:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-image-generator:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-spring:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-explorer:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-crystalball:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.imgscalr:imgscalr-lib:4.2" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.groovy:groovy-all:2.4.5" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-modeler:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-common-rest:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-config:3.2.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:3.2.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-web:3.2.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:fop:0.94" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.avalon.framework:avalon-framework-api:4.3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.avalon.framework:avalon-framework-impl:4.3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.7" level="project" />
-    <orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-js:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-codec:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-rest:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-simple-workflow:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-bpmn-layout:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:3.2.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-diagram-rest:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-json-converter:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-bpmn-model:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: org.activiti:activiti-cxf:5.22.0" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.13" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.13" level="project" />
     <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.5.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.5.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.5.RELEASE" level="project" />
@@ -100,7 +55,7 @@
     <orderEntry type="module-library">
       <library name="Maven: com.alibaba:jconsole:1.8.0">
         <CLASSES>
-          <root url="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/lib/jconsole.jar!/" />
+          <root url="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/lib/jconsole.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES />
@@ -109,7 +64,7 @@
     <orderEntry type="module-library">
       <library name="Maven: com.alibaba:tools:1.8.0">
         <CLASSES>
-          <root url="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/lib/tools.jar!/" />
+          <root url="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/lib/tools.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES />

+ 19 - 3
pom.xml

@@ -17,6 +17,7 @@ import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.repository.DeploymentBuilder;
 import org.activiti.engine.repository.Model;
 import org.activiti.engine.repository.ModelQuery;
+import org.activiti.engine.runtime.ProcessInstance;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -106,10 +107,25 @@ public class ActivitiController {
         return new Result(false, "失败");
     }
 
-    @RequestMapping(value = "/startProcess", method = RequestMethod.POST)
+    @RequestMapping(value = "/startProcess/{processDefinitionId}", method = RequestMethod.POST)
     @ResponseBody
-    public Result startProcess(@RequestBody Map<String, String> formProperties) {
-        return new Result(true, "");
+    public Result startProcess(@PathVariable("processDefinitionId") String processDefinitionId, HttpServletRequest request) {
+        Map<String, String> formProperties = new HashMap<>();
+
+        // 从request中读取参数然后转换
+        Map<String, String[]> parameterMap = request.getParameterMap();
+        Set<Map.Entry<String, String[]>> entrySet = parameterMap.entrySet();
+        for (Map.Entry<String, String[]> entry : entrySet) {
+            String key = entry.getKey();
+            formProperties.put(key, StringUtils.join(entry.getValue(), ","));
+        }
+        try {
+            ProcessInstance processInstance = formService.submitStartFormData(processDefinitionId, formProperties);
+            return new Result(true, (Object) processInstance.getBusinessKey());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return new Result(false, "失败");
     }
 
 }

+ 9 - 5
src/main/java/com/izouma/awesomeadmin/web/AssetsController.java

@@ -15,6 +15,7 @@ import com.izouma.awesomeadmin.service.PowerInfoService;
 import com.izouma.awesomeadmin.service.SysMenuService;
 import com.izouma.awesomeadmin.util.CookieUtil;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.activiti.engine.IdentityService;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authc.UsernamePasswordToken;
@@ -43,14 +44,15 @@ import javax.servlet.http.HttpSession;
 public class UserInfoController extends BaseController {
 
     @Autowired
-    private UserInfoService userInfoService;
+    private UserInfoService   userInfoService;
     @Autowired
-    private PowerInfoService powerInfoService;
+    private PowerInfoService  powerInfoService;
     @Autowired
-    private SysMenuService sysMenuService;
-
+    private SysMenuService    sysMenuService;
     @Autowired
     private DepartInfoService departInfoService;
+    @Autowired
+    private IdentityService   identityService;
 
     /**
      * <p>获取全部记录。</p>
@@ -200,7 +202,7 @@ public class UserInfoController extends BaseController {
             //这里会加载自定义的realm
             subject.login(token);//把令牌放到login里面进行查询,如果查询账号和密码时候匹配,如果匹配就把user对象获取出来,失败就抛异常
             UserInfo user = (UserInfo) subject.getPrincipal();//获取登录成功的用户对象(以前是直接去service里面查)
-
+            identityService.setAuthenticatedUserId(user.getId().toString());
             request.getSession(true).setAttribute("superUserId", String.valueOf(user.getId()));
             if (remember) {
                 HttpSession session = request.getSession();
@@ -217,8 +219,10 @@ public class UserInfoController extends BaseController {
     @RequestMapping(value = "/logout", method = RequestMethod.POST)
     @ResponseBody
     public Result logout() {
+
         Subject subject = SecurityUtils.getSubject();
         subject.logout();
+        identityService.setAuthenticatedUserId(null);
         return new Result(true, "已退出登录");
     }
 

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 97 - 117
src/main/java/com/izouma/awesomeadmin/web/admin/AdminController.java


+ 6 - 5
src/main/resources/templates/ControllerTemplate.vm

@@ -1,7 +1,7 @@
 <template>
     <div>
         <div class="filters-container">
-            <el-select class="filter-item" v-model="selectedDeploymentId" size="small">
+            <el-select class="filter-item" v-model="selectedProcessDefinitionId" size="small">
                 <el-option v-for="item in processDefinitions" :label="item.name" :value="item.id"
                            :key="item.id"></el-option>
             </el-select>
@@ -63,7 +63,8 @@
             </el-pagination>
         </div>
         <el-dialog :visible.sync="dialogVisible" title="发起流程">
-            <el-form :model="startFormModel" ref="startForm" label-position="top" size="small" :rules="rules">
+            <el-form :model="startFormModel" ref="startForm" label-position="right" label-width="100px" size="small"
+                     :rules="rules">
                 <el-form-item
                     v-for="item in startForm"
                     :prop="item.id"
@@ -117,7 +118,7 @@
                 multipleMode: false,
                 loading: false,
                 processDefinitions: [],
-                selectedDeploymentId: '',
+                selectedProcessDefinitionId: '',
                 dialogVisible: false,
                 startForm: [],
                 startFormModel: {},
@@ -160,7 +161,7 @@
                 this.$http.get({
                     url: '/rest/form/form-data',
                     data: {
-                        processDefinitionId: this.selectedDeploymentId
+                        processDefinitionId: this.selectedProcessDefinitionId
                     }
                 }).then(res => {
                     this.startForm = res.formProperties;
@@ -172,7 +173,7 @@
                 this.$refs.startForm.validate(valid => {
                     if (valid) {
                         this.$http.post({
-                            url: '/activiti/startProcess',
+                            url: `/activiti/startProcess/${this.selectedProcessDefinitionId}`,
                             data: this.startFormModel
                         }).then(res => {
                             if (res.success) {

+ 37 - 33
src/main/vue/src/pages/MyTasks.vue

@@ -24,7 +24,7 @@ var activitiModeler = angular.module('activitiModeler', [
   'ngSanitize',
   'ngRoute',
   'ngDragDrop',
-  'mgcrea.ngStrap', 
+  'mgcrea.ngStrap',
   'ngGrid',
   'ngAnimate',
   'pascalprecht.translate',
@@ -41,34 +41,38 @@ activitiModeler
       angular.extend($selectProvider.defaults, {
           caretHtml: '&nbsp;<i class="icon icon-caret-down"></i>'
       });
-        
+
         // Initialize angular-translate
         $translateProvider.useStaticFilesLoader({
             prefix: './editor-app/i18n/',
             suffix: '.json'
         });
-
-        $translateProvider.preferredLanguage('en');
+      var language = navigator.language;
+      if("zh-CN" == language){
+          $translateProvider.preferredLanguage('zh-CN');
+      }else{
+          $translateProvider.preferredLanguage('en');
+      }
 
         // remember language
         $translateProvider.useCookieStorage();
-        
+
   }])
   .run(['$rootScope', '$timeout', '$modal', '$translate', '$location', '$window', '$http', '$q',
         function($rootScope, $timeout, $modal, $translate, $location, $window, $http, $q) {
-	  
+
 			  $rootScope.config = ACTIVITI.CONFIG;
-			  
+
 			  $rootScope.editorInitialized = false;
-		      
+
 		      $rootScope.editorFactory = $q.defer();
-		
+
 		      $rootScope.forceSelectionRefresh = false;
-		
+
 		      $rootScope.ignoreChanges = false; // by default never ignore changes
-		      
+
 		      $rootScope.validationErrors = [];
-		      
+
 		      $rootScope.staticIncludeVersion = Date.now();
 
 			  /**
@@ -84,8 +88,8 @@ activitiModeler
 		              this.$apply(fn);
 		          }
 		      };
-	  
-	  
+
+
             /**
              * Initialize the event bus: couple all Oryx events with a dispatch of the
              * event of the event bus. This way, it gets much easier to attach custom logic
@@ -128,7 +132,7 @@ activitiModeler
                     	$rootScope.orginalOryxButtonStyle = obj.style.display;
                     	obj.style.display = 'none';
                     });
-                    
+
                     jQuery('.resizer_southeast').each(function(i, obj) {
                     	$rootScope.orginalResizerSEStyle = obj.style.display;
                         obj.style.display = 'none';
@@ -160,7 +164,7 @@ activitiModeler
                     jQuery('.Oryx_button').each(function(i, obj) {
                         handleDisplayProperty(obj);
                     });
-                    
+
                     jQuery('.resizer_southeast').each(function(i, obj) {
                         handleDisplayProperty(obj);
                     });
@@ -178,21 +182,21 @@ activitiModeler
 	            if (!$rootScope.editorInitialized) {
 
 	            	ORYX._loadPlugins();
-	
+
 	                var modelId = EDITOR.UTIL.getParameterByName('modelId');
 	                fetchModel(modelId);
-	
+
 	                $rootScope.window = {};
 	                var updateWindowSize = function() {
 	                    $rootScope.window.width = $window.innerWidth;
 	                    $rootScope.window.height  = $window.innerHeight;
 	                };
-	
+
 	                // Window resize hook
 	                angular.element($window).bind('resize', function() {
 	                    $rootScope.safeApply(updateWindowSize());
 	                });
-	
+
 	                $rootScope.$watch('window.forceRefresh', function(newValue) {
 	                    if(newValue) {
 	                        $timeout(function() {
@@ -201,7 +205,7 @@ activitiModeler
 	                        });
 	                    }
 	                });
-	
+
 	                updateWindowSize();
 
 	                // Hook in resizing of main panels when window resizes
@@ -219,18 +223,18 @@ activitiModeler
 	                        || canvas === undefined || canvas === null || mainHeader === null) {
 	                        return;
 	                    }
-	                    
+
 	                    if ($rootScope.editor)
 	                	{
 	        	        	var selectedElements = $rootScope.editor.selection;
 	        	            var subSelectionElements = $rootScope.editor._subSelection;
-	        	
+
 	        	            $rootScope.selectedElements = selectedElements;
 	        	            $rootScope.subSelectionElements = subSelectionElements;
 	        	            if (selectedElements && selectedElements.length > 0)
 	        	            {
 	        	            	$rootScope.selectedElementBeforeScrolling = selectedElements[0];
-	        	            	
+
 	        	            	$rootScope.editor.setSelection([]); // needed cause it checks for element changes and does nothing if the elements are the same
 	        	                $rootScope.editor.setSelection($rootScope.selectedElements, $rootScope.subSelectionElements);
 	        	                $rootScope.selectedElements = undefined;
@@ -317,10 +321,10 @@ activitiModeler
 	                        $this.data('scrollTimeout', setTimeout(callback,50,self));
 	                    });
 	                };
-	                
+
 	                // Always needed, cause the DOM element on which the scroll event listeners are attached are changed for every new model
 	                initScrollHandling();
-	                
+
 	                $rootScope.editorInitialized = true;
 	            }
             });
@@ -348,7 +352,7 @@ activitiModeler
                         KISBPM.eventBus.dispatch(eventMapping.kisBpmType, event);
                     });
                 });
-                
+
                 $rootScope.editor.registerOnEvent(ORYX.CONFIG.EVENT_SHAPEREMOVED, function (event) {
     	    		var validateButton = document.getElementById(event.shape.resourceId + "-validate-button");
     	    		if (validateButton)
@@ -362,12 +366,12 @@ activitiModeler
                 KISBPM.eventBus.dispatch(KISBPM.eventBus.EVENT_TYPE_EDITOR_READY, {type : KISBPM.eventBus.EVENT_TYPE_EDITOR_READY});
 
             });
-            
+
             // Alerts
             $rootScope.alerts = {
                 queue: []
             };
-          
+
             $rootScope.showAlert = function(alert) {
                 if(alert.queue.length > 0) {
                     alert.current = alert.queue.shift();
@@ -384,7 +388,7 @@ activitiModeler
                     $rootScope.alerts.current = undefined;
                 }
             };
-          
+
             $rootScope.addAlert = function(message, type) {
                 var newAlert = {message: message, type: type};
                 if (!$rootScope.alerts.timeout) {
@@ -395,7 +399,7 @@ activitiModeler
                     $rootScope.alerts.queue.push(newAlert);
                 }
             };
-          
+
             $rootScope.dismissAlert = function() {
                 if (!$rootScope.alerts.timeout) {
                     $rootScope.alerts.current = undefined;
@@ -405,7 +409,7 @@ activitiModeler
                     $rootScope.showAlert($rootScope.alerts);
                 }
             };
-          
+
             $rootScope.addAlertPromise = function(promise, type) {
                 if (promise) {
                     promise.then(function(data) {
@@ -413,7 +417,7 @@ activitiModeler
                     });
                 }
             };
-          
+
         }
   ])
 

+ 286 - 0
src/main/webapp/editor-app/i18n/zh-CN.json

@@ -0,0 +1,286 @@
+{
+    "HEADER.BRAND" : "Activiti编辑",
+    "HEADER.BRAND_TAGLINE" : "powered by Alfresco",
+    "PAGE.HEADER" : "Orchestration Details",
+
+    "ACTION.OK" : "确认",
+    "ACTION.SAVE" : "保存",
+    "ACTION.SAVE-AND-CLOSE" : "保存并关闭",
+    "ACTION.SEND" : "发送",
+    "ACTION.CANCEL" : "取消",
+    "ACTION.SELECT" : "选择",
+    "ACTION.ADD" : "添加",
+    "ACTION.REMOVE" : "清除",
+    "ACTION.MOVE.UP" : "上移",
+    "ACTION.MOVE.DOWN" : "下移",
+
+    "MAIN_NAVIGATION_ORCHESTRATIONS" : "业务流程",
+    "MAIN_NAVIGATION_DISPATCH_RULES" : "调度规则",
+    "MAIN_NAVIGATION_ASSET_GROUPS" : "审批组",
+    "MAIN_NAVIGATION_SOLUTIONS" : "解决",
+
+    "TOOLBAR.ACTION.CLOSE" : "Close the editor and go back to the overview page",
+    "TOOLBAR.ACTION.SAVE" : "保存",
+    "TOOLBAR.ACTION.VALIDATE": "校验",
+    "TOOLBAR.ACTION.CUT" : "剪切",
+    "TOOLBAR.ACTION.COPY" : "复制",
+    "TOOLBAR.ACTION.PASTE" : "粘贴",
+    "TOOLBAR.ACTION.DELETE" : "删除",
+    "TOOLBAR.ACTION.UNDO" : "撤销",
+    "TOOLBAR.ACTION.REDO" : "重复",
+    "TOOLBAR.ACTION.ZOOMIN" : "放大",
+    "TOOLBAR.ACTION.ZOOMOUT" : "缩小",
+    "TOOLBAR.ACTION.ZOOMACTUAL" : "实际大小 ",
+    "TOOLBAR.ACTION.ZOOMFIT" : "适应屏幕",
+    "TOOLBAR.ACTION.MOVE" : "移动",
+    "TOOLBAR.ACTION.IMPORT" : "导入",
+    "TOOLBAR.ACTION.EXPORT" : "导出",
+    "TOOLBAR.ACTION.BENDPOINT.ADD" : "为选定的流程连线添加弯曲点",
+    "TOOLBAR.ACTION.BENDPOINT.REMOVE" : "为选定的流程连线删除弯曲点",
+    "TOOLBAR.ACTION.ALIGNHORIZONTAL" : "水平对齐",
+    "TOOLBAR.ACTION.ALIGNVERTICAL" : "垂直对齐",
+    "TOOLBAR.ACTION.SAMESIZE" : "Same size",
+    "TOOLBAR.ACTION.HELP": "Start the guided tour",
+    "TOOLBAR.ACTION.FEEDBACK": "Provide feedback",
+
+    "KICKSTART.PROCESS_TOOLBAR.ACTION.SAVE" : "保存",
+    "KICKSTART.PROCESS_TOOLBAR.ACTION.VALIDATE": "校验模型",
+    "KICKSTART.PROCESS_TOOLBAR.ACTION.HELP": "预览",
+    "KICKSTART.PROCESS_TOOLBAR.ACTION.FEEDBACK": "反馈",
+
+    "FORM_TOOLBAR.ACTION.SAVE" : "保存",
+    "FORM_TOOLBAR.ACTION.VALIDATE": "校验模型",
+    "FORM_TOOLBAR.ACTION.HELP": "预览",
+    "FORM_TOOLBAR.ACTION.FEEDBACK": "反馈",
+
+    "APP_DEFINITION_TOOLBAR.ACTION.SAVE" : "保存",
+    "APP_DEFINITION_TOOLBAR.ACTION.VALIDATE" : "校验模型",
+    "APP_DEFINITION_TOOLBAR.ACTION.HELP" : "预览",
+    "APP_DEFINITION_TOOLBAR.ACTION.FEEDBACK" : "反馈",
+
+    "BUTTON.ACTION.DELETE.TOOLTIP": "从模型中删除元素",
+    "BUTTON.ACTION.MORPH.TOOLTIP": "更改元素类型",
+
+    "ELEMENT.AUTHOR" : "作者",
+    "ELEMENT.DATE_CREATED" : "创建日期",
+    "ELEMENT.SELECTED_EMPTY_TITLE" : "(输入名称)",
+
+    "PROPERTY.REMOVED" : "清除",
+    "PROPERTY.EMPTY" : "",
+    "PROPERTY.PROPERTY.EDIT.TITLE" : "修改 \"{{title}}\"",
+
+    "PROPERTY.FEEDBACK.TITLE" : "请填写您的反馈意见",
+
+    "PROPERTY.ASSIGNMENT.TITLE" : "指派",
+    "PROPERTY.ASSIGNMENT.TYPE" : "类型",
+    "PROPERTY.ASSIGNMENT.TYPE.IDENTITYSTORE" : "Identity store",
+    "PROPERTY.ASSIGNMENT.TYPE.STATIC" : "静态值",
+    "PROPERTY.ASSIGNMENT.ASSIGNEE" : "代理人",
+    "PROPERTY.ASSIGNMENT.MATCHING" : "使用上下方向键选择并按回车键确认或使用鼠标",
+    "PROPERTY.ASSIGNMENT.ASSIGNEE_PLACEHOLDER" : "请输入代理人",
+    "PROPERTY.ASSIGNMENT.EMPTY" : "无代理人",
+    "PROPERTY.ASSIGNMENT.ASSIGNEE_DISPLAY" : "代理人 {{assignee}}",
+    "PROPERTY.ASSIGNMENT.CANDIDATE_USERS_DISPLAY" : "{{length}}候选人",
+    "PROPERTY.ASSIGNMENT.CANDIDATE_USERS" : "候选人",
+    "PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS_DISPLAY" :  "{{length}}候选组",
+    "PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS" :  "候选组",
+    "PROPERTY.ASSIGNMENT.USER_IDM_DISPLAY": "用户{{firstName}} {{lastName}}",
+    "PROPERTY.ASSIGNMENT.USER_IDM_EMAIL_DISPLAY": "用户{{email}}",
+    "PROPERTY.ASSIGNMENT.IDM_EMPTY" : "发起人",
+    "PROPERTY.ASSIGNMENT.IDM.TYPE" : "任务",
+    "PROPERTY.ASSIGNMENT.IDM.NO_CANDIDATE_USERS" : "没有选择候选人...",
+    "PROPERTY.ASSIGNMENT.IDM.NO_CANDIDATE_GROUPS" : "没有选择候选组...",
+    "PROPERTY.ASSIGNMENT.IDM.DROPDOWN.INITIATOR" : "分派给发起人",
+    "PROPERTY.ASSIGNMENT.IDM.DROPDOWN.USER" : "分派给一个用户",
+    "PROPERTY.ASSIGNMENT.IDM.DROPDOWN.USERS" : "候选人s",
+    "PROPERTY.ASSIGNMENT.IDM.DROPDOWN.GROUPS" : "候选组",
+    "PROPERTY.ASSIGNMENT.EMAIL.HELP" : "键入一个电子邮件地址,然后按回车键继续 ",
+
+    "PROPERTY.EXECUTIONLISTENERS.DISPLAY" : "{{length}}执行监听",
+    "PROPERTY.EXECUTIONLISTENERS.EMPTY" : "没有配置执行监听",
+    "PROPERTY.EXECUTIONLISTENERS.EVENT" : "事件",
+    "PROPERTY.EXECUTIONLISTENERS.CLASS" : "类",
+    "PROPERTY.EXECUTIONLISTENERS.CLASS.PLACEHOLDER" : "输入类名",
+    "PROPERTY.EXECUTIONLISTENERS.EXPRESSION" : "表达式",
+    "PROPERTY.EXECUTIONLISTENERS.EXPRESSION.PLACEHOLDER" : "输入表达式",
+    "PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION" : "委托表达式",
+    "PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "输入委托表达式",
+    "PROPERTY.EXECUTIONLISTENERS.UNSELECTED" : "没有配置执行监听",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME" : "名称",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME.PLACEHOLDER" : "输入名称",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION" : "表达式",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER" : "输入表达式",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE" : "字符串",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER" : "输入字符串",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING" : "字符串",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING.PLACEHOLDER" : "输入字符串",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.IMPLEMENTATION" : "实现类",
+    "PROPERTY.EXECUTIONLISTENERS.FIELDS.EMPTY" : "没有选择字段",
+
+    "PROPERTY.FIELDS" : "{{length}}字段",
+    "PROPERTY.FIELDS.EMPTY" : "没有选择字段",
+    "PROPERTY.FIELDS.NAME" : "名称",
+    "PROPERTY.FIELDS.NAME.PLACEHOLDER" : "输入名称",
+    "PROPERTY.FIELDS.EXPRESSION" : "表达式",
+    "PROPERTY.FIELDS.EXPRESSION.PLACEHOLDER" : "输入表达式",
+    "PROPERTY.FIELDS.STRINGVALUE" : "字符串",
+    "PROPERTY.FIELDS.STRINGVALUE.PLACEHOLDER" : "输入字符串",
+    "PROPERTY.FIELDS.STRING" : "字符串",
+    "PROPERTY.FIELDS.STRING.PLACEHOLDER" : "输入字符串",
+    "PROPERTY.FIELDS.IMPLEMENTATION" : "实现类",
+    "PROPERTY.FIELDS.UNSELECTED" : "没有选择字段",
+
+    "PROPERTY.FORMPROPERTIES.VALUE" : "{{length}}表单属性",
+    "PROPERTY.FORMPROPERTIES.EMPTY" : "没有配置表单",
+    "PROPERTY.FORMPROPERTIES.ID" : "活动编号",
+    "PROPERTY.FORMPROPERTIES.ID.PLACEHOLDER" : "输入活动编号",
+    "PROPERTY.FORMPROPERTIES.NAME" : "名称",
+    "PROPERTY.FORMPROPERTIES.NAME.PLACEHOLDER" : "输入名称",
+    "PROPERTY.FORMPROPERTIES.TYPE" : "类型",
+    "PROPERTY.FORMPROPERTIES.DATEPATTERN" : "时间选择框",
+    "PROPERTY.FORMPROPERTIES.DATEPATTERN.PLACEHOLDER" : "输入日期",
+    "PROPERTY.FORMPROPERTIES.VALUES" : "值",
+    "PROPERTY.FORMPROPERTIES.EXPRESSION" : "表达式",
+    "PROPERTY.FORMPROPERTIES.EXPRESSION.PLACEHOLDER" : "输入表达式",
+    "PROPERTY.FORMPROPERTIES.VARIABLE" : "变量",
+    "PROPERTY.FORMPROPERTIES.VARIABLE.PLACEHOLDER" : "输入变量",
+    "PROPERTY.FORMPROPERTIES.REQUIRED" : "必输",
+    "PROPERTY.FORMPROPERTIES.READABLE" : "可读",
+    "PROPERTY.FORMPROPERTIES.WRITABLE" : "可写",
+
+    "PROPERTY.INPARAMETERS.VALUE" : "{{length}}输入参数",
+    "PROPERTY.INPARAMETERS.EMPTY" : "没有配置输入参数",
+
+    "PROPERTY.OUTPARAMETERS.VALUE" : "{{length}}返回参数",
+    "PROPERTY.OUTPARAMETERS.EMPTY" : "没有配置返回参数",
+
+    "PROPERTY.PARAMETER.SOURCE" : "源",
+    "PROPERTY.PARAMETER.SOURCE.PLACEHOLDER" : "输入源",
+    "PROPERTY.PARAMETER.SOURCEEXPRESSION" : "源表达式",
+    "PROPERTY.PARAMETER.SOURCEEXPRESSION.PLACEHOLDER" : "输入源表达式",
+    "PROPERTY.PARAMETER.TARGET" : "目标",
+    "PROPERTY.PARAMETER.TARGET.PLACEHOLDER" : "输入目标",
+    "PROPERTY.PARAMETER.EMPTY" : "没有选择参数",
+
+    "PROPERTY.SUBPROCESSREFERENCE.EMPTY" : "没有引用子流程",
+    "PROPERTY.SUBPROCESSREFERENCE.TITLE" : "引用错误的子流程",
+    "PROPERTY.SUBPROCESSREFERENCE.ERROR.SUBPROCESS" : "子流程加载错误.请稍后再试",
+    "PROPERTY.SUBPROCESSREFERENCE.FOLDER.ROOT" : "文件夹",
+    "PROPERTY.SUBPROCESSREFERENCE.FOLDER.LOADING" : "文件夹加载中...",
+    "PROPERTY.SUBPROCESSREFERENCE.FOLDER.EMPTY" : "文件夹未包含子文件夹",
+    "PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.LOADING" : "子流程加载中...",
+    "PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.EMPTY" : "文件夹包含子文件夹",
+
+    "PROPERTY.FORMREFERENCE.EMPTY" : "没有引用表单",
+    "PROPERTY.FORMREFERENCE.TITLE" : "表单引用",
+    "PROPERTY.FORMREFERENCE.ERROR.FORM" : "表单加载错误.请稍后再试!",
+    "PROPERTY.FORMREFERENCE.FOLDER.ROOT" : "文件夹",
+    "PROPERTY.FORMREFERENCE.FOLDER.LOADING" : "文件夹加载中...",
+    "PROPERTY.FORMREFERENCE.FOLDER.EMPTY" : "文件夹未包含子文件夹",
+    "PROPERTY.FORMREFERENCE.FORM.LOADING" : "表单加载中...",
+    "PROPERTY.FORMREFERENCE.FORM.EMPTY" : "文件夹包含子文件夹",
+
+    "PROPERTY.TASKLISTENERS.VALUE" : "{{length}}任务监听",
+    "PROPERTY.TASKLISTENERS.EMPTY" : "未配置任务监听",
+    "PROPERTY.TASKLISTENERS.EVENT" : "事件",
+    "PROPERTY.TASKLISTENERS.CLASS" : "类",
+    "PROPERTY.TASKLISTENERS.CLASS.PLACEHOLDER" : "输入类名",
+    "PROPERTY.TASKLISTENERS.EXPRESSION" : "表达式",
+    "PROPERTY.TASKLISTENERS.EXPRESSION.PLACEHOLDER" : "请输入表达式",
+    "PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION" : "委托表达式",
+    "PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "请输入委托表达式",
+    "PROPERTY.TASKLISTENERS.UNSELECTED" : "没有选择任务监听",
+    "PROPERTY.TASKLISTENERS.FIELDS.NAME" : "名称",
+    "PROPERTY.TASKLISTENERS.FIELDS.NAME.PLACEHOLDER" : "请输入名称",
+    "PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION" : "表达式",
+    "PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER" : "请输入表达式",
+    "PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE" : "字符串",
+    "PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER" : "请输入字符串",
+    "PROPERTY.TASKLISTENERS.FIELDS.STRING" : "字符串",
+    "PROPERTY.TASKLISTENERS.FIELDS.STRING.PLACEHOLDER" : "请输入字符串",
+    "PROPERTY.TASKLISTENERS.FIELDS.IMPLEMENTATION" : "执行",
+    "PROPERTY.TASKLISTENERS.FIELDS.EMPTY" : "未选择字段",
+
+    "PROPERTY.EVENTLISTENERS.DISPLAY" : "{{length}}事件监听",
+    "PROPERTY.EVENTLISTENERS.EMPTY" : "未配置事件监听",
+    "PROPERTY.EVENTLISTENERS.EVENTS": "事件",
+    "PROPERTY.EVENTLISTENERS.RETHROW": "抛出事件?",
+    "PROPERTY.EVENTLISTENERS.CLASS" : "类",
+    "PROPERTY.EVENTLISTENERS.CLASS.PLACEHOLDER" : "输入类名",
+    "PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION" : "委托表达式",
+    "PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "请输入委托表达式",
+    "PROPERTY.EVENTLISTENERS.ENTITYTYPE" : "类型",
+    "PROPERTY.EVENTLISTENERS.ENTITYTYPE.PLACEHOLDER" : "请输入类型",
+    "PROPERTY.EVENTLISTENERS.RETHROWTYPE": "抛出事件类型",
+    "PROPERTY.EVENTLISTENERS.ERRORCODE" : "错误代码",
+    "PROPERTY.EVENTLISTENERS.ERRORCODE.PLACEHOLDER" : "请输入错误代码",
+    "PROPERTY.EVENTLISTENERS.MESSAGENAME" : "消息名称",
+    "PROPERTY.EVENTLISTENERS.MESSAGENAME.PLACEHOLDER" : "请输入消息名称",
+    "PROPERTY.EVENTLISTENERS.SIGNALNAME" : "信号名称",
+    "PROPERTY.EVENTLISTENERS.SIGNALNAME.PLACEHOLDER" : "请输入信号名称",
+    "PROPERTY.EVENTLISTENERS.UNSELECTED" : "没有选择事件监听",
+
+    "PROPERTY.SIGNALDEFINITIONS.DISPLAY" : "{{length}}信号定义",
+    "PROPERTY.SIGNALDEFINITIONS.EMPTY" : "没有配置信号定义",
+    "PROPERTY.SIGNALDEFINITIONS.SCOPE-GLOBAL": "全局",
+    "PROPERTY.SIGNALDEFINITIONS.SCOPE-PROCESSINSTANCE": "流程初始化",
+    "PROPERTY.SIGNALDEFINITIONS.ID" : "编号",
+    "PROPERTY.SIGNALDEFINITIONS.NAME" : "名称",
+    "PROPERTY.SIGNALDEFINITIONS.SCOPE" : "Scope",
+
+    "PROPERTY.MESSAGEDEFINITIONS.DISPLAY" : "{{length}}消息定义",
+    "PROPERTY.MESSAGEDEFINITIONS.EMPTY" : "没有配置消息定义",
+    "PROPERTY.MESSAGEDEFINITIONS.ID" : "编号",
+    "PROPERTY.MESSAGEDEFINITIONS.NAME" : "名称",
+
+    "PROPERTY.SEQUENCEFLOW.ORDER.EMPTY" : "没有确定顺序流排序",
+    "PROPERTY.SEQUENCEFLOW.ORDER.NOT.EMPTY" : "顺序流排序",
+    "PROPERTY.SEQUENCEFLOW.ORDER.NO.OUTGOING.SEQUENCEFLOW.FOUND" : "没有输出顺序流.",
+    "PROPERTY.SEQUENCEFLOW.ORDER.DESCRIPTION" : "不能设置已经被使用的编号:",
+    "PROPERTY.SEQUENCEFLOW.ORDER.SEQUENCEFLOW.VALUE" : "顺序流{{targetType}} {{targetTitle}}",
+
+    "PROPERTY.SEQUENCEFLOW.CONDITION.TITLE" : "条件",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.TITLE" : "条件类型",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.VARIABLE" : "选择的变量",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.STATIC" : "静态值",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.STATIC" : "条件表达式",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.STATIC_PLACEHOLDER" : "输入表达式值",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.TYPE" : "变量类型",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-CONDITION" : "没有条件",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.FORM-FIELD" : "表单字段",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.FORM-OUTCOME" : "表单输出",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-FIELD" : "选择的字段",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-FIELDS-AVAILABLE" : "没有字段变量",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-FORM" : "选择表单",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-FORMS-AVAILABLE" : "没有表单变量",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-OPERATOR" : "选择操作",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.EQUALS" : "等于",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NOTEQUALS" : "不等于",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.LESSTHAN" : "小于",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.GREATERTHAN" : "大于",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-OUTCOME" : "选择输出",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-OUTCOMES-AVAILABLE" : "没有输出变量",
+    "PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY" : "没有条件",
+
+    "MODEL.SAVE.TITLE" : "保存模型",
+    "MODEL.NAME" : "名称",
+    "MODEL.DESCRIPTION" : "描述",
+    "MODEL.SAVE.NEWVERSION" : "保存为新版本? 这样你可以随时回到以前的版本",
+    "MODEL.SAVE.COMMENT" : "注释",
+    "MODEL.SAVE.SAVING" : "保存",
+    "MODEL.LASTMODIFIEDDATE" : "上次保存时间",
+    "MODEL.SAVE.ERROR": "未知错误:保存失败!",
+
+    "EVENT_TYPE.ACTIVITY.COMPENSATE.TOOLTIP": "一个活动被另外一个活动替代执行",
+    "EVENT_TYPE.ACTIVITY.COMPLETED.TOOLTIP": "一个活动被成功的执行",
+    "EVENT_TYPE.ACTIVITY.ERROR.RECEIVED.TOOLTIP": "在收到活动错误之前,活动已收到错误事件",
+    "EVENT_TYPE.MEMBERSHIP.CREATED.TOOLTIP": "一个唯一的成员被创建",
+    "EVENT_TYPE.MEMBERSHIP.DELETED.TOOLTIP": "一个唯一的成员被删除",
+    "EVENT_TYPE.MEMBERSHIPS.DELETED.TOOLTIP": "所有成员都被删除.可能是由于没有事件被分配",
+    "EVENT_TYPE.TASK.ASSIGNED.TOOLTIP": "在ENTITY_UPDATED事件抛出时,任务已经被分配",
+    "EVENT_TYPE.TASK.COMPLETED.TOOLTIP": "在任务实体删除前任务已经被完成",
+    "EVENT_TYPE.UNCAUGHT.BPMNERROR.TOOLTIP": "一个BPMN被抛出,但没有捕获",
+    "EVENT_TYPE.VARIABLE.CREATED.TOOLTIP": "一个变量被创建",
+    "EVENT_TYPE.VARIABLE.DELETED.TOOLTIP": "一个变量被删除",
+    "EVENT_TYPE.VARIABLE.UPDATED.TOOLTIP": "一个变量被更新"
+}

+ 0 - 0
src/main/webapp/fonts/glyphicons-halflings-regular.eot


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio