提交 2f391f52 编写于 作者: sq3536's avatar sq3536

Merge remote-tracking branch 'origin/master'

......@@ -156,7 +156,7 @@
<dependency>
<groupId>net.ibizsys.model</groupId>
<artifactId>ibiz-model</artifactId>
<version>0.3.0</version>
<version>0.2.23</version>
<exclusions>
<exclusion>
<artifactId>slf4j-simple</artifactId>
......
......@@ -69,8 +69,13 @@ public class AppEntityModel extends BaseModel{
}
// 初始化界面行为
try {
keyField = getAppDataEntity().getPSDataEntity().getKeyPSDEField().getCodeName();
majorField = getAppDataEntity().getPSDataEntity().getMajorPSDEField().getCodeName();
}catch (Exception e){
}
if(getAppDataEntity().getAllPSAppDEUIActions() != null){
getAppDataEntity().getAllPSAppDEUIActions().forEach(appDEUIAction ->{
JSONObject actionJson = new JSONObject();
......
......@@ -113,7 +113,7 @@ public class ModelStorage {
CliOption opt = newCliOption(TemplateFileType.apiDto)
.setCliSubType(dto.getType())
.baseData(dto, dto.getCodeName())
.set("apiDtos", dto.getCodeName()).set("apis", dto.getApi().getCodeName().toLowerCase());
.set("apiDtos", dto.getCodeName()).set("apis", dto.getApi().getCodeName().toLowerCase()).set("modules",item.getEntity().getModule());
rt.addOption(opt);
});
});
......@@ -146,6 +146,14 @@ public class ModelStorage {
getSystemModel().getWorkflows().forEach(item -> {
CliOption opt = newCliOption(TemplateFileType.workflow)
.baseData(item, item.getCodeName().toString())
.set("wf",item.getWFVer().getWFCodeName());
rt.addOption(opt);
});
}
else if (type.equals(TemplateFileType.sysUtil)) {
getSystemModel().getSysUtils().forEach(item -> {
CliOption opt = newCliOption(TemplateFileType.sysUtil)
.baseData(item, item.getCodeName().toString());
rt.addOption(opt);
});
......
......@@ -9,9 +9,11 @@ import lombok.experimental.Accessors;
import net.ibizsys.model.app.view.IPSAppView;
import net.ibizsys.model.control.IPSControl;
import net.ibizsys.model.control.expbar.IPSExpBar;
import net.ibizsys.model.control.expbar.IPSTabExpPanel;
import net.ibizsys.model.control.toolbar.IPSDETBUIActionItem;
import net.ibizsys.model.control.toolbar.IPSDEToolbar;
import net.ibizsys.model.view.IPSUIAction;
import net.ibizsys.model.control.dashboard.IPSDashboard;
import java.util.*;
......@@ -48,9 +50,21 @@ public class PageModel extends BaseModel{
if(!this.ctrlsMap.containsKey(ctrl.getId())){
this.ctrlsMap.put(ctrl.getId(),ctrl);
}
String ctrlType = ctrl.getControl().getControlType();
// 树导航栏获取数据部件
if ("TREEEXPBAR".equals(ctrl.getControl().getControlType())) {
List<IPSControl> controls = ((IPSExpBar)item).getPSControls();
if ("TREEEXPBAR".equals(ctrlType) || "DASHBOARD".equals(ctrlType) || "TABEXPPANEL".equals(ctrlType)) {
List<IPSControl> controls = new ArrayList<>();
switch (ctrlType) {
case "TREEEXPBAR":
controls = ((IPSExpBar)item).getPSControls();
break;
case "DASHBOARD":
controls = ((IPSDashboard)item).getPSControls();
break;
case "TABEXPPANEL":
controls = ((IPSTabExpPanel)item).getPSControls();
break;
}
if (controls.size() > 0) {
for (IPSControl control : controls) {
CtrlModel ctrlModel = new CtrlModel(appModel, control);
......
package cn.ibizlab.codegen.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import net.ibizsys.model.res.IPSSysUtil;
import net.ibizsys.model.service.IPSSubSysServiceAPI;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
public class SysUtilModel extends BaseModel {
public SysUtilModel(IPSSysUtil ipsSysUtil) {
this.opt = ipsSysUtil;
this.setCodeName(ipsSysUtil.getCodeName());
this.setName(ipsSysUtil.getName());
}
}
......@@ -142,6 +142,26 @@ public class SystemModel extends BaseModel {
return getWorkflowsMap().values();
}
private Map<String, SysUtilModel> sysUtilModelMap;
public synchronized Map<String, SysUtilModel> getSysUtilModelMaps() {
if (sysUtilModelMap == null) {
try {
sysUtilModelMap = new LinkedHashMap<>();
getSystem().getAllPSSysUtils().forEach(iPSSysUtil -> {
sysUtilModelMap.put(iPSSysUtil.getCodeName(), new SysUtilModel(iPSSysUtil));
});
} catch (Exception e) {
}
}
return sysUtilModelMap;
}
public Collection<SysUtilModel> getSysUtils() {
return getSysUtilModelMaps().values();
}
public boolean isHasMsgTemplate() {
return !ObjectUtils.isEmpty(getSystem().getAllPSSysMsgTempls());
}
......
......@@ -10,6 +10,7 @@ import net.ibizsys.model.dataentity.action.IPSDEAction;
import net.ibizsys.model.dataentity.action.IPSDELogicAction;
import net.ibizsys.model.dataentity.action.IPSDEScriptAction;
import net.ibizsys.model.wf.*;
import org.springframework.util.CollectionUtils;
import org.springframework.util.DigestUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
......@@ -515,5 +516,23 @@ public class WorkflowModel extends BaseModel{
return fieldCond;
}
public List<IPSWFLink> getLinks() {
List<IPSWFLink> links = new ArrayList<>();
IPSWFProcess startProcess = getWFVer().getStartPSWFProcess();
getProcessLink(startProcess, links);
return links;
}
public void getProcessLink(IPSWFProcess process, List<IPSWFLink> links) {
List<IPSWFLink> processLinks = process.getPSWFLinks();
if(CollectionUtils.isEmpty(processLinks))
return ;
for (IPSWFLink link : processLinks) {
if(links.stream().anyMatch(l ->l.getId().equals(link.getId())))
continue;
links.add(link);
getProcessLink(link.getToPSWFProcess(), links);
}
}
}
......@@ -10,6 +10,7 @@ public enum TemplateFileType {
entity(Constants.ENTITIES),
module(Constants.MODULES),
workflow(Constants.WORKFLOWS),
sysUtil(Constants.SYSUTILS),
subService(Constants.SUB_SERVICEAPIS),
subEntity(Constants.SUB_ENTITIES),
api(Constants.APIS),
......@@ -52,6 +53,7 @@ public enum TemplateFileType {
public static final String APPS = "apps";
public static final String ENTITIES = "entities";
public static final String WORKFLOWS = "workflows";
public static final String SYSUTILS = "syUtils";
public static final String SUB_SERVICEAPIS = "subServiceApis";
public static final String SUB_ENTITIES = "subEntities";
public static final String API_ENTITIES = "apiEntities";
......
*volumes
*target
.settings
*node_modules
*bin
*.project
*.classpath
*.factorypath
.history
.vscode
.idea
**.iml
*.jar
*.log
.DS_Store
**.ibizlab-generator-ignore
**.DS_Store
**@macro/**
\ No newline at end of file
{{#eq _item.wFLinkType 'IAACTION'}}
#### {{_item.name}}{{#if (and (_item.parentModel) (or (and (eq _item.modelType "PSSYSTEM") (neq _item.parentModel.modelType "PSSYSTEM" )) (neq _item.parentModel.modelType _item.modelType) ) )}}@{{_item.parentModel.name}}{{/if}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if (and _item.name (neq _item.name ""))}}
|名称&nbsp;(name)|{{_item.name}}|&nbsp;|
{{/if}}
{{#if (and _item.logicName (neq _item.logicName ""))}}
|逻辑名称&nbsp;(logicName)|{{_item.logicName}}|&nbsp;|
{{/if}}
{{#if (and _item.userTag (neq _item.userTag ""))}}
|用户标记&nbsp;(userTag)|{{_item.userTag}}|&nbsp;|
{{/if}}
{{/eq}}
{{#each items as |_item|}}
{{> @macro/net.ibizsys.model.wf.IPSWFInteractiveLink.item.md.hbs _item=_item}}
{{/each}}
{{#each items as |_item|}}
{{> @macro/net.ibizsys.model.wf.IPSWFStartProcess.item.md.hbs _item=_item}}
{{/each}}
{{#eq _item.wFLinkType 'ROUTE'}}
#### {{_item.name}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if _item.name}}
|名称&nbsp;(name)|{{_item.name}}|&nbsp;|
{{/if}}
{{#if _item.logicName}}
|逻辑名称&nbsp;(logicName)|{{_item.logicName}}|&nbsp;|
{{/if}}
{{#if _item.userTag}}
|用户标记&nbsp;(userTag)|{{_item.userTag}}|&nbsp;|
{{/if}}
{{#if _item.userTag2}}
|用户标记2&nbsp;(userTag2)|{{_item.userTag2}}|&nbsp;|
{{/if}}
{{#if _item.userTag3}}
|用户标记3&nbsp;(userTag3)|{{_item.userTag3}}|&nbsp;|
{{/if}}
{{#if _item.userTag4}}
|用户标记4&nbsp;(userTag4)|{{_item.userTag4}}|&nbsp;|
{{/if}}
{{#if _item.userCat}}
|用户模型分类&nbsp;(userCat)|{{_item.userCat}}|&nbsp;|
{{/if}}
{{#if _item.autoModel}}
|自动产生模型&nbsp;(autoModel)|{{_item.autoModel}}|&nbsp;|
{{/if}}
{{#if _item.customCond}}
|自定义条件&nbsp;(customCond)|{{_item.customCond}}|&nbsp;|
{{/if}}
{{#if _item.formCodeName}}
|操作表单标记&nbsp;(formCodeName)|{{_item.formCodeName}}|&nbsp;|
{{/if}}
{{#if _item.fromPSWFProcess}}
|源流程处理&nbsp;(fromPSWFProcess)|{{_item.fromPSWFProcess.name}}|&nbsp;|
{{/if}}
{{#if _item.lNPSLanguageRes}}
|逻辑名称语言资源&nbsp;(lNPSLanguageRes)|{{_item.lNPSLanguageRes.name}}|&nbsp;|
{{/if}}
{{#if _item.mobFormCodeName}}
|移动端操作表单标记&nbsp;(mobFormCodeName)|{{_item.mobFormCodeName}}|&nbsp;|
{{/if}}
{{#if _item.mobViewCodeName}}
|移动端操作视图标记&nbsp;(mobViewCodeName)|{{_item.mobViewCodeName}}|&nbsp;|
{{/if}}
{{#if _item.nextCondition}}
|下一步条件&nbsp;(nextCondition)|{{_item.nextCondition}}|&nbsp;|
{{/if}}
{{#if _item.pSDynaModel}}
|动态模型对象&nbsp;(pSDynaModel)|{{_item.pSDynaModel.name}}|&nbsp;|
{{/if}}
{{#if _item.toPSWFProcess}}
|目标流程处理&nbsp;(toPSWFProcess)|{{_item.toPSWFProcess.name}}|&nbsp;|
{{/if}}
{{#if _item.userData}}
|连接数据&nbsp;(userData)|{{_item.userData}}|&nbsp;|
{{/if}}
{{#if _item.userData2}}
|连接数据2&nbsp;(userData2)|{{_item.userData2}}|&nbsp;|
{{/if}}
{{#if _item.viewCodeName}}
|操作视图标记&nbsp;(viewCodeName)|{{_item.viewCodeName}}|&nbsp;|
{{/if}}
{{#if _item.wFLinkType}}
|处理连接处理&nbsp;(wFLinkType)|{{item.wFLinkType}}&nbsp;({{_item.wFLinkType}})|&nbsp;|
{{/if}}
{{/eq}}
{{#eq _item.wFProcessType "START"}}
#### {{_item.name}}{{#if (and _item.parentModel (or (and (eq _item.modelType "PSSYSTEM") (neq _item.parentModel.modelType "PSSYSTEM")) (neq _item.parentModel.modelType _item.modelType)))}}@{{_item.parentModel.name}}{{/if}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if _item.name}}
|名称&nbsp;(name)|{{_item.name}}|&nbsp;|
{{/if}}
{{#if _item.codeName}}
|代码标识&nbsp;(codeName)|{{_item.codeName}}|&nbsp;|
{{/if}}
{{#if _item.logicName}}
|逻辑名称&nbsp;(logicName)|{{_item.logicName}}|&nbsp;|
{{/if}}
{{#if _item.userTag}}
|用户标记&nbsp;(userTag)|{{_item.userTag}}|&nbsp;|
{{/if}}
{{#if _item.userTag2}}
{{/if}}
{{#if _item.userTag3}}
|用户标记3&nbsp;(userTag3)|{{_item.userTag3}}|&nbsp;|
{{/if}}
{{#if _item.userTag4}}
{{/if}}
{{#if _item.userCat}}
|用户模型分类&nbsp;(userCat)|{{_item.userCat}}|&nbsp;|
{{/if}}
{{#if _item.autoModel}}
|自动产生模型&nbsp;(autoModel)|{{_item.autoModel}}|&nbsp;|
{{/if}}
{{#if _item.formCodeName}}
|操作表单标记&nbsp;(formCodeName)|{{_item.formCodeName}}|&nbsp;|
{{/if}}
{{#if _item.height}}
|高度&nbsp;(height)|{{_item.height}}|&nbsp;|
{{/if}}
{{#if _item.leftPos}}
|左侧位置&nbsp;(leftPos)|{{_item.leftPos}}|&nbsp;|
{{/if}}
{{#if _item.mobFormCodeName}}
|移动端操作表单标记&nbsp;(mobFormCodeName)|{{_item.mobFormCodeName}}|&nbsp;|
{{/if}}
{{#if _item.namePSLanguageRes}}
|名称语言资源&nbsp;(namePSLanguageRes)|{{_item.namePSLanguageRes.name}}|&nbsp;|
{{/if}}
{{#if _item.pSDynaModel}}
|动态模型对象&nbsp;(pSDynaModel)|{{_item.pSDynaModel.name}}|&nbsp;|
{{/if}}
{{#if _item.pSSysMsgTempl}}
|通知消息模板&nbsp;(pSSysMsgTempl)|{{_item.pSSysMsgTempl.name}}|&nbsp;|
{{/if}}
{{#if _item.pSWFWorkTime}}
|流程工作时间&nbsp;(pSWFWorkTime)|{{_item.pSWFWorkTime.name}}|&nbsp;|
{{/if}}
{{#if _item.timeout}}
|处理超时时长&nbsp;(timeout)|{{_item.timeout}}|&nbsp;|
{{/if}}
{{#if _item.timeoutField}}
|动态超时时长存放属性&nbsp;(timeoutField)|{{_item.timeoutField}}|&nbsp;|
{{/if}}
{{#if _item.timeoutType}}
|处理超时单位&nbsp;(timeoutType)|srfcodelist('WFTimeoutType', _item.timeoutType)&nbsp;({{_item.timeoutType}})|&nbsp;|
{{/if}}
{{#if _item.topPos}}
|上方位置&nbsp;(topPos)|{{_item.topPos}}|&nbsp;|
{{/if}}
{{#if _item.userData}}
|处理数据&nbsp;(userData)|{{_item.userData}}|&nbsp;|
{{/if}}
{{#if _item.userData2}}
|处理数据2&nbsp;(userData2)|{{_item.userData2}}|&nbsp;|
{{/if}}
{{#if _item.wFProcessType}}
|流程处理类型&nbsp;(wFProcessType)|srfcodelist('AllWFProcessType', _item.wFProcessType)&nbsp;({{_item.wFProcessType}})|&nbsp;|
{{/if}}
{{#if _item.wFStepValue}}
|流程步骤值&nbsp;(wFStepValue)|{{_item.wFStepValue}}|&nbsp;|
{{/if}}
{{#if _item.width}}
|宽度&nbsp;(width)|{{_item.width}}|&nbsp;|
{{/if}}
{{#if _item.asynchronousProcess}}
|异步处理&nbsp;(asynchronousProcess)|{{_item.asynchronousProcess}}|&nbsp;|
{{/if}}
{{#if _item.enableTimeout}}
|启用处理超时&nbsp;(enableTimeout)|{{_item.enableTimeout}}|&nbsp;|
{{/if}}
{{#if _item.startProcess}}
|开始处理&nbsp;(startProcess)|{{_item.startProcess}}|&nbsp;|
{{/if}}
*来源:getPSWFProcessParams*
{{#if _item.pSWFProcessParams}}
##### 处理参数集合
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
{{/if}}
{{/eq}}
<#comment>net.ibizsys.model.wf.IPSWFCallOrgActivityProcess</#comment>
<#if _item.getWFProcessType()=='CALLORGACTIVITY'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTargetPSWF()??>
|调用目标流程&nbsp;(getTargetPSWF)|<#if _item.getTargetPSWF().getRTMOSFilePath()?? &&_item.getTargetPSWF().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getTargetPSWF().getRTMOSFilePath()}">${_item.getTargetPSWF().getName()}</a><#else>${_item.getTargetPSWF().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
*来源:getPSWFProcessRoles*
<#if _item.getPSWFProcessRoles()?? && srflist(_item.getPSWFProcessRoles())?size gt 0>
##### 组织角色集合<#assign _items2 = _item.getPSWFProcessRoles()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessRole.list.md</#ibizinclude>
</#if>
</#if>
<#if _item.getWFProcessType()=='PROCESS'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getDEActionName()?? && _item.getDEActionName()?length gt 0>
|实体行为标识&nbsp;(dEActionName)|${_item.getDEActionName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDEAction()??>
|实体行为&nbsp;(getPSDEAction)|<#if _item.getPSDEAction().getRTMOSFilePath()?? &&_item.getPSDEAction().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDEAction().getRTMOSFilePath()}">${_item.getPSDEAction().getName()}</a><#else>${_item.getPSDEAction().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDEWF()??>
|实体工作流&nbsp;(getPSDEWF)|<#if _item.getPSDEWF().getRTMOSFilePath()?? &&_item.getPSDEWF().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDEWF().getRTMOSFilePath()}">${_item.getPSDEWF().getName()}</a><#else>${_item.getPSDEWF().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDataEntity()??>
|实体对象&nbsp;(getPSDataEntity)|<#if _item.getPSDataEntity().getRTMOSFilePath()?? &&_item.getPSDataEntity().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDataEntity().getRTMOSFilePath()}">${_item.getPSDataEntity().getName()}</a><#else>${_item.getPSDataEntity().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFEmbedWFProcess</#comment>
<#if _item.getWFProcessType()=='EMBED'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
*来源:getPSWFProcessSubWFs*
<#if _item.getPSWFProcessSubWFs()?? && srflist(_item.getPSWFProcessSubWFs())?size gt 0>
##### 嵌套流程集合<#assign _items2 = _item.getPSWFProcessSubWFs()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessSubWF.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFEndProcess</#comment>
<#if _item.getWFProcessType()=='END'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getExitStateValue()?? && _item.getExitStateValue()?length gt 0>
|结束状态值&nbsp;(exitStateValue)|${_item.getExitStateValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
<#if _item.isTerminalProcess()??>
|终止处理&nbsp;(terminalProcess)|${_item.isTerminalProcess()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFExclusiveGatewayProcess</#comment>
<#if _item.getWFProcessType()=='EXCLUSIVEGATEWAY'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFInclusiveGatewayProcess</#comment>
<#if _item.getWFProcessType()=='INCLUSIVEGATEWAY'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFParallelGatewayProcess</#comment>
<#if _item.getWFProcessType()=='PARALLELGATEWAY'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFParallelSubWFProcess</#comment>
<#if _item.getWFProcessType()=='PARALLEL'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
*来源:getPSWFProcessSubWFs*
<#if _item.getPSWFProcessSubWFs()?? && srflist(_item.getPSWFProcessSubWFs())?size gt 0>
##### 嵌套流程集合<#assign _items2 = _item.getPSWFProcessSubWFs()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessSubWF.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFProcess</#comment>
<#if _item.getWFProcessType()!='END' && _item.getWFProcessType()!='START'&& _item.getWFProcessType()!='PROCESS'&& _item.getWFProcessType()!='CALLORGACTIVITY'&& _item.getWFProcessType()!='EMBED'&& _item.getWFProcessType()!='EXCLUSIVEGATEWAY'&& _item.getWFProcessType()!='INCLUSIVEGATEWAY'&& _item.getWFProcessType()!='INTERACTIVE'&& _item.getWFProcessType()!='PARALLELGATEWAY'&& _item.getWFProcessType()!='PARALLEL'&& _item.getWFProcessType()!='TIMEREVENT'&& _item.getWFProcessType()!='END'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFProcessParam</#comment>
###### ${_item2.getName()}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item2.getName()?? && _item2.getName()?length gt 0>
|名称&nbsp;(name)|${_item2.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getUserTag()?? && _item2.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item2.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getUserTag2()?? && _item2.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item2.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getUserTag3()?? && _item2.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item2.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getUserTag4()?? && _item2.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item2.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getUserCat()?? && _item2.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item2.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.isAutoModel() && _item2.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item2.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item2.getDstField()?? && _item2.getDstField()?length gt 0>
|目标属性&nbsp;(dstField)|${_item2.getDstField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item2.getPSDynaModel().getRTMOSFilePath()?? &&_item2.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item2.getPSDynaModel().getRTMOSFilePath()}">${_item2.getPSDynaModel().getName()}</a><#else>${_item2.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item2.getPSWFProcess()??>
|流程处理&nbsp;(getPSWFProcess)|<#if _item2.getPSWFProcess().getRTMOSFilePath()?? &&_item2.getPSWFProcess().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item2.getPSWFProcess().getRTMOSFilePath()}">${_item2.getPSWFProcess().getName()}</a><#else>${_item2.getPSWFProcess().getName()}</#if>|&nbsp;|
</#if>
<#if _item2.getSrcValue()?? && _item2.getSrcValue()?length gt 0>
|源值&nbsp;(srcValue)|${_item2.getSrcValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getSrcValueType()?? && _item2.getSrcValueType()?length gt 0>
|源值类型&nbsp;(srcValueType)|${_item2.getSrcValueType()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getUserData()?? && _item2.getUserData()?length gt 0>
|处理角色数据&nbsp;(userData)|${_item2.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item2.getUserData2()?? && _item2.getUserData2()?length gt 0>
|处理角色数据2&nbsp;(userData2)|${_item2.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
{{#eq _item.wFLinkType 'IAACTION'}}
#### {{_item.name}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if _item.name}}
|名称&nbsp;(name)|{{_item.name}}|&nbsp;|
{{/if}}
{{#if _item.logicName}}
|逻辑名称&nbsp;(logicName)|{{_item.logicName}}|&nbsp;|
{{/if}}
{{#if _item.userTag}}
|用户标记&nbsp;(userTag)|{{_item.userTag}}|&nbsp;|
{{/if}}
{{#if _item.userTag2}}
|用户标记2&nbsp;(userTag2)|{{_item.userTag2}}|&nbsp;|
{{/if}}
{{#if _item.userTag3}}
|用户标记3&nbsp;(userTag3)|{{_item.userTag3}}|&nbsp;|
{{/if}}
{{#if _item.userTag4}}
|用户标记4&nbsp;(userTag4)|{{_item.userTag4}}|&nbsp;|
{{/if}}
{{#if _item.userCat}}
|用户模型分类&nbsp;(userCat)|{{_item.userCat}}|&nbsp;|
{{/if}}
{{#if _item.autoModel}}
|自动产生模型&nbsp;(autoModel)|{{_item.autoModel}}|&nbsp;|
{{/if}}
{{#if _item.customCond}}
|自定义条件&nbsp;(customCond)|{{_item.customCond}}|&nbsp;|
{{/if}}
{{#if _item.formCodeName}}
|操作表单标记&nbsp;(formCodeName)|{{_item.formCodeName}}|&nbsp;|
{{/if}}
{{#if _item.fromPSWFProcess}}
|源流程处理&nbsp;(fromPSWFProcess)|{{_item.fromPSWFProcess.name}}|&nbsp;|
{{/if}}
{{#if _item.lNPSLanguageRes}}
|逻辑名称语言资源&nbsp;(lNPSLanguageRes)|{{_item.lNPSLanguageRes.name}}|&nbsp;|
{{/if}}
{{#if _item.mobFormCodeName}}
|移动端操作表单标记&nbsp;(mobFormCodeName)|{{_item.mobFormCodeName}}|&nbsp;|
{{/if}}
{{#if _item.mobViewCodeName}}
|移动端操作视图标记&nbsp;(mobViewCodeName)|{{_item.mobViewCodeName}}|&nbsp;|
{{/if}}
{{#if _item.nextCondition}}
|下一步条件&nbsp;(nextCondition)|{{_item.nextCondition}}|&nbsp;|
{{/if}}
{{#if _item.pSDynaModel}}
|动态模型对象&nbsp;(pSDynaModel)|{{_item.pSDynaModel.name}}|&nbsp;|
{{/if}}
{{#if _item.toPSWFProcess}}
|目标流程处理&nbsp;(toPSWFProcess)|{{_item.toPSWFProcess.name}}|&nbsp;|
{{/if}}
{{#if _item.userData}}
|连接数据&nbsp;(userData)|{{_item.userData}}|&nbsp;|
{{/if}}
{{#if _item.userData2}}
|连接数据2&nbsp;(userData2)|{{_item.userData2}}|&nbsp;|
{{/if}}
{{#if _item.viewCodeName}}
|操作视图标记&nbsp;(viewCodeName)|{{_item.viewCodeName}}|&nbsp;|
{{/if}}
{{#if _item.wFLinkType}}
|处理连接处理&nbsp;(wFLinkType)|{{item.wFLinkType}}&nbsp;({{_item.wFLinkType}})|&nbsp;|
{{/if}}
{{/eq}}
<#comment>net.ibizsys.model.wf.IPSWFStartProcess</#comment>
<#if _item.getWFProcessType()=='START'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getFormCodeName()?? && _item.getFormCodeName()?length gt 0>
|操作表单标记&nbsp;(formCodeName)|${_item.getFormCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getMobFormCodeName()?? && _item.getMobFormCodeName()?length gt 0>
|移动端操作表单标记&nbsp;(mobFormCodeName)|${_item.getMobFormCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
<#if _item.isStartProcess()??>
|开始处理&nbsp;(startProcess)|${_item.isStartProcess()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFTimerEventProcess</#comment>
<#if _item.getWFProcessType()=='TIMEREVENT'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFStartProcess</#comment>
<#if _item.getWFProcessType()=='START'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getFormCodeName()?? && _item.getFormCodeName()?length gt 0>
|操作表单标记&nbsp;(formCodeName)|${_item.getFormCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getMobFormCodeName()?? && _item.getMobFormCodeName()?length gt 0>
|移动端操作表单标记&nbsp;(mobFormCodeName)|${_item.getMobFormCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
<#if _item.isStartProcess()??>
|开始处理&nbsp;(startProcess)|${_item.isStartProcess()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
<#comment>net.ibizsys.model.wf.IPSWFStartProcess</#comment>
<#if _item.getWFProcessType()=='START'>
#### ${_item.getName()}<#if _item.getParentModel()?? && ((item.getModelType() == 'PSSYSTEM' && _item.getParentModel().getModelType()!='PSSYSTEM')||(_item.getParentModel().getModelType() != item.getModelType()))>@${_item.getParentModel().name}</#if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<#if _item.getName()?? && _item.getName()?length gt 0>
|名称&nbsp;(name)|${_item.getName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getCodeName()?? && _item.getCodeName()?length gt 0>
|代码标识&nbsp;(codeName)|${_item.getCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getLogicName()?? && _item.getLogicName()?length gt 0>
|逻辑名称&nbsp;(logicName)|${_item.getLogicName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag()?? && _item.getUserTag()?length gt 0>
|用户标记&nbsp;(userTag)|${_item.getUserTag()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag2()?? && _item.getUserTag2()?length gt 0>
|用户标记2&nbsp;(userTag2)|${_item.getUserTag2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag3()?? && _item.getUserTag3()?length gt 0>
|用户标记3&nbsp;(userTag3)|${_item.getUserTag3()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserTag4()?? && _item.getUserTag4()?length gt 0>
|用户标记4&nbsp;(userTag4)|${_item.getUserTag4()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserCat()?? && _item.getUserCat()?length gt 0>
|用户模型分类&nbsp;(userCat)|${_item.getUserCat()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.isAutoModel() && _item.isAutoModel()??>
|自动产生模型&nbsp;(autoModel)|${_item.isAutoModel()?c}|&nbsp;|
</#if>
<#if _item.getFormCodeName()?? && _item.getFormCodeName()?length gt 0>
|操作表单标记&nbsp;(formCodeName)|${_item.getFormCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getHeight()??>
|高度&nbsp;(height)|${_item.getHeight()?c}|&nbsp;|
</#if>
<#if _item.getLeftPos()??>
|左侧位置&nbsp;(leftPos)|${_item.getLeftPos()?c}|&nbsp;|
</#if>
<#if _item.getMobFormCodeName()?? && _item.getMobFormCodeName()?length gt 0>
|移动端操作表单标记&nbsp;(mobFormCodeName)|${_item.getMobFormCodeName()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getNamePSLanguageRes()??>
|名称语言资源&nbsp;(getNamePSLanguageRes)|<#if _item.getNamePSLanguageRes().getRTMOSFilePath()?? &&_item.getNamePSLanguageRes().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}">${_item.getNamePSLanguageRes().getName()}</a><#else>${_item.getNamePSLanguageRes().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSDynaModel()??>
|动态模型对象&nbsp;(getPSDynaModel)|<#if _item.getPSDynaModel().getRTMOSFilePath()?? &&_item.getPSDynaModel().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}">${_item.getPSDynaModel().getName()}</a><#else>${_item.getPSDynaModel().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSSysMsgTempl()??>
|通知消息模板&nbsp;(getPSSysMsgTempl)|<#if _item.getPSSysMsgTempl().getRTMOSFilePath()?? &&_item.getPSSysMsgTempl().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}">${_item.getPSSysMsgTempl().getName()}</a><#else>${_item.getPSSysMsgTempl().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getPSWFWorkTime()??>
|流程工作时间&nbsp;(getPSWFWorkTime)|<#if _item.getPSWFWorkTime().getRTMOSFilePath()?? &&_item.getPSWFWorkTime().getRTMOSFilePath()?length gt 0><a href="${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}">${_item.getPSWFWorkTime().getName()}</a><#else>${_item.getPSWFWorkTime().getName()}</#if>|&nbsp;|
</#if>
<#if _item.getTimeout()??>
|处理超时时长&nbsp;(timeout)|${_item.getTimeout()?c}|&nbsp;|
</#if>
<#if _item.getTimeoutField()?? && _item.getTimeoutField()?length gt 0>
|动态超时时长存放属性&nbsp;(timeoutField)|${_item.getTimeoutField()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getTimeoutType()?? && _item.getTimeoutType()?length gt 0>
|处理超时单位&nbsp;(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}&nbsp;(${_item.getTimeoutType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getTopPos()??>
|上方位置&nbsp;(topPos)|${_item.getTopPos()?c}|&nbsp;|
</#if>
<#if _item.getUserData()?? && _item.getUserData()?length gt 0>
|处理数据&nbsp;(userData)|${_item.getUserData()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getUserData2()?? && _item.getUserData2()?length gt 0>
|处理数据2&nbsp;(userData2)|${_item.getUserData2()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWFProcessType()?? && _item.getWFProcessType()?length gt 0>
|流程处理类型&nbsp;(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}&nbsp;(${_item.getWFProcessType()?replace('
','<BR>')?replace('
','<BR>')})|&nbsp;|
</#if>
<#if _item.getWFStepValue()?? && _item.getWFStepValue()?length gt 0>
|流程步骤值&nbsp;(wFStepValue)|${_item.getWFStepValue()?replace('
','<BR>')?replace('
','<BR>')}|&nbsp;|
</#if>
<#if _item.getWidth()??>
|宽度&nbsp;(width)|${_item.getWidth()?c}|&nbsp;|
</#if>
<#if _item.isAsynchronousProcess()??>
|异步处理&nbsp;(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|&nbsp;|
</#if>
<#if _item.isEnableTimeout()??>
|启用处理超时&nbsp;(enableTimeout)|${_item.isEnableTimeout()?c}|&nbsp;|
</#if>
<#if _item.isStartProcess()??>
|开始处理&nbsp;(startProcess)|${_item.isStartProcess()?c}|&nbsp;|
</#if>
*来源:getPSWFProcessParams*
<#if _item.getPSWFProcessParams()?? && srflist(_item.getPSWFProcessParams())?size gt 0>
##### 处理参数集合<#assign _items2 = _item.getPSWFProcessParams()>
<#ibizinclude>../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md</#ibizinclude>
</#if>
</#if>
# {{system.logicName}}
## 基本
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
|名称&nbsp;(name)|{{system.name}}|&nbsp;|
|代码标识&nbsp;(codeName)|{{system.codeName}}|&nbsp;|
|逻辑名称&nbsp;(logicName)|{{system.logicName}}|&nbsp;|
## 工作流集合
|名称|版本|代码标识|说明|
|-------------------|:-------------------|:-------------------|:-------------------|
{{#each system.workflows}}
|<a href="#/{{wFCodeName}}/{{codeName}}">{{name}}</a>|{{wFVersion}}|{{codeName}}|&nbsp;|
{{/each}}
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{system.logicName}}</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
<link rel="stylesheet" href="//unpkg.com/@fortawesome/fontawesome-free/css/fontawesome.css"/>
<link rel="stylesheet" href="//unpkg.com/@fortawesome/fontawesome-free/css/brands.css"/>
<link rel="stylesheet" href="//unpkg.com/@fortawesome/fontawesome-free/css/regular.css"/>
<link rel="stylesheet" href="//unpkg.com/@fortawesome/fontawesome-free/css/solid.css"/>
<!-- Theme -->
<!-- //jhildenbiddle.github.io/docsify-themeable -->
<!-- Theme: Simple Dark -->
<!-- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple-dark.css"> -->
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@sujaykumarh/docsify-plugin-footer@1.x/dist/plugin.min.css">
<link rel="stylesheet" href="//unpkg.com/@markbattistella/docsify-charty@latest/dist/docsify-charty.min.css">
</head>
<style>
:root {
--content-max-width: 55em;
}
.content {
padding-top: 0px;
}
</style>
<body>
<div id="app"></div>
<script>
window.$docsify = {
// routerMode: 'history',
// crossOriginLinks: ['http://cdn.jsdelivr.net','http://172.16.100.202','http://demo.ibizlab.cn'],
loadNavbar: true,
loadNavbar: 'navbar.md',
// loadSidebar: true,
// loadSidebar: 'sidebar.md',
repo: '{{system.pSSVNInstRepo.gitPath}}',
auto2top: true,
themeable: {
readyTransition: true,
responsiveTables: true
},
plantuml: {
skin: 'classic',
renderSvgAsObject: true,
serverPath: "http://172.16.240.229:8080/svg/"
},
tabs: {
theme: "material",
sync: false,
},
copyCode: {
buttonText: '复制到剪贴板',
errorText: '错误',
successText: '已复制'
},
progress: {
position: "top",
color: "var(--theme-color,#42b983)",
height: "2px",
},
customPageFooter: {
showPoweredBy: false,
showCopyright: true,
copyright: '<div class="copyright"><span>XXXX </span> <span>Copyright @2021 ibizsys.cn</span> <span>X</span></div>',
useLocalStorage: false,
},
}
</script>
<!-- Docsify v4 -->
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
<!-- docsify-themeable (latest v0.x.x) -->
<!-- <script src="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script> -->
<script src="//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-java.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-sql.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-git.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-json.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-yaml.min.js"></script>
<!-- tabs -->
<script src="//cdn.jsdelivr.net/npm/docsify-tabs@1"></script>
<!-- copy code -->
<script src="//unpkg.com/docsify-copy-code@2"></script>
<!-- plantuml -->
<script src="//unpkg.com/docsify-plantuml/dist/docsify-plantuml.min.js"></script>
<!-- progress -->
<script src="//cdn.jsdelivr.net/npm/docsify-progress@latest/dist/progress.min.js"></script>
<!-- charty -->
<script src="//unpkg.com/@markbattistella/docsify-charty@latest/dist/docsify-charty.min.js"></script>
<!-- footer -->
<script src="//cdn.jsdelivr.net/npm/@sujaykumarh/docsify-plugin-footer@1.x/dist/plugin.min.js"></script>
<!-- glossary -->
<script src="//unpkg.com/docsify-glossary/dist/docsify-glossary.min.js"></script>
<!-- fontawesome -->
<script src="//unpkg.com/docsify-fontawesome/dist/docsify-fontawesome.min.js"></script>
<!-- example -->
<script src="//cdn.jsdelivr.net/npm/docsify-example-panels"></script>
</body>
</html>
\ No newline at end of file
- [iBiz MosDynamic](http://studio.ibizmodeling.cn/mosdynamictool/mos-dynamic-mgr/#/mosdynamicmgr/${sys.getPubSystemId()} "iBiz MosDynamic")
- [MeterSphere](http://172.16.240.229:8081)
\ No newline at end of file
# {{workflow.name}}
*对象:net.ibizsys.model.wf.IPSWFVersion
## 基本
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
|名称&nbsp;(name)|{{workflow.name}}|&nbsp;|
|版本&nbsp;(wFVersion)|{{workflow.wFVersion}}|&nbsp;|
|代码标识&nbsp;(codeName)|{{workflow.codeName}}|&nbsp;|
{{#if workflow.links}}
```plantuml
@startuml
!theme plain
hide footbox
{{#each workflow.links}}
{{#eq fromPSWFProcess.wFProcessType "START"}}(*){{/eq}}{{#neq fromPSWFProcess.wFProcessType "START"}}"{{fromPSWFProcess.name}}"{{/neq}} --> [{{#if logicName}}{{logicName}}{{/if}}{{#unless logicName}}{{name}}{{/unless}}]{{#eq toPSWFProcess.wFProcessType "END"}}(*){{/eq}}{{#neq toPSWFProcess.wFProcessType "END"}}"{{toPSWFProcess.name}}"{{/neq}}
{{/each}}
@enduml
```
{{/if}}
## 逻辑
### 流程处理集合
*来源:getPSWFProcesses*
{{#if workflow.pSWFProcesses}}
{{> @macro/net.ibizsys.model.wf.IPSWFProcess.list.md.hbs items=workflow.pSWFProcesses}}
{{else}}
*(无数据)*
{{/if}}
### 流程连接集合
*来源:getPSWFLinks*
{{#if workflow.pSWFLinks}}
{{> @macro/net.ibizsys.model.wf.IPSWFLink.list.md.hbs items=workflow.pSWFLinks}}
{{else}}
*(无数据)*
{{/if}}
## 用户扩展
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if workflow.userTag}}
|用户标记&nbsp;(userTag)|{{workflow.userTag}}|&nbsp;|
{{/if}}
{{#if workflow.userTag2}}
|用户标记2&nbsp;(userTag2)|{{workflow.userTag2}}|&nbsp;|
{{/if}}
{{#if workflow.userTag3}}
|用户标记3&nbsp;(userTag3)|{{workflow.userTag3}}|&nbsp;|
{{/if}}
{{#if workflow.userTag4}}
|用户标记4&nbsp;(userTag4)|{{workflow.userTag4}}|&nbsp;|
{{/if}}
{{#if workflow.userCat}}
|用户模型分类&nbsp;(userCat)|{{workflow.userCat}}|&nbsp;|
{{/if}}
## 其它
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if workflow.autoModel}}
|自动产生模型&nbsp;(autoModel)|{{workflow.autoModel}}|&nbsp;|
{{/if}}
{{#if workflow.dynaInstMode}}
|动态实例模式&nbsp;(dynaInstMode)|{{workflow.dynaInstMode}}|&nbsp;|
{{/if}}
{{#if workflow.dynaInstTag}}
|动态实例标记&nbsp;(dynaInstTag)|{{workflow.dynaInstTag}}|&nbsp;|
{{/if}}
{{#if workflow.dynaInstTag2}}
|动态实例标记2&nbsp;(dynaInstTag2)|{{workflow.dynaInstTag2}}|&nbsp;|
{{/if}}
{{#if workflow.pSDynaModel}}
|动态模型对象&nbsp;(getPSDynaModel)|{{workflow.pSDynaModel.name}}|&nbsp;|
{{/if}}
{{#if workflow.pSWorkflow}}
|工作流&nbsp;(getPSWorkflow)|{{workflow.pSWorkflow.name}}|&nbsp;|
{{/if}}
{{#if workflow.startPSWFProcess}}
|开始处理&nbsp;(getStartPSWFProcess)|{{workflow.startPSWFProcess.name}}|&nbsp;|
{{/if}}
{{#if workflow.wFCodeName}}
|工作流代码标识&nbsp;(wFCodeName)|{{workflow.wFCodeName}}|&nbsp;|
{{/if}}
{{#if workflow.wFMode}}
|流程模式&nbsp;(wFMode)|{{workflow.wFMode}}|&nbsp;|
{{/if}}
{{#if workflow.wFStepPSCodeList}}
|流程步骤代码表&nbsp;(getWFStepPSCodeList)|{{workflow.wFStepPSCodeList.name}}|&nbsp;|
{{/if}}
{{#if workflow.mobStartView}}
|有移动端流程启动视图&nbsp;(hasMobStartView)|{{workflow.mobStartView}}|&nbsp;|
{{/if}}
{{#if workflow.startView}}
|有流程启动视图&nbsp;(hasStartView)|{{workflow.startView}}|&nbsp;|
{{/if}}
{{#if workflow.valid}}
|是否启用&nbsp;(valid)|{{workflow.valid}}|&nbsp;|
{{/if}}
## 模型
```yaml
{srfjson2yaml(workflow.getModel().toString())}
```
\ No newline at end of file
{{#*inline "PORTLET"}}{{>@macro/front-end/widgets/dashboard-detail/portlet.hbs}}{{/inline}}
\ No newline at end of file
{{#eq ctrl.psLayout.layout "FLEX"}}
<div class="app-dashboard-layout-flex" style="{{#if ctrl.psLayout.dir}}flex-direction: {{ctrl.psLayout.dir}};{{/if}}{{#if ctrl.psLayout.align}}justify-content: {{ctrl.psLayout.align}};{{/if}}{{#if ctrl.psLayout.vAlign}}align-items: {{ctrl.psLayout.vAlign}};{{/if}}">
</div>
{{else}}
<a-row class="app-dashboard-layout-table">
{{#each ctrl.PSControls as | portlet | }}
<a-col
{{> @macro/front-end/widgets/common/layout-pos.hbs item=portlet.psLayoutPos}} >
{{#eq portlet.portletType 'CONTAINER'}}
{{#if portlet.PSControls}}
<div class="portlet-card" :bordered="false" dis-hover :padding="0">
{{else}}
<div class="portlet-card custom-card" :bordered="false" dis-hover :padding="10">
{{/if}}
{{#if (and portlet.showTitleBar portlet.title)}}
<div class="portlet-card-title">\{{portlet.title}}</div>
{{/if}}
</div>
{{/if}}
</div>
{{/eq}}
</a-col>
{{/each}}
</a-row>
{{/eq}}
\ No newline at end of file
......@@ -4,7 +4,54 @@
declare module 'vue' {
export interface GlobalComponents {
404: typeof import('./src/components/common/404.vue')['default']
AppAutoComplete: typeof import('./src/components/editors/app-auto-complete.vue')['default']
AppCheckbox: typeof import('./src/components/editors/app-checkbox.vue')['default']
AppCheckboxList: typeof import('./src/components/editors/app-checkbox-list.vue')['default']
AppCode: typeof import('./src/components/editors/app-code.vue')['default']
AppDataPicker: typeof import('./src/components/editors/app-data-picker.vue')['default']
AppDataPickerView: typeof import('./src/components/editors/app-data-picker-view.vue')['default']
AppDatePicker: typeof import('./src/components/editors/app-date-picker.vue')['default']
AppDefaultIndexViewLayout: typeof import('./src/components/layout/app-default-index-view-layout.vue')['default']
AppDrawer: typeof import('./src/components/render/app-drawer.vue')['default']
AppDropdownList: typeof import('./src/components/editors/app-dropdown-list.vue')['default']
AppEditViewLayout: typeof import('./src/components/layout/app-edit-view-layout.vue')['default']
AppFilterTree: typeof import('./src/components/render/app-filter-tree.vue')['default']
AppFormDruipart: typeof import('./src/components/render/app-form-druipart.vue')['default']
AppFormGroup: typeof import('./src/components/render/app-form-group.vue')['default']
AppFormItem: typeof import('./src/components/render/app-form-item.vue')['default']
AppGridViewLayout: typeof import('./src/components/layout/app-grid-view-layout.vue')['default']
AppIconText: typeof import('./src/components/render/app-icon-text.vue')['default']
AppIndexViewBaseLayout: typeof import('./src/components/layout/app-index-view-base-layout.vue')['default']
AppInput: typeof import('./src/components/editors/app-input.vue')['default']
AppInputIp: typeof import('./src/components/editors/app-input-ip.vue')['default']
AppListBox: typeof import('./src/components/editors/app-list-box.vue')['default']
AppLoading: typeof import('./src/components/render/app-loading.vue')['default']
AppMenuCenter: typeof import('./src/components/render/app-menu-center.vue')['default']
AppMenuItem: typeof import('./src/components/render/app-menu-item.vue')['default']
AppModal: typeof import('./src/components/render/app-modal.vue')['default']
AppMpickupViewLayout: typeof import('./src/components/layout/app-mpickup-view-layout.vue')['default']
AppPickupGridViewLayout: typeof import('./src/components/layout/app-pickup-grid-view-layout.vue')['default']
AppPickupViewLayout: typeof import('./src/components/layout/app-pickup-view-layout.vue')['default']
AppPopover: typeof import('./src/components/render/app-popover.vue')['default']
AppPortalViewLayout: typeof import('./src/components/layout/app-portal-view-layout.vue')['default']
AppQuickGroup: typeof import('./src/components/render/app-quick-group.vue')['default']
AppRadioGroup: typeof import('./src/components/editors/app-radio-group.vue')['default']
AppRating: typeof import('./src/components/editors/app-rating.vue')['default']
AppRaw: typeof import('./src/components/editors/app-raw.vue')['default']
AppRichText: typeof import('./src/components/editors/app-rich-text.vue')['default']
AppSlider: typeof import('./src/components/editors/app-slider.vue')['default']
AppSpan: typeof import('./src/components/editors/app-span.vue')['default']
AppSplit: typeof import('./src/components/common/app-split.vue')['default']
AppStepper: typeof import('./src/components/editors/app-stepper.vue')['default']
AppSwitch: typeof import('./src/components/editors/app-switch.vue')['default']
AppToolbar: typeof import('./src/components/render/app-toolbar.vue')['default']
AppTreeExpViewLayout: typeof import('./src/components/layout/app-tree-exp-view-layout.vue')['default']
AppTreeViewLayout: typeof import('./src/components/layout/app-tree-view-layout.vue')['default']
AppUpload: typeof import('./src/components/editors/app-upload.vue')['default']
AppUser: typeof import('./src/components/render/app-user.vue')['default']
AppViewBaseLayout: typeof import('./src/components/layout/app-view-base-layout.vue')['default']
Login: typeof import('./src/components/common/login.vue')['default']
}
}
......
import { SyncSeriesHook } from "qx-util";
import { Environment } from "@/environments/environment";
import router from "@/router";
import { OpenViewService } from "@/utils";
import { AppBase, IParam, ViewDetail, IApp, IOpenViewService, deepCopy, getSessionStorage, Http, AppUtil } from "@core";
import { AppBase, IParam, ViewDetail, IApp, IOpenViewService, deepCopy, Http, IAppAuthService, IAppNotificationService, IAppFuncService, IAppActionService } from "@core";
import { AppFuncConfig, AppViewConfig, AppEntityConfig } from './config';
import { DataServiceRegister, UIServiceRegister } from "./register";
import { AppActionService, AppAuthService, AppFuncService, AppNotificationService, OpenViewService } from "@/service";
export class App extends AppBase implements IApp {
......@@ -50,31 +50,14 @@ export class App extends AppBase implements IApp {
}
/**
* 初始化应用权限
* 初始化应用
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof App
*/
public async initAppAuth(params: IParam): Promise<any> {
let result = true;
if (Environment && Environment.SaaSMode) {
if (getSessionStorage('activeOrgData')) {
result = await AppUtil.getAppData(App.hooks, params);
} else {
result = await AppUtil.getOrgsByDcsystem(App.hooks);
if (result) {
result = await AppUtil.getAppData(App.hooks, params);
}
}
} else {
result = await AppUtil.getAppData(App.hooks, params);
}
if (!result) {
// 登录
}
// TODO
return true;
public async initApp(params: IParam): Promise<any> {
return await this.getAppAuthService().initAppAuth(params, App.hooks);
}
/**
......@@ -87,6 +70,16 @@ export class App extends AppBase implements IApp {
return AppFuncConfig;
}
/**
* 获取应用权限服务
*
* @return {*} {IAppAuthService}
* @memberof App
*/
public getAppAuthService(): IAppAuthService {
return AppAuthService.getInstance();
}
/**
* 获取打开视图服务
*
......@@ -97,6 +90,36 @@ export class App extends AppBase implements IApp {
return OpenViewService.getInstance();
}
/**
* 获取通知服务
*
* @return {*} {IAppNotificationService}
* @memberof App
*/
public getNotificationService(): IAppNotificationService {
return AppNotificationService.getInstance();
}
/**
* 获取应用功能服务
*
* @return {IAppFuncService}
* @memberof App
*/
public getAppFuncService(): IAppFuncService {
return AppFuncService.getInstance();
}
/**
* 获取界面行为服务
*
* @return {*} {IAppActionService}
* @memberof App
*/
public getAppActionService(): IAppActionService {
return AppActionService.getInstance();
}
/**
* 获取UI服务
*
......@@ -158,14 +181,4 @@ export class App extends AppBase implements IApp {
}
}
/**
* @description 登录
*
* @return {*} {Promise<IParam>}
* @memberof App
*/
handleLogin(): Promise<IParam> {
throw new Error("Method not implemented.");
}
}
\ No newline at end of file
......@@ -253,7 +253,7 @@ const onLanguageChange = (item: string) => {
:value="language"
v-for="(language,index) in languages"
:key="index"
>\{{language}}</a-select-option>
>{{language}}</a-select-option>
</a-select>
</div>
<div class="right-toolbar">
......
......@@ -45,9 +45,9 @@ const emit = defineEmits<EditorEmit>();
<template>
<div :class="['app-raw-item', 'app-raw', `app-raw-${name}`]">
<div class="raw-caption" v-if="caption">\{{ caption }}</div>
<div class="raw-caption" v-if="caption">{{ caption }}</div>
<div v-if="Object.is(contentType, 'RAW')">
\{{ value }}
{{ value }}
</div>
<div v-else-if="Object.is(contentType, 'HTML')" v-html="value" />
<div v-else-if="Object.is(contentType, 'IMAGE')">
......
......@@ -134,7 +134,7 @@ onBeforeMount(() => {
<template>
<div :class="['app-editor-container', 'app-span', `app-span-${name}`]">
<span v-format="textFormat">\{{text}}</span>
<span v-format="textFormat">{{text}}</span>
</div>
</template>
......
......@@ -134,11 +134,11 @@ const onChange = ($event: any) => {
@change="onChange">
<a-button v-if="Object.is(listType,'text')">
<upload-outlined></upload-outlined>
\{{tooltip}}
{{tooltip}}
</a-button>
<div v-else>
<plus-outlined />
<div class="ant-upload-text">\{{tooltip}}</div>
<div class="ant-upload-text">{{tooltip}}</div>
</div>
</a-upload>
</div>
......
<script setup lang="ts">
</script>
<template>
<AppViewBaseLayout>
<template v-slot:header-left>
<slot name="caption" />
</template>
<template v-slot:header-right>
<slot name="toolbar" />
</template>
<template v-slot:header-bottom>
<slot name="topMessage" />
</template>
<template v-slot:body-top>
<slot name="bodyMessage" />
</template>
<slot />
<template v-slot:footer-content>
<slot name="bottomMessage" />
</template>
</AppViewBaseLayout>
</template>
<style lang="scss">
</style>
\ No newline at end of file
<script setup lang="ts">
import { IParam, ViewDetail } from '@core';
import { Subject } from 'rxjs';
import { Ref, ref } from 'vue';
interface AppDrawerProps {
/**
* @description 视图
*/
view: ViewDetail;
/**
* @description 视图上下文参数
*/
context?: any;
/**
* @description 视图参数
*/
viewParams?: any;
/**
* @description 数据传递对象
*/
subject?: Subject<any>;
/**
* @description 关闭回调
*/
close: Function;
/**
* @description 是否全屏
*/
isFullscreen:boolean;
/**
* @description 模态参数
*/
option?: IParam;
}
const props = withDefaults(defineProps<AppDrawerProps>(), {
context: {},
viewParams: {},
});
/**
* 是否显示
*/
let isVisible: Ref<boolean> = ref(false);
/**
* 临时结果
*/
let tempResult = { ret: '' };
/**
* 视图名称
*/
let viewName: Ref<string> = ref('');
/**
* 抽屉的方向
*/
let placement: Ref<string> = ref('right');
/**
* 视图标题
*/
let title: string = '';
/**
* 视图宽度
*/
let width: Ref<number> = ref(0);
/**
* 视图高度
*/
let height: Ref<number> = ref(0);
/**
* 视图样式
*/
let style: any = {};
/**
* 暴露subject
*/
const getSubject = () => {
return props.subject;
};
/**
* Vue生命周期beforeMount
*/
onBeforeMount(() => {
if (props.view) {
viewName.value = props.view.name as string;
title = props.view.title || '';
placement.value = props.view.placement || 'right';
if (props.isFullscreen) {
Object.assign(style, { height: 'auto' });
} else {
if (!props.view.width || props.view.width === 0 || Object.is(props.view.width, '0px')) {
let viewWidth = 600;
if (window && window.innerWidth > 100) {
if (window.innerWidth > 100) {
viewWidth = window.innerWidth - 100;
} else {
viewWidth = window.innerWidth;
}
}
width.value = viewWidth;
} else {
width.value = props.view.width;
}
if (props.view.height && !Object.is(props.view.height, '0px')) {
Object.assign(style, { height: props.view.height + 'px' });
height.value = props.view.height;
} else {
height.value = 800;
}
}
}
});
/**
* Vue生命周期mounted
*/
onMounted(() => {
isVisible.value = true;
});
/**
* 视图关闭
*/
const close = (result: any) => {
if (result && Array.isArray(result) && result.length > 0) {
Object.assign(tempResult, { ret: 'OK' }, { datas: JSON.parse(JSON.stringify(result)) });
}
isVisible.value = false;
};
/**
* 视图数据变化
*/
const viewDataChange = (result: any) => {
tempResult = { ret: '' };
if (result && Array.isArray(result) && result.length > 0) {
Object.assign(tempResult, { ret: 'OK' }, { datas: JSON.parse(JSON.stringify(result)) });
}
};
/**
* 视图数据激活
*/
const viewDataActivated = (result: any) => {
if (result && Array.isArray(result) && result.length > 0) {
close(result);
}
};
/**
* 模态显示隐藏切换回调
*/
const onVisibleChange = ($event: any) => {
handleShowState($event);
props.close(tempResult);
};
/**
* 处理数据,向外抛值
*/
const handleShowState = ($event: any) => {
if (props.subject && tempResult) {
props.subject.next(tempResult);
}
};
</script>
<template>
<a-drawer
ref="curDrawer"
class="app-drawer"
v-model:visible="isVisible"
:placement="placement"
:title="title"
:footer="null"
:maskClosable="true"
:destroyOnClose="true"
:width="width"
:height="height"
:bodyStyle="style"
@close="onVisibleChange($event)"
>
<component
:is="viewName"
class="app-drawer-view-component"
:width="width"
:height="height"
:context="context"
:viewParams="viewParams"
:viewDefaultUsage="false"
:noViewCaption="true"
@viewDataChange="viewDataChange($event)"
@viewDataActivated="viewDataActivated($event)"
@close="close($event)"
:ref="viewName"
></component>
</a-drawer>
</template>
\ No newline at end of file
......@@ -48,7 +48,7 @@ const handleMenuGroupAction = ($event: IParam) => {
<template v-if="Object.is(uIActionGroup.extractMode, 'ITEMS')">
<a-dropdown>
<a class="group-action" @click.prevent>
\{{uIActionGroup.caption}}
{{uIActionGroup.caption}}
</a>
<template #overlay>
<a-menu @click="handleMenuGroupAction">
......
......@@ -45,7 +45,7 @@ const initRules = () => {
:validateStatus="error ? 'error' : 'validating'"
>
<template #label>
<label :style="{ width: labelWidth + 'px' }" :class="titleStyle">\{{ label }}</label>
<label :style="{ width: labelWidth + 'px' }" :class="titleStyle">{{ label }}</label>
</template>
<slot></slot>
</a-form-item>
......
......@@ -34,7 +34,7 @@ const extraClass = {
<i v-if="iconClass" :class="'app-icon-text__icon ' + iconClass" />
<img v-else-if="imgPath" class="app-icon-text__icon-img" :src="imgPath" />
</template>
<span class="app-icon-text__text" v-if="text">\{{text}}</span>
<span class="app-icon-text__text" v-if="text">{{text}}</span>
<template v-if="position == 'right'">
<i v-if="iconClass" :class="'app-icon-text__icon ' + iconClass" />
<img v-else-if="imgPath" class="app-icon-text__icon-img" :src="imgPath" />
......
......@@ -45,7 +45,7 @@ const getLayout = (item: IParam ,name: string) => {
<a-space :size="24" class="app-menu__card--flex">
<template v-for="item in menu.items">
<a-button v-if="!item.hidden" size="large" :class="['app-menu-item', item.itemSysCss]" @click="onClick(item)">
\{{ item.caption }}
{{ item.caption }}
</a-button>
</template>
</a-space>
......@@ -64,7 +64,7 @@ const getLayout = (item: IParam ,name: string) => {
@click="onClick(item)"
>
<a-button size="large">
\{{ item.caption }}
{{ item.caption }}
</a-button>
</a-col>
</a-row>
......
......@@ -16,7 +16,7 @@ const props = withDefaults(defineProps<Props>(), {
<template #icon>
<AppIconText :iconClass="item.iconClass" :imgPath="item.imgPath" :text="collapsed ? item.caption[0] : undefined"/>
</template>
<a-tooltip :title="item.tooltip">\{{item.caption}}</a-tooltip>
<a-tooltip :title="item.tooltip">{{item.caption}}</a-tooltip>
</a-menu-item>
</template>
<template v-else>
......@@ -24,7 +24,7 @@ const props = withDefaults(defineProps<Props>(), {
<template #icon>
<AppIconText :iconClass="item.iconClass" :imgPath="item.imgPath" :text="collapsed ? item.caption[0] : undefined"/>
</template>
<template #title><a-tooltip :title="item.tooltip">\{{item.caption}}</a-tooltip></template>
<template #title><a-tooltip :title="item.tooltip">{{item.caption}}</a-tooltip></template>
<AppMenuItem :items="item.items" />
</a-sub-menu>
</template>
......
<script setup lang="ts">
import { IActionParam, IParam, ViewDetail } from '@core';
import { Subject } from 'rxjs';
import { Ref, ref } from 'vue';
interface AppModalProps {
/**
* @description 视图
*/
view: ViewDetail;
/**
* @description 视图上下文参数
*/
context?: any;
/**
* @description 视图参数
*/
viewParams?: any;
/**
* @description 数据传递对象
*/
subject?: Subject<any>;
/**
* @description 关闭回调
*/
close: Function;
/**
* @description 是否全屏
*/
isFullscreen: boolean;
/**
* @description 模态参数
*/
option?: IParam;
}
const props = withDefaults(defineProps<AppModalProps>(), {
context: {},
viewParams: {},
});
/**
* 是否显示
*/
let isVisible: Ref<boolean> = ref(false);
/**
* 临时结果
*/
let tempResult = { ret: '' };
/**
* 视图名称
*/
let viewName: Ref<string> = ref('');
/**
* 视图标题
*/
let title: string = '';
/**
* 视图宽度
*/
let width: Ref<number> = ref(0);
/**
* 视图高度
*/
let height: Ref<number> = ref(0);
/**
* 视图样式
*/
let style: any = {};
/**
* 暴露subject
*/
const getSubject = () => {
return props.subject;
};
/**
* Vue生命周期beforeMount
*/
onBeforeMount(() => {
if (props.view) {
viewName.value = props.view.name as string;
title = props.view.title || '';
if (props.isFullscreen) {
Object.assign(style, { height: 'auto' });
} else {
if (!props.view.width || props.view.width === 0 || Object.is(props.view.width, '0px')) {
let viewWidth = 600;
if (window && window.innerWidth > 100) {
if (window.innerWidth > 100) {
viewWidth = window.innerWidth - 100;
} else {
viewWidth = window.innerWidth;
}
}
width.value = viewWidth;
} else {
width.value = props.view.width;
}
if (props.view.height && !Object.is(props.view.height, '0px')) {
Object.assign(style, { height: props.view.height + 'px' });
height.value = props.view.height;
} else {
height.value = 800;
}
}
}
});
/**
* Vue生命周期mounted
*/
onMounted(() => {
isVisible.value = true;
});
/**
* 视图关闭
*/
const close = (result: any) => {
if (result && Array.isArray(result) && result.length > 0) {
Object.assign(tempResult, { ret: 'OK' }, { resultData: JSON.parse(JSON.stringify(result)) });
}
props.subject?.next(tempResult);
isVisible.value = false;
};
/**
* 视图数据变化
*/
const viewDataChange = (result: any) => {
tempResult = { ret: '' };
if (result && Array.isArray(result) && result.length > 0) {
Object.assign(tempResult, { ret: 'OK' }, { resultData: JSON.parse(JSON.stringify(result)) });
}
};
/**
* 视图数据激活
*/
const viewDataActivated = (result: any) => {
if (result && Array.isArray(result) && result.length > 0) {
close(result);
}
};
const handelViewEvent = (actionParam: IActionParam) => {
const { tag, action, data } = actionParam;
switch (action) {
case 'viewDataChange':
viewDataChange(data);
break;
case 'close':
close(data);
break;
}
};
/**
* 模态显示隐藏切换回调
*/
const onVisibleChange = ($event: any) => {
handleShowState($event);
props.close(tempResult);
};
/**
* 处理数据,向外抛值
*/
const handleShowState = ($event: any) => {
if (props.subject && tempResult) {
props.subject.next(tempResult);
}
};
</script>
<template>
<a-modal
ref="curModal"
class="app-modal"
v-model:visible="isVisible"
:title="title"
:footer="null"
:maskClosable="true"
:destroyOnClose="true"
:width="width"
:height="height"
:bodyStyle="style"
@cancel="onVisibleChange($event)"
>
<component
:is="viewName"
class="app-modal-view-component"
:context="context"
:viewParams="viewParams"
:viewDefaultUsage="false"
:noViewCaption="true"
@viewEvent="handelViewEvent($event)"
@viewDataActivated="viewDataActivated($event)"
@close="close($event)"
:ref="viewName"
></component>
</a-modal>
</template>
\ No newline at end of file
<script setup lang="ts">
import { IActionParam, IParam, ViewDetail } from '@core';
import { Subject } from 'rxjs';
import { Ref, ref, h } from 'vue';
interface AppPopoverProps {
/**
* @description 视图
*/
view: ViewDetail;
/**
* @description 视图上下文参数
*/
context?: any;
/**
* @description 视图参数
*/
viewParams?: any;
/**
* @description 数据传递对象
*/
subject?: Subject<any>;
/**
* @description 是否全屏
*/
isFullscreen:boolean;
/**
* @description 模态参数
*/
option?: IParam;
/**
* @description 鼠标移出回调
*/
mouseout: Function;
}
const props = withDefaults(defineProps<AppPopoverProps>(), {
context: {},
viewParams: {},
});
/**
* 临时结果
*/
let tempResult = { ret: '' };
/**
* 视图名称
*/
let viewName: Ref<string> = ref('');
/**
* 抽屉的方向
*/
let placement: Ref<string> = ref('bottom');
/**
* 视图标题
*/
let title: string = '';
/**
* 视图宽度
*/
let width: Ref<number> = ref(0);
/**
* 视图高度
*/
let height: Ref<number> = ref(0);
/**
* 视图样式
*/
let style: any = {};
/**
* 暴露subject
*/
const getSubject = () => {
return props.subject;
};
/**
* Vue生命周期beforeMount
*/
onBeforeMount(() => {
if (props.view) {
viewName.value = props.view.name as string;
title = props.view.title || '';
placement.value = props.view.placement || 'bottom';
if (props.isFullscreen) {
Object.assign(style, { height: 'auto' });
} else {
if (!props.view.width || props.view.width === 0 || Object.is(props.view.width, '0px')) {
width.value = 300;
Object.assign(style, { width: width.value + 'px' });
} else {
width.value = props.view.width;
Object.assign(style, { width: width.value + 'px' });
}
if (props.view.height && !Object.is(props.view.height, '0px')) {
height.value = props.view.height;
Object.assign(style, { height: height.value + 'px' });
} else {
height.value = 300;
Object.assign(style, { height: height.value + 'px' });
}
}
}
});
/**
* 视图关闭
*/
const close = (result: any) => {
if (result && Array.isArray(result) && result.length > 0) {
Object.assign(tempResult, { ret: 'OK' }, { datas: JSON.parse(JSON.stringify(result)) });
}
props.subject?.next(tempResult);
};
/**
* 视图数据变化
*/
const viewDataChange = (result: any) => {
tempResult = { ret: '' };
if (result && Array.isArray(result) && result.length > 0) {
Object.assign(tempResult, { ret: 'OK' }, { datas: JSON.parse(JSON.stringify(result)) });
}
};
/**
* 视图数据激活
*/
const viewDataActivated = (result: any) => {
if (result && Array.isArray(result) && result.length > 0) {
close(result);
}
};
/**
* 显示隐藏切换回调
*/
const onVisibleChange = ($event: any) => {
handleShowState($event);
};
/**
* 处理数据,向外抛值
*/
const handleShowState = ($event: any) => {
if (props.subject && tempResult) {
props.subject.next(tempResult);
}
};
/**
* 处理视图事件
*/
const handelViewEvent = (actionParam: IActionParam) => {
const { tag, action, data } = actionParam;
switch (action) {
case 'viewDataChange':
viewDataChange(data);
break;
case 'close':
close(data);
break;
}
};
/**
* 点击事件
*/
const click = (e:any) => {
e.stopPropagation()
}
/**
* 鼠标移出事件
*/
const mouseout = (e:any) => {
props.mouseout();
}
</script>
<template>
<div :style="style" class="app-popover" @click="click" @mouseleave="mouseout">
<component
:is="viewName"
class="app-popover-component"
:width="width"
:height="height"
:context="context"
:viewParams="viewParams"
:viewDefaultUsage="false"
:noViewCaption="true"
@viewEvent="handelViewEvent($event)"
@viewDataActivated="viewDataActivated($event)"
@close="close($event)"
></component>
</div>
</template>
\ No newline at end of file
......@@ -74,7 +74,7 @@ const dropdownList = [
<template>
<div class="app-user">
<span class="user-name">\{{ user.name }}</span>
<span class="user-name">{{ user.name }}</span>
<a-dropdown>
<a-avatar size="large" :src="user.avatar" @click.prevent>
<template #icon><AppIconText iconClass="fa fa-user-o"></AppIconText></template>
......@@ -82,7 +82,7 @@ const dropdownList = [
<template #overlay>
<a-menu @click="dropdownClick">
<a-menu-item :value="item.tag" v-for="item in dropdownList" :key="item.tag">
\{{ item.label }}
{{ item.label }}
</a-menu-item>
</a-menu>
</template>
......
import { IParam, ViewDetail } from "../common";
import { IAppFuncService, IOpenViewService } from "../service";
import { IAppActionService, IAppAuthService, IAppFuncService, IAppNotificationService, IOpenViewService } from "../service";
/**
......@@ -11,21 +11,13 @@ import { IAppFuncService, IOpenViewService } from "../service";
export interface IApp {
/**
* 初始化应用权限
* 初始化应用
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof IApp
*/
initAppAuth(params: IParam): Promise<any>;
/**
* 获取应用所有功能
*
* @return {*} {IParam[]}
* @memberof IApp
*/
getAllFuncs(): IParam[];
initApp(params: IParam): Promise<any>;
/**
* 获取应用功能服务
......@@ -43,6 +35,30 @@ export interface IApp {
*/
getOpenViewService(): IOpenViewService;
/**
* 获取应用权限服务
*
* @return {*} {IAppAuthService}
* @memberof IApp
*/
getAppAuthService(): IAppAuthService;
/**
* 获取通知服务
*
* @return {*} {IAppNotificationService}
* @memberof IApp
*/
getNotificationService(): IAppNotificationService;
/**
* 获取界面行为服务
*
* @return {*} {IAppActionService}
* @memberof IApp
*/
getAppActionService(): IAppActionService;
/**
* 获取UI服务
*
......@@ -63,6 +79,14 @@ export interface IApp {
*/
getDataService(entityKey: string, context?: IParam): Promise<any>;
/**
* 获取应用所有功能
*
* @return {*} {IParam[]}
* @memberof IApp
*/
getAllFuncs(): IParam[];
/**
* 获取指定视图信息
*
......@@ -82,7 +106,6 @@ export interface IApp {
*/
getEntityInfo(codeName: string): any;
/**
* 获取应用数据
*
......@@ -106,12 +129,4 @@ export interface IApp {
*/
gotoLoginPage(): void;
/**
* @description 登录
*
* @return {*} {Promise<IParam>}
* @memberof IApp
*/
handleLogin(): Promise<IParam>;
}
\ No newline at end of file
import { IParam } from "../common";
/**
* @description 应用权限服务
* @export
* @interface IAppAuthService
*/
export interface IAppAuthService {
/**
* 初始化应用权限
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof IAppAuthService
*/
initAppAuth(params: IParam, hooks: IParam): Promise<any>;
/**
* 获取应用数据
*
* @return {*} {IParam}
* @memberof IAppAuthService
*/
getAppData(): IParam;
/**
* 设置应用数据
*
* @param {IParam} opt
* @memberof IAppAuthService
*/
setAppData(opt: IParam): void;
/**
* 登录
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof IAppAuthService
*/
login(opts: IParam): Promise<IParam>;
}
\ No newline at end of file
/**
* @description 应用权限服务
* @export
* @interface IAppNotificationService
*/
export interface IAppNotificationService {
/**
* 成功提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
success(opts: any): void;
/**
* 信息提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
info(opts: any): void;
/**
* 警告提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
warning(opts: any): void;
/**
* 错误提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
error(opts: any): void;
}
\ No newline at end of file
export * from './i-app-func-service';
export * from './i-app-notification-service';
export * from './i-app-action-service';
export * from './i-open-view-service';
export * from './i-data-service-register';
export * from './i-ui-service-register';
export * from './i-app-auth-service';
\ No newline at end of file
export * from './app-func-service';
export * from './app-action-service';
\ No newline at end of file
import { AppActionService, IContext, IParam, UIActionUtil } from "@core";
import { IContext, IParam, UIActionUtil } from "@core";
export interface ActionParams {
/**
......@@ -211,7 +211,7 @@ export class AppActionBase {
return;
}
// 参数合并 todo
AppActionService.getInstance().execute(actionModel, params);
App.getAppActionService().execute(actionModel, params);
}
/**
......
export * from './app-logic';
export * from './app-ui-action';
\ No newline at end of file
import { AppFuncService, IApp, IAppFuncService, IOpenViewService, ViewDetail } from "@core";
import { IParam } from "@core/interface";
import { IApp, IAppFuncService, IOpenViewService, ViewDetail } from "@core";
import { IAppActionService, IAppAuthService, IAppNotificationService, IParam } from "@core/interface";
/**
* 应用基类
......@@ -10,52 +10,53 @@ import { IParam } from "@core/interface";
export abstract class AppBase implements IApp {
/**
* 应用功能服务
* 初始化应用
*
* @private
* @type {AppFuncService}
* @param {IParam} opt
* @memberof AppBase
*/
private appFuncService: AppFuncService = AppFuncService.getInstance();
public initApp(params: IParam): Promise<any> {
throw new Error("Method not implemented.");
}
/**
* 应用数据
* 设置应用数据
*
* @private
* @type {IParam}
* @param {IParam} opt
* @memberof AppBase
*/
private appData: IParam = {};
public setAppData(opt: IParam): void {
this.getAppAuthService().setAppData(opt);
}
/**
* 初始化应用权限
* 获取应用数据
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @return {*} {IParam}
* @memberof AppBase
*/
public async initAppAuth(params: IParam): Promise<any> {
throw new Error("Method not implemented.");
public getAppData(): IParam {
return this.getAppAuthService().getAppData();
}
/**
* 设置应用数据
* 获取应用权限服务
*
* @param {IParam} opt
* @return {IAppFuncService}
* @memberof AppBase
*/
public setAppData(opt: IParam): void {
this.appData = opt;
public getAppAuthService(): IAppAuthService {
throw new Error("Method not implemented.");
}
/**
* 获取应用数据
* 获取通知服务
*
* @return {*} {IParam}
* @return {*} {IAppNotificationService}
* @memberof AppBase
*/
public getAppData(): IParam {
return this.appData;
public getNotificationService(): IAppNotificationService {
throw new Error("Method not implemented.");
}
/**
......@@ -65,7 +66,7 @@ export abstract class AppBase implements IApp {
* @memberof AppBase
*/
public getAppFuncService(): IAppFuncService {
return this.appFuncService;
throw new Error("Method not implemented.");
}
/**
......@@ -78,6 +79,16 @@ export abstract class AppBase implements IApp {
throw new Error("Method not implemented.");
}
/**
* 获取界面行为服务
*
* @return {*} {IAppActionService}
* @memberof AppBase
*/
public getAppActionService(): IAppActionService {
throw new Error("Method not implemented.");
}
/**
* 获取UI服务
*
......@@ -132,21 +143,12 @@ export abstract class AppBase implements IApp {
}
/**
* @description 跳转登录页
* @description 跳转登录页
*
* @memberof AppBase
*/
gotoLoginPage(): void {
public gotoLoginPage(): void {
throw new Error("Method not implemented.");
}
/**
* @description 登录
*
* @return {*} {Promise<IParam>}
* @memberof AppBase
*/
handleLogin(): Promise<IParam> {
throw new Error("Method not implemented.");
}
}
\ No newline at end of file
......@@ -10,3 +10,5 @@ export * from './mpickup-view'
export * from './pickup-grid-view'
export * from './tree-exp-view'
export * from './tree-view'
export * from './portal-view'
export * from './tab-exp-view'
import { ViewBase, MainViewState, IActionParam, IParam, AppActionService } from '@core';
import { ViewBase, MainViewState, IActionParam, IParam } from '@core';
/**
* 实体视图
......@@ -49,20 +49,7 @@ export class MainView extends ViewBase {
actionEnvironment: this
};
// 执行行为
AppActionService.getInstance().execute(uIAction, inputParam);
}
/**
* 处理部件事件
*
* @param {IActionParam} actionParam
* @memberof MainView
*/
public onCtrlEvent(actionParam: IActionParam) {
const { tag, action, data } = actionParam;
if (Object.is(action, 'closeView')) {
this.closeView();
}
App.getAppActionService().execute(uIAction, inputParam);
}
/**
......@@ -76,7 +63,6 @@ export class MainView extends ViewBase {
...superParams,
xDataControl: this.xDataControl,
onToolbarEvent: this.onToolbarEvent.bind(this),
onCtrlEvent: this.onCtrlEvent.bind(this),
};
}
}
export * from './portal-view-prop'
export * from './portal-view-state'
export * from './portal-view'
\ No newline at end of file
import { ViewPropsBase } from "@core";
/**
* @description 应用看板(门户)视图props
* @export
* @interface PortalViewProps
* @extends {ViewPropsBase}
*/
export interface PortalViewProps extends ViewPropsBase {
}
\ No newline at end of file
import { ViewStateBase } from "@core";
/**
* @description 应用看板(门户)视图state
* @export
* @interface PortalViewState
* @extends {ViewStateBase}
*/
export interface PortalViewState extends ViewStateBase {
}
\ No newline at end of file
import { PortalViewState, IParam, ViewBase } from '@core';
/**
* @description 应用看板(门户)视图
* @export
* @class PortalView
* @extends {PortalView}
*/
export class PortalView extends ViewBase {
/**
* 视图状态
*
* @type {PortalViewState}
* @memberof PortalView
*/
public declare state: PortalViewState;
/**
* 当前视图数据看板
*
* @type {IParam}
* @memberof PortalView
*/
public declare dashboard: IParam;
/**
* @description 处理视图初始化
*
* @memberof PortalView
*/
public useViewInit() {
// 初始化数据看板引用
this.dashboard = ref(null);
const { viewSubject } = this.state;
onMounted(() => {
const { viewParams } = this.state;
viewSubject.next({ tag: this.getDashboard().name, action: "load", data: viewParams });
})
}
/**
* 获取数据看板部件
*
* @return {*} {*}
* @memberof PortalView
*/
public getDashboard(): any {
if (this.dashboard.value) {
return this.dashboard.value;
} else {
return null;
}
}
/**
* @description 安装视图所有功能模块的方法
*
* @memberof PortalView
*/
public moduleInstall() {
const superParams = super.moduleInstall();
return {
...superParams,
dashboard: this.dashboard
};
}
}
export * from './tab-exp-view-prop';
export * from './tab-exp-view-state';
export { TabExpView } from './tab-exp-view';
\ No newline at end of file
import { ExpViewProps } from "@core";
/**
* @description 树导航视图props
* @export
* @interface TabExpViewProps
* @extends {ExpViewProps}
*/
export interface TabExpViewProps extends ExpViewProps {}
import { ExpViewState } from "@core";
/**
* @description 树导航视图状态
* @export
* @interface TabExpViewState
* @extends {ExpViewState}
*/
export interface TabExpViewState extends ExpViewState {}
\ No newline at end of file
import { ExpView } from "@core";
import { TabExpViewProps } from "./tab-exp-view-prop";
import { TabExpViewState } from "./tab-exp-view-state";
/**
* @description 分页导航视图
* @export
* @class TabExpView
* @extends {ExpView}
*/
export class TabExpView extends ExpView {
/**
* @description 视图状态
* @type {TabExpViewState}
* @memberof TabExpView
*/
public declare state: TabExpViewState;
/**
* @description 安装视图所有功能模块的方法
* @return {*}
* @memberof TabExpView
*/
public moduleInstall() {
const superParams = super.moduleInstall();
return {
...superParams
};
}
}
\ No newline at end of file
......@@ -92,7 +92,7 @@ export class ViewBase {
* 关闭视图
*
*/
public closeView(){
public closeView() {
window.history.go(-1);
}
......@@ -109,8 +109,8 @@ export class ViewBase {
const { appViewNavContexts, appViewNavParams } = this.state;
if (Object.is(props.openType, 'ROUTE')) {
// 应用上下文
const appContext = App.getAppData();
Object.assign(context.value, appContext);
const appData = App.getAppData();
Object.assign(context.value, appData.context ? appData.context : {});
// 视图应用上下文
const pageContext = {};
const routeParams = useRoute().params;
......@@ -204,6 +204,18 @@ export class ViewBase {
*/
public useCounterService() { }
/**
* 处理部件事件
*
* @param {IActionParam} actionParam
* @memberof ViewBase
*/
public onCtrlEvent(actionParam: IActionParam) {
const { tag, action, data } = actionParam;
if (Object.is(action, 'closeView')) {
this.closeView();
}
}
/**
* @description 安装视图所有功能模块的方法
......@@ -224,7 +236,8 @@ export class ViewBase {
// 处理视图初始化
this.useViewInit();
return {
state: this.state
state: this.state,
onCtrlEvent: this.onCtrlEvent.bind(this),
};
}
}
......@@ -82,6 +82,14 @@ export class ControlBase {
this.emit('ctrlEvent', { tag: this.props.name, action: 'closeView', data: undefined });
}
/**
* 处理部件事件
*
* @param {IActionParam} actionParam
* @memberof ControlBase
*/
public onCtrlEvent(actionParam: IActionParam) {}
/**
* @description 安装部件所有功能模块的方法
* @param {ControlPropsBase} props 传入的Props
......@@ -94,7 +102,8 @@ export class ControlBase {
this.useControlContextParams();
return {
state: this.state,
getData: this.getData
getData: this.getData.bind(this),
onCtrlEvent: this.onCtrlEvent.bind(this),
};
}
}
import { IParam, MainControlProps } from "@core";
/**
* @description 数据看板部件的props
* @export
* @interface DashboardControlProps
* @extends {MainControlProps}
*/
export interface DashboardControlProps extends MainControlProps {
}
\ No newline at end of file
import { IParam, MainControlState } from '@core';
/**
* @description 数据看板部件状态
* @export
* @interface DashboardControlState
* @extends {MainControlState}
*/
export interface DashboardControlState extends MainControlState {
}
import { IActionParam, MainControl } from '@core';
import { DashboardControlProps } from './dashboard-control-prop';
import { DashboardControlState } from './dashboard-control-state';
/**
* @description 选择视图面板部件
* @export
* @class DashboardControl
* @extends {MainControl}
*/
export class DashboardControl extends MainControl {
/**
* @description 部件状态
* @type {DashboardControlState}
* @memberof DashboardControl
*/
public declare state: DashboardControlState;
/**
* @description
* @param {DashboardControlProps} props
* @memberof DashboardControl
*/
public useLoad(props: DashboardControlProps) {
const { viewSubject, controlName, context, viewParams } = this.state;
// 订阅viewSubject,监听load行为
if (viewSubject) {
let subscription = viewSubject.subscribe(({ tag, action, data }: IActionParam) => {
if (Object.is(controlName, tag) && Object.is("load", action)) {
viewSubject.next({ tag: tag, action: "load", data: data });
}
})
// 部件卸载时退订viewSubject
onUnmounted(() => {
subscription.unsubscribe();
})
}
}
/**
* @description 安装部件所有功能模块的方法
* @return {*}
* @memberof DashboardControl
*/
public moduleInstall() {
const superParams = super.moduleInstall();
return {
...superParams,
load:this.useLoad.bind(this),
};
}
}
\ No newline at end of file
export * from './dashboard-control-prop'
export * from './dashboard-control-state'
export * from './dashboard-control'
\ No newline at end of file
......@@ -11,3 +11,7 @@ export * from './tree-control'
export * from './search-form-control'
export * from './quick-search-form-control'
export * from './searchbar-control'
export * from './dashboard-control'
export * from './portlet-control'
export * from './tab-exp-panel-control'
export * from './tab-view-panel-control'
......@@ -34,7 +34,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected async load(opt: any = {}) {}
protected async load(opt: any = {}) { }
/**
* @description 使用加载功能模块
......@@ -80,9 +80,11 @@ export class MDControl extends MainControl {
}
this.handleStateChange();
}
} catch (error) {
// todo 错误异常处理
console.log(error);
} catch (error: any) {
App.getNotificationService().error({
message: '加载数据失败',
description: error?.data
})
}
};
......@@ -111,7 +113,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected async save(opt: any = {}) {}
protected async save(opt: any = {}) { }
/**
* @description 使用保存功能模块
......@@ -175,7 +177,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected async remove(opt: any = {}) {}
protected async remove(opt: any = {}) { }
/**
* @description 使用删除功能模块
......@@ -255,7 +257,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected async newRow(opt: any = {}) {}
protected async newRow(opt: any = {}) { }
/**
* @description 使用新建功能模块
......@@ -313,7 +315,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected async refresh(opt: any = {}) {}
protected async refresh(opt: any = {}) { }
/**
* @description 使用刷新功能模块
......@@ -358,7 +360,7 @@ export class MDControl extends MainControl {
*
* @memberof MDControl
*/
public handleStateChange() {}
public handleStateChange() { }
/**
* 处理数据分组
......@@ -382,7 +384,7 @@ export class MDControl extends MainControl {
* @protected
* @memberof MDControl
*/
protected autoGroupData() {}
protected autoGroupData() { }
/**
* 代码表分组
......@@ -390,7 +392,7 @@ export class MDControl extends MainControl {
* @protected
* @memberof MDControl
*/
protected codeListGroupData() {}
protected codeListGroupData() { }
/**
* 获取当前激活数据
......
export * from './portlet-control-prop'
export * from './portlet-control-state'
export * from './portlet-control'
\ No newline at end of file
import { MainControlProps } from "@core";
/**
* @description 门户部件参数
* @export
* @interface PortletControlProps
* @extends {MainControlProps}
*/
export interface PortletControlProps extends MainControlProps {
}
\ No newline at end of file
import { IParam, MainControlState } from '@core';
/**
* @description 门户部件状态
* @export
* @interface PortletControlState
* @extends {MainControlState}
*/
export interface PortletControlState extends MainControlState {
}
\ No newline at end of file
import { IActionParam, MainControl } from '@core';
import { PortletControlProps } from './portlet-control-prop';
import { PortletControlState } from './portlet-control-state';
/**
* @description 门户部件
* @export
* @class PortletControl
* @extends {MainControl}
*/
export class PortletControl extends MainControl {
/**
* @description 部件状态
* @type {PortletControlState}
* @memberof PortletControl
*/
public declare state: PortletControlState;
/**
* @description 加载
* @param {PortletControlProps} props
* @memberof PortletControl
*/
public useLoad(props: PortletControlProps) {
const { viewSubject, controlName, context, viewParams } = this.state;
// 订阅viewSubject,监听load行为
if (viewSubject) {
let subscription = viewSubject.subscribe(({ tag, action, data }: IActionParam) => {
if (Object.is(controlName, tag) && Object.is("load", action)) {
viewSubject.next({ tag: tag, action: "load", data: data });
}
})
// 部件卸载时退订viewSubject
onUnmounted(() => {
subscription.unsubscribe();
})
}
}
/**
* 部件事件
*
* @param {IActionParam} actionParam
* @memberof PortletControl
*/
public onViewEvent(actionParam: IActionParam) {
const { tag, action, data } = actionParam;
const { controlName } = this.state;
}
/**
* @description 安装部件所有功能模块的方法
* @return {*}
* @memberof PortletControl
*/
public moduleInstall() {
const superParams = super.moduleInstall();
return {
...superParams,
load:this.useLoad.bind(this),
onViewEvent: this.onViewEvent.bind(this)
};
}
}
\ No newline at end of file
......@@ -20,8 +20,8 @@ export class SearchBarControl extends MainControl {
* @param {SearchBarControlProps} props
* @memberof SearchBarControl
*/
public setState(props: SearchBarControlState) {
super.setState(props);
public setState() {
super.setState();
this.state.filterFields = Object.values(this.state.detailsModel);
this.state.filterItems = [];
}
......@@ -33,8 +33,8 @@ export class SearchBarControl extends MainControl {
* @return {*}
* @memberof SearchBarControl [emit] 事件
*/
public moduleInstall(props: SearchBarControlProps, emit?: Function) {
const superParams = super.moduleInstall(props, emit);
public moduleInstall() {
const superParams = super.moduleInstall();
return {
...superParams,
state: this.state,
......
export * from './tab-exp-panel-control-prop'
export * from './tab-exp-panel-control-state'
export * from './tab-exp-panel-control'
\ No newline at end of file
import { IParam, MainControlProps } from "@core";
/**
* @description 搜索栏部件的props
* @export
* @interface TabExpPanelControlProps
* @extends {MainControlProps}
*/
export interface TabExpPanelControlProps extends MainControlProps {
}
\ No newline at end of file
import { IParam, MainControlState } from '@core';
/**
* @description 搜索栏部件状态
* @export
* @interface TabExpPanelControlState
* @extends {MainControlState}
*/
export interface TabExpPanelControlState extends MainControlState {
}
\ No newline at end of file
import { UIUtil, deepCopy, IActionParam, IParam, MainControl, TabExpPanelControlState, TabExpPanelControlProps } from '@core';
/**
* @description 分页导航部件
* @export
* @class TabExpPanelControl
* @extends {MainControl}
*/
export class TabExpPanelControl extends MainControl {
/**
* @description 部件状态
* @type {TabExpPanelControlState}
* @memberof TabExpPanelControl
*/
public declare state: TabExpPanelControlState;
/**
* @description 安装部件所有功能模块的方法
* @param {TabExpPanelControlProps} props
* @param {Function} [emit]
* @return {*}
* @memberof TabExpPanelControl [emit] 事件
*/
public moduleInstall() {
const superParams = super.moduleInstall();
return {
...superParams,
state: this.state,
};
}
}
\ No newline at end of file
export * from './tab-view-panel-control-prop'
export * from './tab-view-panel-control-state'
export * from './tab-view-panel-control'
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册