openmeetings(四)

本文详细分析了OpenMeetings项目中的日程表功能,特别是`appointmentlogic`文件,该文件负责处理预约逻辑,包括创建数据库中的invitation并发送通知。通过检查`db`目录下的数据库操作,可以看到如何实现按照计划提醒用户开始会议的功能。代码中通过定时任务检查即将开始的会议,并发送提醒邮件。此部分代码实现了日程读取和消息通知的逻辑。
摘要由CSDN通过智能技术生成

2021SC@SDUSC

openmeetings项目分析(四)

1.介绍

前两篇文章分析完了flash目录下的代码,今天来看看核心部分service目录下,系统提供了哪些功能以及这些功能是怎么实现的。今天主要是分析第一个子目录calenda,日程表功能,可以按照计划完成通知对方开始meeting的操作

2.项目目录

项目目录
和上一个小项目一样,主要的代码在src/main/java/org/apache/openmettings下,我们可以看到service目录下有五个子目录,里面对应着整个系统的五个功能:日历、信息邮件,通知,表和房间。
我们先来看calendar目录下实现了哪些功能
在这里插入图片描述
我们先来看appointmentlogic这个文件
好卡
该项目采用了spring 框架,所以很明显看@Component等注解,在我们的代码中调用了db文件下的类,所以我们先看看db文件夹。
在这里插入图片描述
这里包含了对invitation的数据库操作
在这里插入图片描述
预约逻辑中,通知对方,先在数据库中创建invitation,然后发送通知给对方。

public void doScheduledMeetingReminder() {
		String baseUrl = getBaseUrl();
		if (baseUrl == null || baseUrl.length() < 1) {
			log.error("Error retrieving baseUrl for application");
			return;
		}
		int minutesReminderSend = cfgDao.getInt(CONFIG_APPOINTMENT_REMINDER_MINUTES, DEFAULT_MINUTES_REMINDER_SEND);

		if (minutesReminderSend == 0) {
			log.warn("minutesReminderSend is 0, disabling reminder scheduler");
			return;
		}

		long milliseconds = minutesReminderSend * 60 * 1000L;
		Calendar start = Calendar.getInstance();
		if (milliseconds < 0) {
			start.setTimeInMillis(start.getTimeInMillis() + milliseconds);
		}
		Calendar end = Calendar.getInstance();
		if (milliseconds > 0) {
			end.setTimeInMillis(end.getTimeInMillis() + milliseconds);
		}

		for (Appointment a : appointmentDao.getInRange(start, end)) {
			// Prevent email from being send twice, even if the cycle takes
			// very long to send each
			if (a.isReminderEmailSend()) {
				continue;
			}
			TimeZone ownerZone = getTimeZone(a.getOwner());
			Calendar aNow = Calendar.getInstance(ownerZone);
			Calendar aStart = a.startCalendar(ownerZone);
			aStart.add(Calendar.MINUTE, -minutesReminderSend);
			if (aStart.after(aNow)) {
				// to early to send reminder
				continue;
			}
			// Update Appointment to not send invitation twice
			a.setReminderEmailSend(true);
			appointmentDao.update(a, null, false);

			List<MeetingMember> members = a.getMeetingMembers();

			sendReminder(a.getOwner(), a);
			if (members == null) {
				log.debug("doScheduledMeetingReminder : no members in meeting!");
				continue;
			}
			// Iterate through all MeetingMembers
			for (MeetingMember mm : members) {
				log.debug("doScheduledMeetingReminder : Member " + mm.getUser().getAddress().getEmail());

				Invitation inv = mm.getInvitation();

				sendReminder(mm.getUser(), a, inv);
			}
		}
	}

剩下的部分是按照schedule依此去完成remind操作

总结

预约逻辑这个文件封装了消息通知及日程读取的操作,实现了按照日程规化通知对方的功能

Openmeetings提供视频会议,即时消息,白板,协作文档编辑和其他组件软件工具。它使用Media Server的API函数进行远程和流媒体Kurento。 OpenMeetings是一个多语言可定制的视频会议和协作系统。它支持音频、视频,能让你查看每个与会者的桌面。OpenMeetings还包含一个白板,通过白板可以导入各种格式的图片和涂鸦。 功能细节: 音频和视频会议 有个使用OpenMeetings音频/视频功能的选项,您可以在会议期间选择它们。 音频+视频 仅音频 仅视频 仅图片 另外,您可以更改视频/音频质量,选择多个摄像机分辨率(4:3、16:9或3:2),然后选择输入设备。 会议录制和屏幕共享 录制的会议包含一切内容,包括从所有音频流中录制的声音,完全按照您在会议中看到的方式进行。 录制的会话可以下载为AVI / FLV文件。 可以选择共享的屏幕区域。 屏幕共享的不同质量步骤。 在集成的拖放文件资源管理器中观看和整理录音 文件管理器 每个会议室都有高级File-Explorer,拖放界面用于管理上载的文件,包括使用文件夹创建文档树的可能性。 File-Explorer中的私有和公共驱动器。File-Explorer有两个不同的视图,一个是Private Drive,另一个是Public Drive。专用驱动器始终包含相同的文件。这些文件仅对当前登录的用户可见。公共驱动器不与用户绑定,而是与会议室绑定。会议室中的所有用户都可以访问公共驱动器。 审核系统 在会议期间,主持人可以针对每个用户分别调整用户权限。  允许/拒绝审核  允许/拒绝权利在白板上绘画  添加/删除演示者角色  允许/拒绝屏幕共享/记录屏幕  允许/拒绝远程控制屏幕  允许/拒绝“静音其他人”权限  让其他用户静音时让一个用户讲话  允许/拒绝视频  允许/拒绝音频 Multi白板和聊天 在Multi白板中,您可以添加新的白板实例,每个白板中都可以包含所有工具和文档。 保存白板。您可以将每个白板实例另存为一个文件。该文件位于File-Explorer中,可以再次拖放到白板上,并且可以像其他任何文档,图像或文件夹一样组织。 带有绘图,书写,拖放,调整大小,图像(来自File-Explorer的拖放),Symbol / sCliparts的白板。 Full-fit确实会重新缩放屏幕上的文档,使其在所有屏幕上均100%可见,无论不同用户使用哪种屏幕分辨率。 您可以导入各种文档格式(PDF,DOC,ODT,PPT等) 用户和房间管理 您可以在单个OpenMeetings实例中管理用户和多个组织。您还可以创建只能通过SOAP-API进行访问的用户。 MyRooms部分。默认情况下,每个用户都有2个私人房间,该房间始终仅供该用户访问。有一些按钮可从仪表板进入这些房间。 您可以将会议室分配给所有用户,也可以仅将它们分配给特定的用户组。 私人留言中心 向用户发送消息并将其组织在文件夹中。您可以通过发送私人消息预订会议室。预订的活动将自动出现在您和参与者的日历中,对该活动的更改将填充到预订该活动的所有用户中。 用户联系人,您可以搜索用户并将其添加到您的联系人中。您甚至可以授予他们查看日历的权利。 使用集成的日历计划会议 计划您的会议并邀请OpenMeetings或External的与会者。 被邀请的与会者将收到一封包含会议详细信息的电子邮件,以及带有安全哈希表的会议室链接。 与您的联系人共享您的日历。 投票和投票 您可以使用是/否或1-10个问题创建民意调查,让用户投票并查看投票结果。 可以存储民意测验并将结果显示为饼图 后备 您可以将所有用户生成的数据(包括用户上传的文件)备份到一个ZIP文件中,然后将该ZIP导入到新安装的OpenMeetings中。 使用者介面: 翻译得到改善 邀请表显示客户所在时区的时间 使用JS Notification API显示通知 视频窗格的大小可以是固定的,并且可以按用户配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值