提交 7c667f93 编写于 作者: Mosher's avatar Mosher

update:更新

上级 2088ca49
...@@ -2,7 +2,28 @@ ...@@ -2,7 +2,28 @@
TARGET=PSAPPDEUILOGIC TARGET=PSAPPDEUILOGIC
</#ibiztemplate> </#ibiztemplate>
import { ILogicNode } from "@/interface/logic"; import { ILogicNode } from "@/interface/logic";
import { UIActionContext } from "@/logic/ui-logic"; import {
UIActionContext,
UILogicAppendParamNode,
UILogicBeginNode,
UILogicBindParamNode,
UILogicCopyParamNode,
UILogicDataSetNode,
UILogicDeActionNode,
UILogicDebugParamNode,
UILogicDeLogicNode,
UILogicDeUIActionNode,
UILogicEndNode,
UILogicMsgboxNode,
UILogicPrepareParamNode,
UILogicRawCodeNode,
UILogicReNewParamNode,
UILogicResetParamNode,
UILogicSortParamNode,
UILogicThrowExceptionNode,
UILogicViewctrlFireEventNode,
UILogicViewctrlInvokeNode
} from "@/logic/ui-logic";
/** /**
* ${item.name} * ${item.name}
...@@ -42,12 +63,23 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase { ...@@ -42,12 +63,23 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase {
{ {
name: '${logicParam.name}', name: '${logicParam.name}',
codeName: '${logicParam.codeName}', codeName: '${logicParam.codeName}',
default: <#if logicParam.isDefault?? && logicParam.isDefault()>true<#else>false</#if>,
navContextParam: <#if logicParam.isNavContextParam?? && logicParam.isNavContextParam()>true<#else>false</#if>,
navViewParamParam: <#if logicParam.isNavViewParamParam?? && logicParam.isNavViewParamParam()>true<#else>false</#if>,
activeContainerParam: <#if logicParam.isActiveContainerParam?? && logicParam.isActiveContainerParam()>true<#else>false</#if>, activeContainerParam: <#if logicParam.isActiveContainerParam?? && logicParam.isActiveContainerParam()>true<#else>false</#if>,
activeCtrlParam: <#if logicParam.isActiveCtrlParam?? && logicParam.isActiveCtrlParam()>true<#else>false</#if>, activeCtrlParam: <#if logicParam.isActiveCtrlParam?? && logicParam.isActiveCtrlParam()>true<#else>false</#if>,
activeViewParam: <#if logicParam.isActiveViewParam?? && logicParam.isActiveViewParam()>true<#else>false</#if>, activeViewParam: <#if logicParam.isActiveViewParam?? && logicParam.isActiveViewParam()>true<#else>false</#if>,
appGlobalParam: <#if logicParam.isAppGlobalParam?? && logicParam.isAppGlobalParam()>true<#else>false</#if>,
applicationParam: <#if logicParam.isApplicationParam?? && logicParam.isApplicationParam()>true<#else>false</#if>,
ctrlParam: <#if logicParam.isCtrlParam?? && logicParam.isCtrlParam()>true<#else>false</#if>,
default: <#if logicParam.isDefault?? && logicParam.isDefault()>true<#else>false</#if>,
entityParam: <#if logicParam.isEntityParam?? && logicParam.isEntityParam()>true<#else>false</#if>,
entityListParam: <#if logicParam.isEntityListParam?? && logicParam.isEntityListParam()>true<#else>false</#if>,
entityPageParam: <#if logicParam.isEntityPageParam?? && logicParam.isEntityPageParam()>true<#else>false</#if>,
filterParam: <#if logicParam.isFilterParam?? && logicParam.isFilterParam()>true<#else>false</#if>,
navContextParam: <#if logicParam.isNavContextParam?? && logicParam.isNavContextParam()>true<#else>false</#if>,
simpleParam: <#if logicParam.isSimpleParam?? && logicParam.isSimpleParam()>true<#else>false</#if>,
simpleListParam: <#if logicParam.isSimpleListParam?? && logicParam.isSimpleListParam()>true<#else>false</#if>,
routeViewSessionParam: <#if logicParam.isRouteViewSessionParam?? && logicParam.isRouteViewSessionParam()>true<#else>false</#if>,
viewNavDataParam: <#if logicParam.isViewNavDataParam?? && logicParam.isViewNavDataParam()>true<#else>false</#if>,
viewSessionParam: <#if logicParam.isViewSessionParam?? && logicParam.isViewSessionParam()>true<#else>false</#if>,
lastReturnParam: <#if logicParam.isLastReturnParam?? && logicParam.isLastReturnParam()>true<#else>false</#if> lastReturnParam: <#if logicParam.isLastReturnParam?? && logicParam.isLastReturnParam()>true<#else>false</#if>
}, },
</#list> </#list>
...@@ -148,14 +180,13 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase { ...@@ -148,14 +180,13 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase {
async execute(args: any[], context:any = {} ,params: any = {}, $event?: any, xData?: any, actioncontext?: any, srfParentDeName?: string) { async execute(args: any[], context:any = {} ,params: any = {}, $event?: any, xData?: any, actioncontext?: any, srfParentDeName?: string) {
try { try {
const actionContext = this.beforeExecute(args, context, params, $event, xData, actioncontext, srfParentDeName); const actionContext = this.beforeExecute(args, context, params, $event, xData, actioncontext, srfParentDeName);
const startNode = this.logicNodes.find((logicNode: ILogicNode) => logicNode.codeName === this.startLogicNode); if (!this.startLogicNode) {
if (!startNode) {
throw new Error('没有开始节点'); throw new Error('没有开始节点');
} }
await this.executeNode(startNode, actionContext); await this.executeNode(this.startLogicNode, actionContext);
return actionContext.getResult(); return actionContext.getResult();
} catch (error: any) { } catch (error: any) {
<#noparse>throw new Error(`${error && error.message ? error.message : '发生未知错误!'}`);</#noparse> throw new Error(`${error && error.message ? error.message : '发生未知错误!'}`);
} }
} }
...@@ -166,18 +197,114 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase { ...@@ -166,18 +197,114 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase {
* @param {UIActionContext} actionContext * @param {UIActionContext} actionContext
* @memberof ${srfclassname('${item.getCodeName()}')}UILogicBase * @memberof ${srfclassname('${item.getCodeName()}')}UILogicBase
*/ */
executeNode(logicNode: ILogicNode, actionContext: UIActionContext) { async executeNode(logicNodeName: string, actionContext: UIActionContext) {
const logicNode = this.logicNodes.find((node: ILogicNode) => node.codeName === logicNodeName) as ILogicNode;
if (!logicNode) {
console.log(`未找到 ${logicNodeName} 节点`);
}
let result: any = { actionContext };
try { try {
switch (logicNode.logicNodeType) { switch (logicNode.logicNodeType) {
// 开始节点
case 'BEGIN': case 'BEGIN':
console.log(111, '执行开始节点'); result = await new UILogicBeginNode().executeNode(logicNode, actionContext);
break;
// 准备参数节点
case 'PREPAREJSPARAM':
result = await new UILogicPrepareParamNode().executeNode(logicNode, actionContext);
break;
// 重置参数节点
case 'RESETPARAM':
result = await new UILogicResetParamNode().executeNode(logicNode, actionContext);
break;
// 拷贝参数
case 'COPYPARAM':
result = await new UILogicCopyParamNode().executeNode(logicNode, actionContext);
break;
// 绑定参数
case 'BINDPARAM':
result = await new UILogicBindParamNode().executeNode(logicNode, actionContext);
break;
// 重新建立参数
case 'RENEWPARAM':
result = await new UILogicReNewParamNode().executeNode(logicNode, actionContext);
break;
// 调用实体界面行为
case 'DEUIACTION':
result = await new UILogicDeUIActionNode().executeNode(logicNode, actionContext);
break;
// 行为处理节点
case 'DEACTION':
result = await new UILogicDeActionNode().executeNode(logicNode, actionContext);
break;
// 实体处理逻辑
case 'DELOGIC':
result = await new UILogicDeLogicNode().executeNode(logicNode, actionContext);
break;
// 实体数据集
case 'DEDATASET':
result = await new UILogicDataSetNode().executeNode(logicNode, actionContext);
break;
// 附加到数组参数
case 'APPENDPARAM':
result = await new UILogicAppendParamNode().executeNode(logicNode, actionContext);
break;
// 排序数组参数
case 'SORTPARAM':
result = await new UILogicSortParamNode().executeNode(logicNode, actionContext);
break; break;
// 视图部件调用
case 'VIEWCTRLINVOKE':
result = await new UILogicViewctrlInvokeNode().executeNode(logicNode, actionContext);
break;
// 视图部件事件触发
case 'VIEWCTRLFIREEVENT':
result = await new UILogicViewctrlFireEventNode().executeNode(logicNode, actionContext);
break;
// 调试逻辑参数
case 'DEBUGPARAM':
result = await new UILogicDebugParamNode().executeNode(logicNode, actionContext);
break;
// 消息弹窗
case 'MSGBOX':
result = await new UILogicMsgboxNode().executeNode(logicNode, actionContext);
break;
// 前端代码
case 'RAWJSCODE':
result = await new UILogicRawCodeNode().executeNode(logicNode, actionContext);
break;
// 异常处理
case 'THROWEXCEPTION':
result = await new UILogicThrowExceptionNode().executeNode(logicNode, actionContext);
break;
// 结束
case 'END': case 'END':
console.log(111, '执行结束节点'); result = await new UILogicEndNode().executeNode(logicNode, actionContext);
break; break;
default:
console.log(`${logicNode.logicNodeType}暂未支持`);
}
// 有后续节点时继续递归,反之返回,抛异常无返回值
if (result && result.nextNodes && result.nextNodes.length > 0) {
await this.executeNextNodes(result.nextNodes, actionContext);
} }
} catch (error: any) { } catch (error: any) {
throw new Error(`${error && error.message ? error.message : '发生未知错误!'}`);
}
}
/**
* 执行后续节点集合
*
* @param {any[]} nextNodes
* @param {UIActionContext} actionContext
* @memberof ${srfclassname('${item.getCodeName()}')}UILogicBase
*/
public async executeNextNodes(nextNodes: any[], actionContext: UIActionContext) {
if (nextNodes && (nextNodes.length > 0)) {
for (let nextNode of nextNodes) {
await this.executeNode(nextNode, actionContext);
}
} }
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册