当前位置: 首页 > news >正文

iBizModel 日历部件(PSSYSCALENDAR)模型体系详解 - 教程

iBizModel 日历部件(PSSYSCALENDAR)模型体系详解

引言

iBizModel 系统日历部件模型体系是 iBizModel 架构中专门用于处理时间相关数据可视化与交互的核心组成部分。该体系基于 PSSYSCALENDAR 模型构建,提供了完整的日历功能实现框架,支持从简单的日程显示到复杂的时间轴项目管理等多种应用场景。系统日历部件不仅具备丰富的数据展示能力,还集成了强大的交互逻辑和扩展机制,是企业级应用中时间管理功能的要紧基础。

在线体验

点击访问iBizAppHUB示例系统查看日历部件更多场景
在这里插入图片描述

⚡ 提示:点击右侧调试工具栏,可直接查看指定视图在iBizModeling软件的配置。
在这里插入图片描述

模型体系架构

核心模型关系图

模型层级结构详解

1. PSSYSCALENDAR(日历部件模型)

作为日历部件体系的根模型,PSSYSCALENDAR 定义了日历的整体框架和基础配置。其核心属性包括:

PSSYSCALENDAR 经过引用 PSDATAENTITY 建立数据基础,依据 PSDETOOLBAR 集成操作工具,通过 PSCTRLLOGICGROUP 附加控制逻辑,形成了完整的日历功能框架。

2. PSSYSCALENDARITEM(日历部件项模型)

作为日历信息展示的核心,PSSYSCALENDARITEM 定义了具体的数据项部署:

  • beginpsdefidendpsdefid:时间范围定义,支持精确的时间区间控制
  • itemtype:项类型标识,拥护多数据源混合显示
  • psdeid:数据集所在实体
  • psdedsid:数据集引用,确保素材查询的灵活性
  • viewactions:操作控制集合,支持建立、编辑、删除等完整CRUD操作

通过每个日历项能够独立配置样式、颜色、图标等视觉属性,并支持拖拽编辑、上下文菜单等交互特性。

3. PSSYSCALENDARITEMRV(日历项引用视图模型)

该模型提供了日历项与详细视图的关联机制:

凭借引用视图机制,日历部件完成了从概览到详情的无缝导航体验。

4. PSSYSCALENDARLOGIC(日历部件逻辑模型)

逻辑模型为日历部件给出了动态行为控制:

  • triggertype:触发类型,支持定时器、视图事件、部件事件等多种触发方式
  • dstlogictype:目标逻辑类型,支持实体界面逻辑、体系预置逻辑、前端插件等处理目标
  • timer:定时器间隔,帮助周期性逻辑执行

逻辑模型使得日历部件可以根据业务规则动态调整显示内容、控制用户操作权限、构建复杂的交互流程。

关键技术特性

多数据源集成能力

PSSYSCALENDAR 支持通过多个 PSSYSCALENDARITEM 集成不同实体的数据,在同一个日历界面中显示来自多个业务模块的时间相关数据。例如,在任务管理系统可以同时显示任务计划、会议安排和资源预约。

灵活的视图配置

经过 calendarstyle 枚举,日历部件协助六种内置视图样式和用户自定义样式。每种样式都针对特定的启用场景优化:

强大的交互控制

通过 PSSYSCALENDARLOGIC 和 PSSYSCALENDARITEM 的协同,日历部件支持丰富的交互作用:

  • 拖拽调整时间:直接通过拖拽修改事件时间
  • 上下文菜单:右键快捷操作
  • 实时资料更新:定时器驱动的数据刷新
  • 条件显示控制:基于业务规则的动态显示

扩展性设计

模型体系通过插件机制(pssyspfpluginid)支持功能扩展,前端样式经过 PSSYSCSS 引用支持主题定制,确保了平台的可维护性和可扩展性。

DSL 代码实现示例

基于工具返回的模型信息,以下是完整的框架日历部件 DSL 实现示例:

//iBizModelDSL建模指令,目标:构建企业级项目管理系统日历部件
def de_project = "ProjectManagement.PROJECT"
def de_task = "ProjectManagement.TASK"
def de_meeting = "ProjectManagement.MEETING"
def mod_pm = "ProjectManagement"
// 主项目日历 - 月视图,支持多数据源
pssyscalendar(
psmoduleid: mod_pm,
codename: "ProjectMainCalendar",
name: "项目主日历",
psdeid: de_project,
calendarstyle: "MONTH",
navviewpos: "RIGHT",
navviewheight: 400.0,
navviewshowmode: 0,
enableedit: 1,
busyindicator: 1,
emptytext: "暂无日程安排",
pssyscssid: "System.CalendarTheme",
quickpsdetoolbarid: "ProjectManagement.QuickToolbar",
batpsdetoolbarid: "ProjectManagement.BatchToolbar"
){
// 项目任务项
pssyscalendaritem(
itemtype: "project_task",
name: "项目任务",
psdeid: de_task,
psdedsid: de_task + ".ActiveTasks",
beginpsdefid: de_task + ".PLAN_START_DATE",
endpsdefid: de_task + ".PLAN_END_DATE",
textpsdefid: de_task + ".TASK_NAME",
colorpsdefid: de_task + ".PRIORITY_COLOR",
bkcolorpsdefid: de_task + ".STATUS_BGCOLOR",
iconpsdefid: de_task + ".TASK_ICON",
enableviewactions: 1,
viewactions: 31, // 支持建立、编辑、查看、删除、拷贝
editmode: 1,
maxsize: 1000,
psdetoolbarid: "ProjectManagement.TaskContextMenu",
psdeviewbaseid: de_task + ".TaskDetailView"
){
pssyscalendaritemrv(
name: "edit",
psdeviewbaseid: de_task + ".TaskEditView"
)
pssyscalendaritemrv(
name: "view",
psdeviewbaseid: de_task + ".TaskDetailView"
)
}
// 会议安排项
pssyscalendaritem(
itemtype: "meeting",
name: "会议安排",
psdeid: de_meeting,
psdedsid: de_meeting + ".UpcomingMeetings",
beginpsdefid: de_meeting + ".MEETING_START_TIME",
endpsdefid: de_meeting + ".MEETING_END_TIME",
textpsdefid: de_meeting + ".MEETING_TITLE",
contentpsdefid: de_meeting + ".MEETING_AGENDA",
color: "#2E7D32",
bkcolor: "#E8F5E8",
enableviewactions: 1,
viewactions: 7, // 支持建立、编辑、查看
editmode: 0,
psdeviewbaseid: de_meeting + ".MeetingDetailView"
)
}
// 项目时间轴日历 - 用于项目进度跟踪
pssyscalendar(
psmoduleid: mod_pm,
codename: "ProjectTimeline",
name: "项目时间轴",
psdeid: de_project,
calendarstyle: "TIMELINE",
groupmode: "AUTO",
grouppsdefid: de_project + ".PROJECT_PHASE",
navviewpos: "BOTTOM",
navviewheight: 300.0,
enableedit: 1
){
pssyscalendaritem(
itemtype: "timeline_task",
name: "时间轴任务",
psdeid: de_task,
psdedsid: de_task + ".TimelineTasks",
beginpsdefid: de_task + ".ACTUAL_START_DATE",
endpsdefid: de_task + ".ACTUAL_END_DATE",
textpsdefid: de_task + ".TASK_NAME",
progresspsdefid: de_task + ".PROGRESS_PERCENT",
levelpsdefid: de_task + ".TASK_LEVEL",
enableviewactions: 1,
viewactions: 15
)
}
// 个人工作台日历 - 天视图,支持快速操作
pssyscalendar(
psmoduleid: mod_pm,
codename: "PersonalWorkbench",
name: "个人工作台",
psdeid: de_task,
calendarstyle: "DAY",
navviewpos: "NONE",
enableedit: 1,
quickpsdetoolbarid: "ProjectManagement.PersonalQuickToolbar"
){
pssyscalendaritem(
itemtype: "personal_tasks",
name: "个人任务",
psdeid: de_task,
psdedsid: de_task + ".PersonalTasks",
beginpsdefid: de_task + ".PLAN_START_DATE",
endpsdefid: de_task + ".PLAN_END_DATE",
textpsdefid: de_task + ".TASK_NAME",
colorpsdefid: de_task + ".URGENCY_COLOR",
enableviewactions: 1,
viewactions: 31,
editmode: 1
)
}

模型体系优势总结

iBizModel 系统日历部件模型体系通过层次化的模型设计和丰富的设置选项,为企业级应用提供了强大的时间数据管理能力。

http://www.jsqmd.com/news/36826/

相关文章:

  • 2025年节能空压机优质厂家推荐:永磁变频空压机/螺杆空压机/节能空压机/智能空压机/工业节能新选择
  • 推荐几家城际出行网约车公司
  • 实用指南:MySQL——联合查询数据表
  • WORK 4
  • 2025年知识付费软件平台不踩坑:五星推荐创客匠人,知识店铺搭建/知识内容变现系统/在线教育SaaS平台/线上卖课平台/AI赋能和陪跑服务双保障
  • 面向对象大作业之课程设计自主选题-第一次提交
  • 2025年专升本教育机构综合评估与推荐,上海专升本机构/山东专升本机构/免试专升本机构推荐
  • 啊?
  • Docker部署FileBrowser轻量网盘
  • 2025/11/10~2025/11/16 做题笔记 - sb
  • 校园二手物品交易平台
  • 微信小程序开发过程中,体验版调试模式是一个非常实用的功能,尤其适用于测试人员、产品或团队成员在正式发布前进行作用验证。以下是对微信小应用“体验版调试模式”的详细设置说明,包括操作步骤等
  • 【四级】全国大学英语四级历年真题及答案解析PDF电子版(2015-2025年6月) - 详解
  • OpenGL进化史:从实验室到现代图形革命的里程碑之旅
  • 提示词语料收集
  • 新手做幼儿园营养食谱公众号在哪找好看的素材?
  • C语言中的数据存储
  • 2025-11-10 早报新闻
  • 咋提宣讲
  • 20232428 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • 【模板】ccpc板子库
  • 20232428 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 详细介绍:P3375 【模板】KMP
  • 11月10号
  • 基于DP1323EL的电动车解锁方案:超高速读写,提升电动车一键解锁体验
  • 最强LLM生成代码也会出错?
  • 张量与向量
  • TCP的超时重传时间是如何计算的
  • 路径遍历漏洞实战指南:5种绕过技术与自动化测试
  • 实用指南:LLMs-from-scratch :KV 缓存