ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mendix中级认证培训案例-Vacation Tracking

2022-08-24 14:31:53  阅读:282  来源: 互联网

标签:Account Tracking 设置 Mendix 实体 Vacation 模块 微流 页面


Vacation Tracking

一、用户角色:

  • Administrator

    image-20220824102023876
  • Employee:

    image-20220824102106766
  • Manager:

    image-20220824102128690
  • Guest:

    image-20220824102148822

二、UserManagement模块:

0、模块角色

  • Manager
  • Employee
  • Guest

1、Domain model

默认自带Administration模块中有Account实体。

需要给账号设置头像,系统默认自带Image实体。

  1. 1 创建ProfilePicture实体,继承Image实体,并与Account实体建立1对1关联
image-20220823175439651

1.2 在Account所在模块Domain Model中进行安全性更新

image-20220824091517125

2、账号管理页面

2.1 Overview

image-20220824092114357
  • ListView绑定数据库中Account实体。

  • Dynamic Image绑定Account实体关联的ProfilePicture实体。

  • Overview页面设置为对Manager可见。

  • 对Account实体设置Administrator角色(Administration模块内)权限:

    image-20220824094933484
  • 对ProfilePicture实体设置Manager角色(UserManagement模块内)权限:

    image-20220824095143275

2.1 新增用户

  • 复制Administration模块中的NewAccount微流,在其基础上为账号添加关联的头像实体并保存。

image-20220824093443980

  • 微流权限设置为Manager

2.2 编辑用户

  • 点击Edit按钮携带对应Account对象进入编辑页面,复用Administration模块中编辑用户页面Account_Edit,添加DataView展示ProfilePicture信息并提供图片上传功能。
image-20220824093825216
  • Account_Edit页面权限设置为Manager

2.3 删除用户

  • 在ListView中的一行数据中添加Delete按钮,On Click选择Delete。
image-20220824094239303

2.4 添加导航

image-20220824095953305

3、个人账号页面

3.1 修改个人信息

  • 对Account实体设置User角色(Administration模块内)设置权限:

    • 对所有User

      image-20220824101047162
    • 对于当前登录用户,可修改自身Account对象信息。Xpath约束:[id='[%CurrentUser%]']

      image-20220824101239359
  • 在导航栏添加修改个人信息的入口:

    image-20220824100352153
  • 复用Administration模块中ManageMyAccount微流。微流权限设置为Employee:

    image-20220824100513385
  • 复用Administration模块中MyAccount页面,添加存放ProfilePicture对象的DataView组件用于修改头像。页面权限设置为Employee:

    image-20220824100628923

4、匿名用户

4.1 匿名用户浏览页面

  • 开启匿名用户,为匿名用户分配角色:

    image-20220824101534148
  • 创建为匿名用户提供的浏览页面,页面权限设置为Guest:

    image-20220824101712321
  • 将默认主页设置为匿名用户访问页面,并为其他用户设置对应主页:

    image-20220824101827440

    image-20220824101912106

4.2 匿名用户注册

  • 创建用于存放注册信息的实体Registration,由于暂时使用选择Persistable-No:

    image-20220824102646635

  • 对Registration实体设置Guest角色(UserManagement模块内)权限:

    image-20220824102751335

  • 设置登录页面:

    image-20220824102317039
  • 创建用户注册微流及注册信息输入页面,微流及信息输入页面权限设置为Guest:

    • 点击注册按钮,创建Registration实体,打开信息输入页面:

      image-20220824103228203 image-20220824103300949
    • 完成信息输入,点击Save保存,触发用户创建微流,其中验证输入信息,创建Account对象并存储用户信息,并创建关联ProfilePicture对象:

      image-20220824103450208

三、VacationManagement模块:

0、模块角色

  • Manager
  • Employee

1、Domain model

  • 请假申请包含在VacationRequest实体中:

    image-20220824104721326
  • 一个请假申请中的日期区间可拆分为一个个请假日对象(1对多关系),在请假日对象中可以设置每日请假时长:

    image-20220824104912158
  • VacationRequest请假申请实体关联Account用户实体,涉及申请者和审批者两个属性,设置两个不同关联:

    image-20220824105236926

2、申请者

2.1 Overview

  • 创建页面,使用两个ListView组件,其中一个使用Xpath进行时间上的约束只展示未来的请假申请:

    image-20220824105504601 image-20220824105647339
  • 对VacationRequest设置Employee角色(VacationManagement模块内)权限:仅当该请假申请对应的申请者为当前用户时才可读可写,Xpath约束:[VacationManagement.VacationRequest_AccountRequestor='[%CurrentUser%]']

    image-20220824113550023

2.2 休假申请向导流程

  • 创建向导页面:

    • Step1:

      image-20220824105813510
    • Step2:

      image-20220824105835461
    • Step3:

      image-20220824105852996
  • 创建微流:

    • 第一页输入请假起止日期、类型、描述信息等,点击Next触发Step1微流:

      • 首先进行数据校验:日期非空,区间正确等
      • 根据起止日期区间,拆分每日创建VacationRequestDay对象:循环创建对象、解决往返操作后对象的重复创建(删除无用对象、创建对象前检查是否已创建)、根据请假日是周几确定当日请假时长
    • 第二页根据VacationRequest对象找到关联的VacationRequestDay对象并使用ListView展示,点击Next触发Step2微流:

      • VacationRequest对象找到关联的VacationRequestDay对象列表,使用Aggregate List节点进行聚合统计总请假时长,并存储在VacationRequest实体字段中
    • 第三页展示请假信息,用户确定后点击Submit提交触发Step3微流:

      • 改变VacationRequest的状态字段,并为当前VacationRequest对象设置审批者关联对象,提交保存。

3、审批者

3.1 Overview

  • 创建页面,使用Data Grid组件和数据源添加限制分页展示不同状态的请假申请。页面权限设置为Manager:

    image-20220824112644321 image-20220824112712929
  • 在Data Grid中添加Action按钮并设置为Default并绑定审批页面,使得双击一条数据时触发Action按钮并携带该条数据对象打开审批页面,页面权限设置为Manager:

    image-20220824112947495
  • 对VacationRequest实体设置Manager角色(VacationManagement模块内)权限:可读,仅可修改请假申请的状态

    image-20220824113739107

3.2 通过or拒绝

  • 在审批页面点击Approve或Reject按钮,触发审批通过或审批拒绝微流,微流中改变VacationRequest的状态并提交保存。微流权限设置为Manager。

四、Notification模块

0、模块角色

  • Manager
  • Employee

1、Domai model

  • 创建Notification通知实体:

    image-20220824140051565
  • 建立Notification与VacationRequest一对一关联,一个请假申请对应一个通知实体。建立Notification与Account一对多关联,一个通知实体既可以发给审批者也可以发给申请者:

    image-20220824140309538

2、页面内自定义菜单

  • 分别建立两个页面用于显示未读新消息和已读消息,共用一个自定义菜单,选择选项打开对应页面:

    image-20220824140500320 image-20220824140526705

3、新通知

  • 使用Data Grid展示通知,数据源使用Xpath过滤选择属于当前用户且未读的通知:[not(Read) and Notification.Notification_Account = '[%CurrentUser%]']

  • 标记已读:设置Data Grid中Default button打开编辑页面,选择Read触发微流改变当前Notification是否已读状态并保存刷新:

    image-20220824140839196 image-20220824140858986

4、已读通知

  • 使用Data Grid展示通知,数据源使用Xpath过滤选择属于当前用户且已读的通知:[Read and Notification.Notification_Account = '[%CurrentUser%]']

标签:Account,Tracking,设置,Mendix,实体,Vacation,模块,微流,页面
来源: https://www.cnblogs.com/lizhihang/p/16619769.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有