通用流程模型(共4篇)
通用流程模型 篇1
我们开发了一套电费管理信息系统,这个系统要将辖区内近十万只不同级别的电表及用电单位和用电个人的基本信息统一管理,并按照用户的类型进行定期或者不定期地抄表、收缴电费等。此系统中包括抄表信息统计、电费欠费信息统计、用户缴费信息统计、用电量分类汇总、收缴电费分类汇总等各种报表45个,并在日后的实际工作中有可能增加。在此系统的开发过程中,我们使用Delphi 2005作为开发工具,使用FastReport报表组件开发报表模块,并按照用户的要求,采用SQL Server 2000作为后台数据库系统。我们在此系统中采用了这个通用报表模块模型。
1 报表设计及报表数据填充
由于本系统中各个报表采用统一的处理流程,每个报表在要输出的数据列的数量及内容都有差别,需要采用交叉报表来实现。报表的设计过程大体如下:
(1)在Delphi开发环境中,在窗体设计模式,向报表打印界面的窗体上增加TfrxReport、TfrxCxObject、TfrxXLSExport三个控件的实例,其中TfrxXLSExport用于将报表导出为Excel文件。
(2)双击TfrxReport的实例打开报表设计器,向报表中添加“报表抬头”及“主数据”两个Band。
(3)在“报表抬头”中添加一个“文本对象”,用于显示报表标题。
(4)在“主数据”Band中添加一个“交叉表对象”,如图1所示。
(5)设计完毕之后需要将报表模板保存为fr3文件。
返回报表打印界面的窗体设计界面,对TfrxReport的实例添加OnBeforePrint事件的相应函数,并添加代码如下:
2 模型相关界面实现
图2是报表管理的界面,此界面集中管理所有的报表,其中左侧树状视图分类列出了当前用户拥有权限的报表,右侧显示用户在左侧选择的报表的标题以及报表说明,分别对应S_Report数据表中ReportName和ReportDescription字段的值。用户在选择报表并点击“确定”按钮之后,将进入报表打印界面,如图2所示。
报表打印界面根据S_Report中当前报表对应的记录,生成SQL语句并提交数据库执行进行查询,将数据库返回的数据显示在界面上。同时界面的上方有一排按钮,用户可以对报表进行各种修改,其中包括“项目选择”和“数据选择”。分别点击这两个按钮之后弹出“项目选择”界面和“数据选择”界面。
项目选择界面如图4所示,这里左侧列出了当前报表候选字段列表(对应S_Report表中的FieldsName和FieldsAlias的值),右侧是用户已经选择的字段列表(对应SqlFields字段的值)。通过此界面用户可以选择要在报表中输出的字段列表。用户操作的结果将保存着S_Report表中。
数据选择界面如图5所示。数据选择操作允许用户对数据进行筛选,只在报表中输出符合某些条件的记录。此界面中,用户可以对当前报表候选字段列表中任意字段的数据进行过滤,只需要在界面上方的“字段”下拉列表选择要过滤的字段,在“关系”下拉列表中选择比较关系(大于、小于、等于等),在“值”下拉列表中选择或者输入比较目标,然后点击“添加”按钮,即可添加一个过滤条件,多个过滤条件之间是“与”或者“或”的关系。系统根据用户操作产生的过滤条件组合生成一条SQL过滤语句,此语句将作为S_Report中SqlWhere字段的值保存下来。
通过报表打印界面,用户还可以进行纸张类型设置、打印方向设置、更改列宽等操作,用户的操作都将保存在数据库中,下次打印报表的时候会使用已经保存的信息进行报表输出,避免用户每次打印报表时都需要重新设置的重复劳动。设置好之后系统将根据用户设定的条件重新获取数据,之后就可以进行打印输出了。
3 结语
本文简要介绍了FastReport报表组件,设计并实现了一个通用报表模块模型,并将此模型应用于本文作者开发的电费管理信息系统中。在实际开发的过程中,我们认为FastReport功能十分强大,使用起来十分灵活、方便。我们的通用报表模块模型,能够满足不同系统不同用户的需求,允许系统开发者或者系统管理员在不更改系统源代码的前提下对系统中的报表进行增加或者修改,并允许最终用户在打印输出时控制报表的数据和输出格式,十分灵活。此模型不依赖具体的应用,具有通用性,可以应用于其他的管理信息系统。
参考文献
[1]韩雨,董丽丽.基于FastReport图片报表的设计与实现[J].电脑知识与技术,2008(34)
[2]杜恒杰.基于FastReport的高校学生管理系统报表的设计与实现[J].科技信息,2008(35)
[3]周一,王世耕,黄忠全等.基于FastReport的通用报表系统的设计与实现[J].计算机应用与软件,2008,25(2)
通用流程模型 篇2
根据首都医科大学支教团的指导意见和燕京医学院的要求,我院对燕京医学院临床医学专业实习学生教学查房工作流程安排如下:
按照教学查房安排,科室教学干事和查房老师提前安排教学查房病例,选择典型的病人,讨论教学查房的工作实际安排,根据病房患者的情况适当微调。
各教研室根据教师的实际情况,安排具有丰富的教学经验的授课教师教学查房。
教学查房前带教老师书写教学查房教案、制作课件、选择典型病例、准备好相应的辅助检查结果。教学干事对教学查房教案的格式、具体内容等和授课教师进行沟通。
教学查房模式和内容按照大纲要求和首医支教团的指导意见进行,课间实习大体分分三个阶段:
1、第一阶段
在示教室或病房, 约 15分钟,提出实习方案和程序,学生报告病历;教师点评。带教老师简要说明此次教学查房的病种,复习基本概念和临床特点,介绍本病种问诊、查体的内容及注意事项。
2、第二阶段
在病房, 约30-40分钟,教师带领学生在床边问诊, 核实病史和病情经过。查体:学生操作实践,学生点评、教师点评、指正、示范。以学生代表问诊和查体为主,带教老师引导其它学生补充,带教老师进行点评和纠正,给与规范和正确的示教。同时带教老师要注意爱伤观念的言传身教,注意患者及家属的情绪变化,密切关注患者病情的变化,避免带教导致医患的不和谐及给患者带来不便。同时注重“三严”(严肃的态度、严密的方法、严格的要求)的科学精神。
3、第三阶段
在示教室讨论阶段 , 约 100 分钟,讨论诊断、诊断依据和鉴别诊断,讨论合理的治疗方案/医嘱,讨论预防措施/预后/随访评估,小结与思考题。采取启发式教学法,以问题为中心展开讨论。
3.1学生代表汇报问诊和查体的内容。3.2老师引导学生总结病例特点、3.3老师引导和启发学生提出必要的辅助检查项目及其理由,分析和判断辅助检查的结果,有何临床意义;教师给出正确答案。
3.4老师引导和启发学生提出初步诊断、诊断依据和鉴别诊断。3.5老师引导和启发学生提出合理的治疗方案,治疗措施和预防措施。
3.6老师引导和启发学生如何判断预后、观察病情和进行随访。
此阶段教师不断地进行启发、引导、提问、组织讨论、归纳和小结,师生互动,教师答疑。解决问题前,先教会学生分析问题的方法,尽量选取典型的问题,使学生在解决问题的,过程中尝到成功的喜悦
通用线程模型研究 篇3
在现代应用程序中, 为了用户界面的更加友好, 程序运行的更加流畅, 使用多线程进行任务的处理已经是主流的选择。但是多线程程序开发中, 我们往往会遇到以下问题:
(1) 在访问共享的数据时, 使用加锁方式实现。但这种方式在程序规模增长到一定程度后, 会不可避免地带来程序的低效、死锁等问题。 (2) 简单地为每个耗时的任务创建一个线程;这种模式首先造成资源的浪费, 其次当大量线程被创建出后, 会耗尽系统的资源从而导致系统变慢或死机;即使是正常关闭, 大量线程在关闭时的等待也将是一个漫长的过程。 (3) 任务执行完后, 通过回调通知发起者任务, 但可能发起者已被销毁, 从而导致程序的崩溃。
采用线程模型, 及约定开发人员以事先制定的模式工作, 能避免上述问题。线程模型的设计目标概括为以下几点:
(1) 除了在线程模型的管理和调度模块, 整个应用程序避免使用任何形式的锁。这样能避免程序低效、死锁等问题。 (2) 线程模型应提供能动态调整的线程池来执行用户提交的任务。 (3) 线程模型应提供统一的接口让用户提交任务、设定定时任务、设定任务过期条件、取消任务、存储任务和提供回调等, 避免在每个模块做同样的工作。 (4) 合理调度任务, 保证共享数据的安全。 (5) 线程模型应管理每个服务和回调的生命周期, 使应用程序避免崩溃。
如图1所示, 用户任务通过线程模型接口提交, 提交过程是异步的, 可立即返回;任务通过线程模型接口, 添加到服务存储和管理队列;任务分派程序会选择合适的任务提交到线程池中, 执行用户的任务, 完成时调用回调函数;通过生命周期管理, 当回调的对象销毁时, 自动取消回调。
1 线程模型的组成部分及其功能
一个完整的线程模型至少应包含以下组成部分:
(1) 线程模型接口; (2) 任务存储和调度线程的管理; (3) 任务的分派; (4) 线程池的管理; (5) 线程模型的辅助设施。
1.1 线程模型的接口
1.1.1 创建线程模型管理
线程管理模块在主程序入口处被创建。确保用户的各个模块都能调用到线程模型的各种接口。
1.1.2 销毁线程模型管理
线程管理模块在主程序出口处被销毁。销毁时, 线程管理模块保证正在被执行的任务执行完, 同时取消正在队列中等待的所有任务。
1.1.3 添加一个新的任务
线程模型提供辅助设施来协助用户创建任务。任务将有6个属性:command, callback task_id, group_id, priority和timeout。
1.1.4 设定任务分组
如果有些任务需要访问共享的数据, 这些任务将按顺序被放入线程池执行, 避免多线程同时访问共享数据。通过给这些任务赋予相同的ID, 任务分派模块就会自动的将相同ID的任务顺序放入线程池。
1.1.5 设定任务回调
任务回调在任务执行完成后被工作线程调用, 回调过程如需线程切换, 可通过线程模型的辅助设施来实施。
1.1.6 设置任务优先级
每项任务都有自己的优先级, 高优先级的任务将优先被放进线程池执行。
1.1.7 任务超时
有的任务会有一个执行的期限, 如超过这个期限, 回调函数将被执行。
1.1.8 取消任务
用户发起任务后, 在等待任务执行的过程中, 可能需要取消任务。此时, 如任务在等待的队列中, 任务将被删除。如任务已在线程池中被执行, 则断开该任务连接的回调函数。
1.1.9 重试任务
在某个任务失败后, 回调函数会通知用户此次执行失败和失败的原因。用户可通过重试该项任务, 重新将任务发送到存储队列中等待执行。
1.1.1 0 预约任务
用户希望在一段时间后启动某些项任务, 需要接口支持预约任务。
1.2 任务存储和调度线程的管理
1.2.1 任务及其回调的存储
采用多索引容器 (boost::multi_index_container) 形式来存储任务, 同时按照task id, priority和group id为任务建立不同的索引。这样, 不但在查找相应任务时效率更高, 而且也保证了插入或者删除数据时候的效率。[1]
1.2.2 任务管理及回调
(1) 由于用户可能在任意的线程调用线程模型, 来添加希望的服务。为避免本文开始提到的对共享数据加锁的问题, 需将任务的添加工作切换到任务管理线程执行。 (2) 维护用户任务的状态, Scheduling, Pending or Processing也需在管理线程进行。 (3) 在回调发生的时候, 需移除相应任务并触发用户预先设定的回调。回调必须在管理线程中执行, 需检查管理线程中该任务是否被取消。 (4) 用户可能不断添加新任务, 线程池会添加任务完成的事件到管理线程。同时, 用户可能会取消之前添加的任务。以上操作会影响到共同数据, 因此必须按顺序执行。但这样会导致大量添加新任务的操作, 导致分派任务一直无法得到执行;在这种情况下, 管理线程一直处于忙碌状态, 但是线程池却处于空闲状态。因此, 对于不同的任务的添加, 也需设定优先级。一般来说, 完成任务的优先级设为Medium, 用户取消任务的优先级设为High, 而添加任务的优先级设定为Low。
1.2.3 防止任务无限制占据线程
对线程模型来说, 用户创建的任务是不可控的。因此, 会发生由于用户任务错误导致线程池的线程进入死循环, 使得线程丧失继续服务的能力。线程调度管理程序如不能及时发现死去的线程, 将有可能导致线程池所有线程被占用, 从而导致用户所有任务均无法执行。一般可以记录上次该线程回调发生的时间。如超过指定时间范围而无响应, 可强制该线程关闭后重启或者关闭相应任务, 并重新添加线程到线程池。
1.2.4 定时器组件
为实现用户预约任务, 必须实现Timeout部件, 并在到期时, 将回调的执行过程控制在管理线程中。实践中, 可考虑用Boost::asio::deadline_timer。
1.2.5 内存池的管理
当等待任务多时, 增加线程池中线程的数量。当等待队列很少或为空时, 减少线程数量。增加减少不宜太频繁。一般根据一段时间内处理的任务数来决定开启的线程数。
1.2.6 任务回调的生命周期管理
对于回调任务, 一般需做两件事。第一, 确保回调发生在指定线程。这一点, 1.4节将会专门讲述。第二, 确保回调所依赖的对象存在;如所依赖的对象已被销毁, 那么就取消该回调。实现可采用boost::signal模式, 只要求回调所依赖的目标对象从boost::signals::trackable[2]派生即可。
1.3 任务的分派
任务的分派需要遵循以下原则:
(1) 分派单元的运行需确保在任务管理线程中执行。 (2) 分派单元按优先级取任务, 放入队列中执行。 (3) 如果标记为某个group id的任务已在线程池中运行, 那么该任务结束前, 同样group id的任务不能被再次放入。 (4) 添加任务时和complete task时均可尝试重新分派任务。
1.4 线程池的管理
线程池需提供的功能有:
(1) 启动指定数目的线程。 (2) 任务能够通过接口添加到线程池的队列中。 (3) 运行时动态增减线程数量。 (4) 退出时确保运行中的任务执行完毕。
1.5 线程模型的辅助设施
线程模型需要提供的辅助设置有:
(1) 创建任务。 (2) 创建回调命令。 (3) 提供Factory机制, 使目标线程可以注册相应的命令到Factory。该命令可将任意命令切换到线程执行。
2 线程模型的执行过程
线程模型执行的过程如图2所示。
线程模型的使用者通过接口创建线程模型并拿到需要的接口。通过线程模型提供的辅助函数生成任务后, 调用线程模型接口, 把任务添加到线程模型管理的任务队列。管理线程, 在任务队列不为空时, 选择合适的任务, 并将完成任务的事件和任务命令绑定。将组装好的命令放入线程池中去运行。执行完毕后, 完成任务的事件被触发, 并切换到管理线程。该事件将进行下一轮任务分派。
3 线程模型优化策略
对于不同的应用场合, 线程模型有着不同的优化策略。优化策略一般考虑的环节有:
(1) 是否充分利用每个线程的执行能力。 (2) 是否最大限度地减少了任务在线程之间的调度。 (3) 有些任务只读共享的数据, 有些需写那些数据。如果能将读写任务区分对待, 那么读数据的任务就可以同时添加到线程池中。 (4) 调度管理程序处理添加和完成任务的优先顺序, 及任务的存储结构。 (5) 任务队列的动态规划。
4 总结
无论在客户端UI编程, 还是在服务端编程, 线程模型都是一个非常重要的设施, 能提高程序的稳定性和可维护性。对于规模较大的系统, 这是一项非常重要的基础设施。本文结合在工程中的实践经验, 详尽分析了设计一个线程模型时需考虑的目标、结构、接口及模型的工作流。实践中, 这种线程模型能帮助应用程序简化设计, 提高稳定性, 提升效率。
摘要:本文详细描述了在实际商业系统上的通用的线程模型, 通过阐述其设计目标、工作原理、组成结构以及优化策略, 详尽的对线程模型进行了解读, 同时阐明了使用线程模型的优点和必要性。
关键词:线程模型,BOOST,ASIO,线程池
参考文献
[1]王凤岭.分布式操作系统中线程包实现方法的对比研究[J].南宁职业技术学院学报, 2004 (04) .
[2]陈矫阳, 陈楸, 刘桓龙.基于LabWindows/CVI多线程数据采集的研究[J].科学技术与工程, 2008 (09) .
[3]周仕祥, 刘伯恕.Boost功率因数校正器的效率和空载损耗研究[J].电力电子技术, 2003 (03) .
ktv通用工作方案流程 篇4
班前准备:
根据公司要求统一着装,佩带工号牌,并整理个人仪容仪表须达到公司标准;
提前20分钟到达指定地点参加班前例会,了解公司是否有新的指示及公告,并予以严格执行,同时了解当天自己所在区域和分配之
一、接管岗位前:
1、检查仪容仪表:确保头发干净整齐,制服清洁平整,工牌佩带在右胸位置。
2、检查工作用具:打火机、开瓶器、笔、钳。
3、检查六合一摆放:两张店卡、三张客户意见卡、两包纸巾,一次性话筒套。摇铃,酒水杯,骰盅,话筒线,烟缸,垃圾桶的摆设。
4、微笑:是否有由衷的笑。
5、水吧必须每天清算酒水的数量,酒水不足时必须通知领班。
二、工作中:
作好迎客准备:
按通知房间待客,将房间效果灯打开,并开启包房内的投影,电脑,检查麦克风及包房内各种物品是否齐全迎接客人到来。
(一)、首次进房:
1、迎客:
主动礼貌问候客人:欢迎光临。
2、介绍音响点歌使用方法:
待客人进房后,反身关闭房门后:
1)介绍音响系统:请问点歌方法您熟悉吗?
2)如客人不清楚(使用半蹲式服务姿态)指示显示器介绍,本公司触摸点歌系统,按屏幕上方相应的提示键,选择您喜欢的点歌方式就可以了,请问您清楚了吗?如果客人仍不清楚应进一步解释。如客人清楚,省略介绍音响及电脑点歌系统使用方法。
3、为客人拿麦克风:
将房间内的麦克风套上一次性麦克风套后,将麦克风拿给客人。
4、通知总台:
第一时间通知总台该包房已开
(二)、二次进房:
1、请客人签单:
待接到包房单后,敲门两声进房间;在房门靠向客人侧礼貌询问客人:您好,请问哪位确认一下单。得客人应答后,半蹲姿态递上包房单,请客人签字确认。
(三)、区域巡视:
1、中场巡视:
服务员走动巡视包房的客人情况和动态,巡视姿态礼貌、文雅:切忌不可探头探脑,应以借为客人关闭房门为理由观察房内动态。如发现包房内有餐具水具、酒水筐和空酒瓶要及时收撤。(餐具:对不起,打扰了,请问您还需要用吗?为您撤一下,谢谢。/酒水筐:对不起,打扰了,为您收一下酒水筐可以吗?谢谢/对不起,打扰了,为您撤一下酒瓶可以吗?谢谢/通用语言:对不起,打扰了,为您收拾一下可以吗?谢谢)如发现异常情况时(黄、赌、毒),马上通知管理人员,迅速处理。
2、路遇客人,客人问询:
当与客人相遇时,侧立一侧向客人问好致意(您好)如遇客人询问卫生间或超市等其他事项,礼貌为客人指引及解答。采用传递式服务将客人引领至目的地并及时配合临近区域内的服务工作。如客人对价位进行问询时回答严密准确。
3、经常性走动巡房,尽量做到客人无须按服务灯。
4、点水吧或出品部出品:
客人需要在包房内点水吧出品时,下酒水单并将酒水单副联迅速交给水吧工作人员制作果品、饮品.水吧出品与房费共同结算.若水吧估清哪类酒水,立即告诉客人,请求客人换其他酒水。
5、需要调试音响:
若客人对音质不满意,马上通知音响师为客人调试音响,并在第一时间通知音响师。
6、买单:如客人结帐,礼貌询问客人是否现金结帐,如客人使用银行/或信用卡,请随我到总台买单。
7、若客人不满意房间需要换房,立即通知领班或经理,在帮客人换房
8、其它需要:在不违反公司规定和力所能及的前提下,问明客人需要后,迅速、优质的解决客人所需要.(四)、客人消费后离开包房:
1、检查包房内物品:
及时检查包房物品有无损坏或丢失,查看客人有无遗留物品。如有遗留物品应迅速交至KTV大堂或经理。
2、礼貌送别客人和提醒:
当客人起身离开房间,礼貌提醒客人:请您携带好随身物品,并随客人走出门口。谢谢光临,请慢走。
(五)、打扫房间:
1、客人走后,将麦克风、烟缸、遥控器、水牌等物品并摆放好。
2、将桌面上的餐具和酒瓶放置在回收箱里。桌面杂物收起、放入垃圾袋内。
3、向台面、吧台面倒少许清水或洗涤剂溶液,将台面用刮刀刮干净,(注意每刮一下后都用抹布擦拭刮刀胶条,以防留下水痕)台面刮完后,用八成干的台布沿顺时针方向擦拭台面和边沿。确保不留下水痕和污渍。
4、用清洁工具将地面的杂物清扫到垃圾袋内,沙发与茶几中间的地面、地台面用地巾擦拭干净,其它地面用拖布拭干净;若地面较脏,用刮刀对地面进行清洁,注意包房的死角,地面光亮、洁净、不留水渍、酒渍。将房内的垃圾桶擦拭干净更换新垃圾袋。
5、清理结束后,巡视包房、检查是否有遗漏的地方,然后将包房内的物品按OK房标准摆放整齐,归位。(吧椅、皮墩等)
将六合一、烟缸、遥控器、水牌等物品擦拭干净,六合一的备品补齐(打火机、面巾纸、牙签、意见卡、开瓶器、麦克风套),叫区域部长检查,由部长检查复位。
(六)、各种仪态标准:
1、头发过长(男)必须剪短,(女)注意扎起。做到不盖额,不遮耳。指甲不可以留长。
2、站位形体标准:
站立姿势,坚持站立服务,站姿优美文雅,体现员工气质、修养和风度,站立时做到挺胸、收腹、眼神自然、两眼平视前方或注意服务客人。不凝视一个固定位置。双肩保持水平放松、身体重心向下,不偏左或右。嘴微闭。两手自然下垂或在体前交*。身体正直平稳,保持微笑状态。不东倒西歪、不靠墙、精神饱满、落落大方,随时准备为客人服务。
3、走路形体标准:
行走姿势。行走时挺胸、收腹、身体重心略向前倾,两脚自然前后移动,两臂前后自然摆动。速度适中,不过快或过慢,防止与人冲撞。
4、手势动作标准:
手势动作,对客服务,手势运用规范、优美、自然。为客人指示方向,手臂伸直,手指自然并拢,手掌向上,以肘关节为轴指示目标,面带微笑,配合语言运用。与客人交谈或提供服务,手势不可太多。
5、路遇客人标准:
路遇客人面带微笑,主动问好,侧身礼让,实行3步微笑法。(三步时目视客人,面带微笑,两步时向客人点头示意,一步时向客人问好
6、为客人引路标准:
引导客人行进,用手指示方向,走在客人右前方或侧身略向客人,保持1.5-2步距离,行进中同客人交谈,保持半步距离。
7、声音标准:
对客服务尽量使用普通话。语调亲切,音量适度(以客人听清为标准)工作效率:
(七)、工作纪律:
1、吃饭时间:
吃饭时间不得超过20分钟/班次,若有特殊情况由经理或领班安排。
2、去卫生间时间:
卫生间到回到本岗位时间不得超过5分钟,特殊情况请求上司。
3、包房清扫:
小型包房清扫:时间标准-10分钟
中型包房清扫:时间标准-15分钟
大型包房清扫:时间标准-15分钟
贵宾包房清扫:时间标准-25分钟
公共区域巡视清扫:时间标准-最长不得超过10分钟
4、工作期间工作纪律:
无和其他服务员闲聊事件发生,无串岗脱岗现象发生。
(八)、与客人沟通
1、与顾客交谈:
能有效与顾客进行交流,听取顾客的意见,使顾客感到自己很受重视。
2、协助顾客消费:
协助需要帮助的顾客。如:带客人去卫生间或其他地方。回答客人的问询等。
3、知道如何处理客人投诉:
【通用流程模型】推荐阅读:
入党程序通用流程最新07-01
[通用技术必修 技术与设计2]《生活和生产中的流程》――认识流程的教学设计09-21
通用实现模型07-15
通用管理模型06-28
通用数据模型07-25
通用模型控制09-13
工作流程模型08-31
税收通用完税证16(税收通用缴款书)09-25
通用考核05-15
通用模块05-19