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

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

引言

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

🌐 在线体验

点击访问iBizAppHUB示例系统查看日历部件更多场景

⚡ 提示:点击右侧调试工具栏,可直接查看指定视图在iBizModeling工具的配置。

模型体系架构

核心模型关系图

PSSYSCALENDAR PSSYSCALENDARITEM PSSYSCALENDARLOGIC PSSYSCALENDARITEMRV PSDATAENTITY PSDETOOLBAR PSCTRLLOGICGROUP PSSYSCSS PSDEDATASET PSDEFIELD PSDEVIEWBASE PSDELOGIC PSDEUIACTION d

模型层级结构详解

1. PSSYSCALENDAR(日历部件模型)

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

  • calendarstyle:日历样式枚举,支持天(DAY)、周(WEEK)、月(MONTH)、时间轴(TIMELINE)等多种显示模式
  • navviewpos:导航视图位置控制,支持右侧、下方等多种布局方式
  • groupmode:数据分组模式,支持自动分组、代码表分组等高级功能
  • psdeid:关联的实体模型

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

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

作为日历数据展示的核心,PSSYSCALENDARITEM 定义了具体的数据项配置:

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

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

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

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

  • psdeviewbaseid:关联的实体视图,支持点击日历项跳转到详细页面
  • name:引用模式定义,控制视图打开方式
  • viewparams:视图参数传递,支持上下文数据传递

通过引用视图机制,日历部件实现了从概览到详情的无缝导航体验。

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

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

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

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

关键技术特性

多数据源集成能力

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

灵活的视图配置

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

  • 天视图:适合精细的日程安排
  • 周视图:平衡细节和概览
  • 月视图:提供长期规划视角
  • 时间轴:适合项目进度跟踪
  • 复合时间轴:结合时间轴和传统日历优势

强大的交互控制

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

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

扩展性设计

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

DSL 代码实现示例

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

groovy 复制代码
//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 系统日历部件模型体系通过层次化的模型设计和丰富的配置选项,为企业级应用提供了强大的时间数据管理能力。

相关推荐
iBizModel4 天前
iBiz建模:为iBizPLM构建GitLab集成插件
gitlab·ibizmodeling
iBizModel21 天前
iBizModel 实体图表(PSDECHART)模型详解
ibizmodeling
iBizModel1 个月前
iBizModel 全文检索体系(PSSYSSEARCHSCHEME)模型详解
全文检索·ibizmodeling
iBizModel1 个月前
iBizModel 工具栏(PSDETOOLBAR)与应用菜单(PSAPPMENU)模型详解
ibizmodeling
iBizModel1 个月前
iBizModel 树视图(PSDETREEVIEW)模型体系详解
ibizmodeling
iBizModel1 个月前
iBizModel 应用程序(PSSYSAPP)模型体系详解
ibizmodeling
iBizModel1 个月前
iBizAppHUB前端框架示例(1)-多应用融合
ibizmodeling