WF 的实际应用

WF 的实际应用
WF 的实际应用

WF的实际应用:Windows Workflow Foundation应用程序最佳实践

本文使用以下技术:

https://www.360docs.net/doc/e212942256.html, Framework3.5、Windows Workflow Foundation和Visual Studio2008

目录

工作流编程模型

带副作用的编程

服务,服务,服务

分段执行

单元测试仍是您的好帮手

运行时内的运行时

两极式思维不可取

即插即用

域建模和程序设计

其他建议

Windows Workflow Foundation(WF)是https://www.360docs.net/doc/e212942256.html, Framework3.0的一部分,自其发布以来,我花费了大量时间研究此技术,使用它实现系统并将相关经验传授给其他人。通过这些经验,我大致总结出一些最佳实践(也有称不上是最佳的),在现实生活中使用WF实现软件解决方案。

我曾经遇到过WF出现貌似识别危机的问题。与我交谈的许多开发人员,都在一定程度上了解WF是怎么回事:条件逻辑、流控制、原子操作等等。

“是的,我想我是了解的。您将一些形状拖动到设计图面上。这些形状代表在某种“流程图”序列中执行的操作。这种方法真是太巧妙了!”之后可能会略表异议“但是,我能用它来做什么呢?”或“但是,我在C#或Visual Basic中就已经可以执行这样的操作了!”

从理论上说,这些异议都是合理的。虽然从表面上看,WF就是在Visual Studio中的拖放设计器体验,其功能与其他程序的功能看起来也并无大异,但这种外表之下确实存在优点。

要了解WF的价值所在,知道一些历史背景将会很有帮助。自.NET Framework问世之初,它的主要目标之一就是提高构建Wi ndows软件程序的抽象级别。过去,Windows编程人员需要掌握COM、HRESULT、智能指针、MTA、消息泵、thunk层等很多非特定于域的细了内容,任务非常艰巨。

幸好,.NET Framework的出现已成功解放了编程人员,使他们不必再掌握其中大部分细节内容了。实际上,我们大部分开发人员认为,打开Visual Studio并立即开始编写直接映射到手头问题的代码再正常不过了。令人高兴的是,.NET在运行时会考虑以下问题:内存管理、实施安全策略、代码依赖关系运行时解析和大量的其他详细问题。所以,如今的许多开发人员比以往更有效率。

在通往更高的编程抽象级别的历程中,WF代表逻辑的下一个步骤。WF程序在特殊运行时环境中执行,其本身在.NET CLR上运行。WF运行时环境对开发人员编写在该环境中运行的程序施加了一些限制。但是反过来,WF提供了一组功能强大的、灵活且可扩展的运行时服务,例如支持长时间运行代码,代码执行操作可以持续几天甚至几个月;支持暂停/恢复/取消运行程序;支持审核和跟踪程序执行,甚至支持修改正在运行的程序逻辑!

WF的核心是其声明性编程模型。也就是说,通常,在WF中您可以在Visual Studio中拖放WF设计器,来描述您希望程序完成的任务。但是,您不能精确指定如何完成此任务,反而是WF运行时使用您的程序说明(即控制流和活动的层次图)作为执行计划逻辑的蓝图。

工作流编程模型

在Visual Studio中使用工作流设计器5分钟,您就会明白WF是一种组件技术。WF中的一个组件就是一个活动。更具体地讲,WF中的组件是Activity基类的任何子类。

活动是WF中的操作组合和执行单位。某些活动(这些活动对CompositeActivity进行子分类,而CompositeActivity本身对Act ivity进行子分类)具有子活动,作为父活动的执行序列的一部分执行。实际上,WF中的工作流就是这些活动的流程图,从单个根活动开始,然后向任意深度和复杂性扩展。图形中每个活动的原始逻辑,结合此逻辑控制的数据,最终确定活动执行顺序和整体工作流行为。我喜欢把WF活动看成是Lego块。您可以将不同颜色、大小和功能的单个Lego块(单独每一块的价值很小)合并,构建一个大的整体,其价值超过所有块价值的总和。与此相似,在WF中,您将执行离散函数的原子活动合并,以创建高阶逻辑集,然后再将这些逻辑集合并来实现大型业务流程等等。

通常,组件编程(尤其是WF)常见的一种模式更青睐于组合,而不是继承,这样才可以重复使用。长时间使用WF构建日益复杂的工作流,您将会更加认为您正在从小型、自治活动组合程序,而不是创建基于使用C#或Visual Basic编写的复杂系统的深类层次。

您仍能够在WF中将类继承用作重复使用技术。从SendEmailActivity派生以创建对象,假设创建的是SendEncryptedEmailActi vity,没有任何问题。在这种情况下,您正在更改执行的操作的基本特征,在此继承技术自然就派上用场。但是,如果需要根据条件仅在特定环境下发送电子邮件,或者在发送电子邮件前后执行其他任务,则最好选择使SendEmailActivity成为另一个CompositeActivity 子类(例如,SequenceActivity或IfElseActivity)的子项,然后在SendEmailActivity外定义其他逻辑。

图1显示了封装有条件的电子邮件操作的复合活动。在该图中,SendEmailActivity仅负责发送电子邮件,从而提高了它在其他工作流中重复使用的机会。它还允许您重复使用WF(支持条件分支和顺序活动执行)中现有的结构,而不需要从头开始编写新代码。

图1具有条件逻辑的自定义组合活动

带副作用的编程

在编程中,对副作用的定义为:因执行程序的某一部分导致的对共享状态的明显更改。副作用的示例包括更改对象属性的值,或更改数据库表中的一个或多个值等等。在软件中完成实际工作一直用到副作用。

在进行纯函数式编程时,避免共享状态,并且主要通过方法返回值来进行数据流动和操作,与这种编程方法相比,工作流中一切有趣的内容会都带来某种副作用。在工作流程序中,没有返回值等内容,但是,您可以比较执行前和执行后状态来查看更改。您通过使各个活动内外组合,而不是通过调用方法来指示控制流。在设计活动类(作为属性)时活动输入和输出是隐式的,而不是通过方法参数或返回值显式定义的。数据从一个活动到另一个活动的流动,是通过内置支持活动数据绑定完成的。通过与您的自定义WF活动逻辑中的配置的服务进行交互,您也可以选择处理共享状态。

WF活动的基本执行顺序是初始化活动状态、执行活动、检查合成的活动状态是否发生更改,然后对所有其他活动重复上述操作。那么,这恰恰就是活动执行的副作用(“PurchaseOrderTotal属性的新值是什么?”或“哪些数据库值刚刚进行了更改?”),告知您刚刚发生的情况以及接下来要发生的情况。您可能会使用不适用于其他下游活动的方法使活动处理状态(然而,请注意,此处的风险不会高于C#之类的任何命令式语言中所固有的风险),但不必担心数据复制出现问题。

服务,服务,服务

作为一种具有一般目的的编程环境,WF旨在与外部子系统和代码集成。完成此任务的最直接的方法是,创建自定义工作流活动,来调用数据库、Web服务或第三方库。在WF术语中,这样的外部系统称为服务。

WF服务的原理很简单:您的工作流中的活动所需的、但又不包含在活动定义中的任何库或功能元素,在WF运行时注册为服务://create an instance of your service type...

LoggingService logSvc=new LoggingService();

//register it with the WorkflowRuntime instance...

workflowRuntime.CreateWorkflow(typeof(Workflow1));

在执行期间,活动可要求通过ActivityExecutionContext(活动从不与主机运行时直接交互)访问所需的服务,并使用配置的服务执行任务,同时使WF运行时和主机管理服务生存期:

protected override ActivityExecutionStatus Execute(

ActivityExecutionContext aec){

//ActivityExecutionContext provides access to services...

LoggingService logSvc=aec.GetService();

Debug.Assert(logSvc!=null);

logSvc.LogEvent(EvtType,Message);

典型服务示例包括记录组件、数据访问层和外部子系统的代理,当然还可能有更多的其他服务。

WF服务模型的强大功能源于其简单性。简单地说,即任何.NET对象都可以配置为服务。请注意:某些其他行为,如服务生存期管理,适用于专为WorkflowRuntimeService划分子类的服务。此外,我经常发现通过接口(而不是通过实际键入)公开服务很有用;这将使区分独立于依赖服务的活动的服务实现更加轻松。

因此,此时关键的最佳实践就是从完成此任务所需的构成片段减少自定义WF活动的核心逻辑。此外,您应该重构具有状态的服务逻辑,在工作流中多个活动之间共享(例如,记录);在执行期间将引用沿活动图形向下传递给记录组件是件繁琐的事情。这对于在执行周期期间的某个点进行序列化的工作流来说将更加复杂。

接下来,我将介绍其他一些与服务有关的建议。Windows WF附带一个基础结构(称为本地服务),用于调用活动中的.NET类实例并处理活动内部的.NET事件。您可以通过CallExternalMethod和HandleExternalEvent活动与这些本地服务进行交互。他们实质上是位于基本WF服务基础结构顶部的附加层,并可以提供与更适合WF主机环境(例如SharePoint)的声明性形式的原始服务相同的好处。但是,对于更多通用的主机,例如Windows Presentation Foundation(WPF)或https://www.360docs.net/doc/e212942256.html,,此附加层使用起来可能比同等的原始服务配置更加繁琐。请记住,在使用本地服务构建解决方案之前预先考虑承载要求。

此处使用的关键原则是利用WF服务模型的功能和灵活性设计分解合理的、可重复使用的工作流活动。

分段执行

使WF非常适合通用编程任务的一个功能是它支持异步、无阻塞任务。现代以Web服务和以数据库为中心的应用程序的本质是适应异步调用,即发出服务请求后,释放出与该请求调用关联的本地资源以处理其他任务。稍后,完成调度的任务后,执行可在其退出的位置继续进行。https://www.360docs.net/doc/e212942256.html,异步页面是此项技术的一个示例。

当WF运行时首次执行活动时,即调用其Execute方法。活动执行Execute中的所有任务后,Execute将返回ActivityExecutio https://www.360docs.net/doc/e212942256.html,pleted。当Execute执行了尽可能多的任务,正在等待某些外部促进因素(例如,对Web服务或数据库调用或发送到特定地址的电子邮件的响应)以继续执行操作时,返回ActivityExecutionStatus.Executing。

图2显示了活动的Execute方法,用于查询外部服务以获取给定客户ID的信用评分。由于信用评分可能需要花费几分钟甚至几小时的时间才能完成,因此工作流将异步调用服务,然后闲置等待结果。在闲置之前,此活动将注册委托以在促进因素到来时由运行时调用。此委托称为延续(字面意思是“指向程序的其余部分的指针”),允许活动创建或定义继续活动进程所需的任何逻辑。单一工作流的生存期可能由几个这样的闲置-继续状态转换构成。

图2Execute方法

protected override ActivityExecutionStatus Execute(

ActivityExecutionContext aec){

if(string.IsNullOrEmpty(SSN)){

throw new InvalidOperationException("SSN property value is invalid.");

ICreditScoring creditSvc=aec.GetService();

Debug.Assert(creditSvc!=null);

WorkflowQueuingService queueSvc=aec.GetService();

Debug.Assert(queueSvc!=null);

Guid queueName=Guid.NewGuid();

WorkflowQueue queue=queueSvc.CreateWorkflowQueue(queueName,false);

https://www.360docs.net/doc/e212942256.html,puteScoreAsync(SSN,queueName);

与工作流实例相关联的工作流队列上的项目(任何.NET对象)到达后,运行时会接收到外部促进因素的通知,来唤醒闲置工作流。当异步调用Web服务时,等待响应的代码将获取对队列的引用,并将相关数据(推测是最终从Web服务接收的任何内容)推入队列。运行时监视队列并调用注册的委托;委托逻辑可获取加入队列的项目并执行任何必要的处理。

此方法的强大功能源于工作流在空闲期间执行的操作。从其Execute方法返回ActivityExecutionStatus.Executing的活动很显然在某段时期内没有执行任何任务(因此,被视为空闲状态)。可能需要花费几秒钟、几个小时、几天甚至几个月的时间来等待某些外部促进因素。在这段时间,工作流不需要继续保留在内存中消耗计算机资源,而是释放这些资源使其更充分得到利用,因此WF运行时支持自动从内存卸载这样的工作流,然后将它们序列化到持久存储,以使用SqlWorkflowPersistenceService等持久服务。当外部促进因素到达时,WF运行时将重新加载工作流并继续正常执行。

单元测试仍是您的好帮手

单元测试始终与致力于WF的编程人员的生活息息相关。实际上,WF的显式组合特性本身适用于编写一组全面的测试,以测试您的解决方案的各个片段是否与其他片段脱离。我将在此处为您提供一些较高级别的信息,但是您一定要访问2008年11月这一期的《M SDN杂志》中由Matt Milner撰写的Foundations专栏文章(“单元测试工作流和活动”),以深入了解单元测试工作流。

对于使用WF有一种常见误解,即您只能执行整个工作流(也就是说,进行子分类后的SequentialWorkflowActivity实例)。实际上,您可以将任意活动实例作为独立的工作流执行,以便轻松地使用通用活动测试工具执行活动,并验证活动是孤立存在的还是更大的整体中的小子集。图3展示的就是这样的测试工具。

图3通用工作流测试工具

protected DictionaryExecuteActivity(

params object[]inputs){

Dictionaryoutputs=null;

Exception ex=null;

using(WorkflowRuntime workflowRuntime=new WorkflowRuntime()){

AutoResetEvent waitHandle=new AutoResetEvent(false);

delegate(object sender,WorkflowCompletedEventArgs e){

outputs=e.OutputParameters;

delegate(object sender,WorkflowTerminatedEventArgs e){

ex=e.Exception;

foreach(object svc in services){

workflowRuntime.AddService(svc);

Dictionaryparms=new Dictionary();

for(int i=0;i

Debug.Assert(inputs[i]is string);

parms.Add((string)inputs[i],inputs[i+1]);

WorkflowInstance instance=

workflowRuntime.CreateWorkflow(activityType,parms);

if(ex!=null){

Assert.True(false,ex.Message);

“data in/execute code/make assertions against data”(输入数据/执行代码/根据数据得出结论)这种面向状态的基础测试模式,非常适合于使用通用测试工具对WF进行测试。WF运行时支持自动填充根活动属性值(使用以属性名称作为键的通用Dictionary)。它还允许您在活动执行完成后,检查根活动属性值。即使您的活动最终将嵌入工作流层次结构内部几个层级,并且活动依靠数据绑定初始化其属性值,您也可以测试此活动是否孤立存在并模拟该活动的全部预期的错误情形。

WF也非常适合使用更高级的单元测试技术进行测试,如对象模拟,该技术着重于将测试的代码从其依赖关系中隔离,并验证对这些依赖关系的期望值(例如,“执行此测试的代码时,我预期为此依赖项调用Foo()方法的次数恰为3次”)。下面是一个示例:

//mock the IBanking interface...

var bankingMock=new Mock();

//specify that you expect AddCustomer to

//be called with the customer instance...

bankingMock.Expect(bank=>bank.AddCustomer(customer));

//execute WF harness,configuring the mock as a service...

ExecuteActivity(typeof(AddCustomerActivity),

new List(){bankingMock.Object},"Customer",customer);

如果您熟悉单元测试和对象模拟,您可能已经猜测到WF服务是在以WF活动为目标的测试中进行模拟的最佳选择。WF服务本质上是依赖关系,因此不应包括在此类单元测试范围内。

运行时内的运行时

WF不只是基于组件的可扩展编程环境。它还包含一个执行引擎,构建在CLR之上。此引擎提供了许多对工作流程序非常有用的服务,例如,工作计划、在空闲状态时自动序列化/反序列化,以及通过数据绑定将数据从父活动传送到子活动等等。但是您必须谨慎遵守WF规则;未试验过的工作流实现在此环境中执行起来可能很差,或者根本无法执行。

也许,要了解WF运行时,最重要的一点是了解它对其宿主代码没有任何特定线程要求。相反,它经过专门设计,以便与任何现有线程模型(单线程或多线程)集成。

通过根据WF运行时配置的服务计划工作流执行。DefaultWorkflowSchedulerService在.NET ThreadPool上执行工作流,同时ManualWorkflowSchedulerService允许您精确指定您要使用的线程(这对亲自将工作分派给https://www.360docs.net/doc/e212942256.html,之类的ThreadPool的WF 主机非常有用)。尽管在实际中很少需要这样做,但您也可以选择提供您自己的自定义计划实现。

请注意,不论线程模型如何,单个工作流在任何给定时间都绝不会在多个线程上执行。这是WF运行时执行模型中需要特别注意的设计选择。如果您需要在一个工作流中调用多线程代码,最好在自定义WF服务中执行该操作。

与传统的基于堆栈的编程环境(例如C#或Visual Basic)不同,工作流根据其调用代码异步执行。也就是说,当工作流完成执行时,控制不会自动返回到工作流的调用点。相反,各个工作流实例将成为您的程序中单独的逻辑分支。

如果不了解WF运行时,管理在WF中运行的工作流状态会引出潜在问题。传统的POCO(Plain Old CLR Objects)编程使用类成员字段和属性进行数据存储。您使用相同的方法构建WF活动,但当将分段式工作流配置为在空闲状态持续时,可能通过多个物理活动图形实例(如图4所示)并跨多个应用程序甚至多台计算机实现单一逻辑工作流生存期。

图4分段式工作流的逻辑与物理工作流生存期

尽管WF支持在持续期间自动序列化活动图形和状态,但一定要注意,这仅适用于一部分数据类型(不包含数组,对泛型的支持亦有限)。通过序列化代理项可以手动编写自定义序列化。您也可以覆盖Activity.OnActivityExecutionContextLoad和Activity.OnActivity ExecutionContextUnload,以根据各个实例的活动和工作流对象图形的拆卸进行自定义处理。

请记住,WF自身是一个运行时。基本了解WF线程、计划和序列化概念,可以避免常出现的失误。

两极式思维不可取

首次采用某种新技术后,便处处应用,有时甚至根本不考虑其他办法(即谚语“拿锤在手,看什么都是钉子”所讽刺的狭隘思维方式),是一种常见的反面模式。我们有时会犯这种错误。虽然使用WF时也难免犯该谚语所形容的这种错误,但WF的本质是低级别探测技术,包含许多集成点和可扩展性挂钩,允许您在许多不同的问题域中应用该技术。

WF在高度多线程化的环境(例如https://www.360docs.net/doc/e212942256.html,),或使用Windows窗体或WPF构建的桌面客户端应用程序中运行得也相当好。在这些方案中,WF的常见用途包括实现UI驱动的逻辑(即使用工作流,而不是命令性代码实现用户界面事件处理逻辑);面向任务的异步后台工作(通常在单一线程上调用,例如,提取和处理Web搜索结果或处理磁盘上的大文件);页流(工作流逻辑指示ASP.NE T或智能客户端的UI导航)。

图5展示Microsoft示例PageFlow应用程序的设计图面。工作流中的每个顶层活动定义要显示的视图(Web页面或应用程序窗体),以及每个视图的任何自定义处理。允许的视图之间的转换也在此进行描述。对比使用这样的清晰图形方式,和使用几十行C#或Visual Basic代码表达相同的信息,您会发现WF具有明显的优势。

图5管理用户界面导航步骤的工作流

WF和Windows Communication Foundation(WCF)是面向服务的应用程序中天然的技术组合。工作流实际上是一种服务,您调用它以执行特定功能,而WCF设计用于公开服务以供使用。为了方便您使用,.NET Framework 3.5提供了SendActivity和Recei veActivity活动,使您可以直接集成WF和WCF。您可以使用ReceiveActivity以声明的方式通过WCF地址/绑定/协定形式公开WF 工作流。此工作流为服务实现,在接收到请求时由WCF集成探测进行调用。

您也可以通过这种方式公开长时间运行的工作流,在这种工作流中,单一工作流实例可能会公开多个服务操作,并经历多个执行/空闲序列。WCF绑定类型(BasicHttpContextBinding、WsHttpContextBinding或NetTcpContextBinding)用于将从客户端发送的信息与特定的运行中的工作流实例相关联。

最后,您可能会猜想,SendActivity是否允许您轻松配置从工作流到外部服务的出战WCF客户端连接。

作为.NET集成技术,WF程序可与.NET代码使用的任意库或技术交互。实现WF中的应用程序逻辑时,您不必抛弃现有的技术投入;此技术的真正价值在于可以更好、更有效的使用现有技术资产。

WF自身与其说是一种方法,倒不如说是一种集成技术。WF是使用工作流产品的Microsoft产品中所用的一项基础技术。这些产品包括SharePoint、Dynamics产品以及即将发布的Office Communications Server和Office Project。这种最常见用法允许更轻松地在多项技术和您的WF应用程序之间进行集成。希望其大有作为。

即插即用

为了尽可能地方便集成,可扩展性是WF的基本原则。核心基础结构的主要内容是可配置—甚至是可以使用自定义实现替换。虽然WF附带有许多用于控制流、事务性语义和服务通信等的内置活动,但您的WF程序不需要使用其中任一活动,且这些活动都不使用普通WF编程社区无法使用的特殊功能。与WF自带的活动相比,您自己的自定义活动(或第三方供应商提供的活动)提供功能的能力差不多。

映射到特定域行为的面向操作的活动是自定义实现的理所当然的选择。抵押放款公司发放贷款所使用的工作流,可能包含请求大量保险报价、计算财产税和获取申请人信用分数等自定义活动。这些活动非常有用并且很有必要,但更有趣的情况是自定义组合活动,其重点强调自定义控制流,而不是实现特定域功能。WF提供了几个标准的控制流组合,例如IfElseActivity和WhileActivity。但是使用WF,您可以实现更特殊的情况,例如根据某些可配置的优先级执行组合子活动,或可能使用依赖关系网络确定执行顺序(请参见图6)。图6使用依赖关系网络

[Designer(typeof(DependencyNetworkActivityDesigner))]

[ActivityValidator(typeof(DependencyNetworkActivityValidator))]

public partial class DependencyNetworkActivity:SequenceActivity{

typeof(string),typeof(DependencyNetworkActivity),

new PropertyMetadata(DependencyPropertyOptions.Metadata));

public static object GetRunAfter(object depObj){

return((DependencyObject)depObj).GetValue(RunAfterProperty);

public static void SetRunAfter(object depObj,object value){

((DependencyObject)depObj).SetValue(RunAfterProperty,value);

private IList_orderedList=null;

private int_currentIndex=0;

protected override ActivityExecutionStatus Execute(ActivityExecutionContext aec){

if(this.EnabledActivities.Count==0){

_orderedList=https://www.360docs.net/doc/e212942256.html,puteOrderedList(this);

Debug.Assert(_orderedList!=null);

Debug.Assert(_orderedList.Count==this.EnabledActivities.Count);

ScheduleNextChild(aec);

private void ScheduleNextChild(ActivityExecutionContext aec){

Debug.Assert(aec!=null);

Debug.Assert(_orderedList!=null);

Debug.Assert(_currentIndex<_orderedList.Count);

Activity child=_orderedList[_currentIndex++];

Debug.Assert(child!=null);

child.Closed+=ChildDone;

aec.ExecuteActivity(child);

private void ChildDone(object sender,ActivityExecutionStatusChangedEventArgs e){ ActivityExecutionContext aec=(sender as ActivityExecutionContext);

e.Activity.Closed-=ChildDone;

if(_currentIndex<_orderedList.Count){

ScheduleNextChild(aec);

此外,WF提供的不同的运行时服务几乎都具有可扩展性或可替换性。例如,您可以在其他存储媒体之上实现您自己的工作流持久层,或者可能实现工作流计划程序,该程序根据自定义线程池实现而非内置.NET ThreadPool执行。这样的自定义服务的配置方式与其他所有WF服务配置方式完全相同,因此该模型具有一致性,也很简单。

最后,在面对不断发展的技术和应用程序体系结构时,WF的目标是保持灵活性,而不是因固守僵化的要求导致构建的技术不能广泛应用。

域建模和程序设计

使用WF构建软件的一个难度较大的问题,是将您的问题域的元素映射到工作流元素。主要问题是WF以控制流为中心的编程模型,这种模型不同于传统的命令式编程或面向对象的编程,工作流的原子元素(活动)不代表您问题域中的实体,而是代表操作或处理步骤。这是一点很细微但又非常重要的区别,它使重要的任务(域建模和程序设计)更具有挑战性,特别是对于WF初学者而言。

了解WF编程模型机制:活动、服务、分段执行,以及其他内容是一回事,但将功能性说明或大量用例转化为一个或多个有效的、考虑周详而运行可靠的工作流完全是另一回事。哪些域概念可映射到活动、服务以及整个工作流?哪些数据应在工作流中流动?如何流动?在什么位置可并行完成工作,以及在什么位置必须将工作流设计为闲置,以等待用户输入?

说实话,在本文有限的篇幅内无法将此类问题解释清楚。但是我在此可以为您提供几个我认为不错的一般指导原则。在讨论建模和设计时,可采用以下建议,但这些建议并不是对该主题的完整说明,只是个开端而已,也不要认为这是取得理想WF设计的唯一途径,不是这样的。

首先,根据适合您的项目的前期设计考虑,像通常那样使用用例、使用者和域元素开始建模阶段。使用适合您的任何方法;在此不需要特别考虑是否适合于WF。

接下来,将您的使用者(Customer、BankManager等)和您的域元素(PurchaseOrders、InsurancePolicies、AcmeWidgets)建模为对象。与平时一样,认真考虑由每个项封装的数据。根据需要,使用属性公开数据。为使用者方法建立存根,但是现在不要实现它们。

此时,您需要做出决定。您预想的设计是否以WF为中心,使得所有重要行为都表示为一个或多个工作流中的不同活动?或者,您是否希望以更有针对性的方式使用WF,即在WF中实现关键方面,而将其余部分保留为更传统的.NET代码形式?不要认为这是一个

简单的用“是”或“不是”就能回答的问题;而应认真考虑您究竟希望在多大范围内使用WF。WF的优点—模块性、可见性和功能集—在某些区域(复杂的、不断更改的业务逻辑)为您提供的优势要多于其他区域(用户界面布局或数据访问层)。

现在考虑由各个域元素定义的操作。在传统的面向对象的编程中,这些操作将映射到具体类型的公共方法。在WF中,这样的操作(例如“从银行帐户提取现金”或“向购物车添加商品”)通常映射到在一个或多个定义的对象上执行操作的单独的自定义活动。整体范围内使用WF越多,作为WF活动实现的操作就越多,作为传统的类方法实现的操作就越少。

用例将定义使用者为达到特定目标而执行的一组有序操作,以及出现错误的不测情况。在C#或Visual Basic中,这将通过使用Strategy或Template Method模式展现,从而导致方法不愿参加使用者类型定义。使用WF,我倾向将用例映射到自定义组合活动,这些活动由域元素操作活动和定义用例中的条件逻辑的其他活动组成。图7展示了自定义组合活动AddCustomerWithAuditActivity,该活动不包含基于代码的逻辑;所有步骤都是作为一系列自定义活动调用实现的。

图7不包含基于代码的逻辑的自定义复合活动

由于您的用例现在定义为自定义组合活动,因此您可以将大型业务流程(“执行月末协调”或“下一个财务年预算项目”)定义为工作流,合并这些自定义组合。使用者行为可以定义为类方法,这些方法接受所有必需的输入并启动相应的工作流,根据需要将数据传入工作流并获取结果。根据需要,可通过数据绑定或服务调用传递数据。

WF中的域建模和代码设计与命令式.NET编程中的等效任务有一些相似之处,但也存在一些重要差异。可以预见到学习曲线和某些重构机会是您的第一个WF项目的无可避免的副产品。

其他建议

我提几点重要建议,从而帮助您更好地了解它们:

首先,尽可能地减少使用CodeActivity。这对于一次性“粘合”代码以确保数据在各活动间的正确流动非常有用,但在别的方面却应由特定于手头任务的自定义活动替换。

当将工作流与其他子系统集成时,最好通过界面间接公开WF功能。这将促进松散耦合,使您的工作流代码更易于使用和测试。这也将更易于随时间变化WF逻辑实现。

不要忽视实现您的自定义活动的验证程序。WF活动组合模型支持可选的验证逻辑,以验证允许的和不允许的活动配置。您可通过为ActivityValidator划分子类,并设置目标活动类型的属性来实现此工作。请参阅随附代码下载部分,以获得验证程序实现示例。

了解样板Visual Studio向导生成的工作流宿主代码对于临时调用和测试工作流非常有用,但仅此而已。最有趣和最有用的工作流可能从不通过命令行执行!

为获得最具灵活性的运行时,您应考虑使用依赖关系注入容器。请查看StructureMap或https://www.360docs.net/doc/e212942256.html,以了解WF自定义服务配置。

如果您的工作流使用PolicyActivity执行业务规则,请考虑通过为RuleAction划分子类,使用特定于域的关键字扩展可用语法。这将有利于提高编写的规则的表现方式,从而更有利于理解。

最后但不容忽视的一点是,切记要设计您的工作流主机环境,以使它可以持续接收来自外部系统的与空闲工作流绑定的服务响应。您的工作流可能处于空闲状态,但如果您的工作流主机没有运行,则将不会处理外部系统响应,并且您的空闲工作流也不会唤醒!

对于像WF这样应用广泛的技术而言,由于使用的环境等级不一样,任何最佳实践或关键原则的列表都可能是不完整的、或只在不同程度上适用。此处提供的指南是我以及我的同事和学生们的经验所得,虽然内容很广泛,但可能不全面或不适用。请根据您的问题域和限制,决定如何使用我的建议最好地解决您的问题,但也许我的建议不适用您的问题。

工作流系统需求分析

工作流系统需求分析 业务过程描述: 工作流是一种反映业务流程的计算机化的、实现经营过程集成与经营过程自动化而建立的可由工作流管理系统执行的业务模型。工作流起源于生产组织和办公自动化领域,其目的是将现有工作分解,按照一定的规则和过程来执行并监控,提高效率,降低成本。 下图是用户使用工作流系统的业务过程:

业务模型描述:

系统组成: 工作流管理系统由客户端、流程定制工具、流程监控与管理和工作流运行服务四个部分组成,下图是系统构件图: 系统功能划分: 工作流管理系统是指运行在一个或多个工作流引擎的软件上用于定义、实现和管理工作流运行的一套软件,从用户建模的过程来看在建立阶段功能主要是工作流过程和相关活动的定义和建模,在运行阶段包括运行流程的监控、管理以及执行过程中的人机交互等。 工作流管理系统由流程定制工具、流程监控与管理、工作流运行服务和客户端交互四个部分组成,整个系统的使用者可以分为四种:系统管理员、流程设计人员、流程管理人员、普通用户。 下图是整个工作流管理系统的顶层用例:

第一部分流程定制工具 本部分主要完成企业信息流中业务过程的图形化建模,定制工具提供丰富的图形化元素、简单易懂的建模方法以及完善的模型管理方式。 流程定制用例图:

打开流程模型 参与者:流程设计者。 前置条件:流程定制工具已经打开。 后置条件:被选择的流程模型中的内容被展开。 步骤序列: 1.打开流程模型列表或新建流程模型文件。 2.选择流程模型文件名称。 3.展开流程模型中的设计内容。 保存流程模型 参与者:流程设计者。 前置条件:某个流程模型已经被打开,并且被修改。 后置条件:修改过的流程模型存到了物理文件中。 步骤序列: 1.保存流程模型到物理文件中。 删除流程模型 参与者:流程设计者。 前置条件:拥有可被删除的流程模型。 后置条件:选中的流程模型被删除。 步骤序列: 1.用户打开流程模型列表。 2.用户选择想要删除的流程模型。 3.系统删除选中的流程模型。 导入导出流程模型 参与者:流程设计者。 前置条件:拥有可被导入的文件或导出的流程模型。 后置条件:流程模型被导出成文件或模型文件被导入到设计系统成为流程模型。 步骤序列: 1.用户打开可被导入文件列表或设计工具中的流程模型列表。 2.用户选择将被导入的流程文件或选择将被导出的流程模型。 3.系统把导入文件生成流程模型或把导出流程模型生成流程文件。 流程发布 参与者:流程设计者。 前置条件:拥有设计完成并可供发布的流程模型。 后置条件:流程模型被发布并可通过客户工具执行。 步骤序列: 1.用户打开流程模型列表。 2.用户选择发布的包或流程。 3.用户选择发布的运行服务器。 4.用户形成发布版本。

JBPM工作流演示系统使用说明

JBPM工作流演示系统使用说明 安装讲明 本系统在JDK1.5的基础上编译,请选择支持JDK1.5及以上版本的WEB 容器,举荐使用Tomcat5.5,不保证与其他WEB服务器兼容,理论上应该可不能显现兼容性咨询题。 如果要编辑源代码,请使用Eclipse3.3+MyEclipse6.0版本,JBPM版本为3. 2.3,其他版本可能会显现文件无法打开或编译的情形。 本系统在Spring2.0+Struts1.2+Hibernate3.1基础上构建,与低版本不兼容。 数据库为MySql5.0,编码采纳utf-8。 系统架构

功能讲明 本应用要紧用于演示JBPM工作流的使用,数据均储备在数据库中,包括两大模块:权限操纵和流程操纵。权限操纵模块是为流程操纵模块服务的,为了讲明在实际应用中如何动态指定审批执行者。但实际上其代码量并不比工作流的代码少。 流程图 功能详解 1、创建请假条 创建请假条时必须输入请假天数和请假缘故,系统会对数据进行检查。同时,会自动显示当前有效的审批人,包括经理审批和老总审批。审批者是能够自定义的,而且只有一个有效,其他自动设为无效。有效的审批设置自动显示在新建请假条页面。 2、送审 新建请假条后,如果数据输入无误,自动跳转到“送审请假条”页面,该页面显示所有刚刚定义的请假条,可用操作有“送审”、“重写”。每个请假条的详细信息以列表形式显示。 术语讲明: 送审:请假条定义后,请假条处于等待审批状态,要点击“送审”按钮流程才会往下走,即交给经理审批。 重写:如果输入的信息有出入,能够点此按钮编辑请假信息。进入重写页面后,将显示该请假条在什么时候编辑过。如下图: 3、我发起的所有任务

浅析小学语文阅读课堂情感教学

浅析小学语文阅读课堂情感教学 摘要:语文教学不仅仅是一种知识的传授,更重要的是对学生的情感态度的塑造,让学生在学习语文知识的过程中不断丰富自身的精神世界。小学是学生情感形成的重要时期,教师能够通过阅读,帮助学生进一步理解以及分析语文知识,发挥情感的积极作用,提升鉴赏能力,有助于语文课堂学习效率的提升。 关键词:小学语文;阅读课堂;情感教学 素质教育的提出,促使小学语文教师的教学方法发生着一些转变,由传统的单一教学形式转变为多种教学形式并存的教学模式,这种教学的转变,更好地促进了学生对于语文学习兴趣的激发,培养了学生对于语文知识学习的热情。与此同时,教师关注学生的情感世界塑造,进一步发挥学生的学习主动性,就能够提升语文阅读课堂教学质量。小学语文阅读教学帮助学生展开情感活动,就是教师培养学生的学习主动性的重要过程,通过师生之间的情感交流,开展趣味化的活动,营造丰富的教学情境,帮助小学生感悟世界,推动小学生的健康、快乐成长。下面就小学语文阅读教学过程中情感教学的基本步骤进行简单分析。 1创设情境,激发情感 在小学阶段,学生的情感世界浅显易懂,学生的喜怒哀乐往往都会表现出来,因此,教师可以结合这一阶段小学生的情感世界进程,帮助小学生开展阅读知识学习。教师可以在开展阅读课时,为学生创设一个教学情境,让学生能够跟随教师的情境,不断融入其中,同时通过这种情感教育氛围的营造,学生能够快速的获得一些情感渲染或者情感共鸣,不断推动学生的进一步融入其中。因此,教师创设一个教学情境对于学生的情感有着积极地推动作用,学生在这种教学情境的感染下,能够不断地发挥自身的学习主动性,进一步推动自身的成长发展,产生与阅读材料的情感共鸣,帮助学生发展智力,推动学生的快乐成长。那么教师如何创设教学情境,进一步激发学生的情感呢,可以从课文出发,基于教材的情境是具有活力的,同时能够帮助小学生进一步提升学习效率的。例如,在五年级学生学习《把铁路修到拉萨去》,这篇文章是一片略读课文,让学生通过文章的学习,指导学生有感情地朗读课文,融入情境年之中,进一步感受建设者们对修筑铁路和西部大开发的满腔热情,能够知晓挑战极限,勇创一流的青藏铁路精神和

BPM工作流平台设计

工作流系统设计手册 一、引言 工作流管理是目前被业界广泛应用并迅速发展的技术,它的主要功能是使业务处理过程自动化,协调人和各种应用程序的工作。工作流管理系统(Workflow Management System,简称:WfMS)以企业业务过程为核心,结合了计算机支持协同工作以及企业信息系统的相关技术,立足于过程自动化,着眼于整体效率的提高。随着计算机软硬件技术的发展,特别是Internet 和Intranet的迅速普及,工作流管理系统的应用范围已不仅仅限于传统办公环境(如保险、银行、法律、行政管理等)和工业制造中,而且逐渐扩展到企业应用环境中。 1993年成立的工作流管理联盟(Workflow Management Coalition,简称:WfMC)给出了一系列工作流的规范。其主要概念有: 工作流 工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档信息或任务能够在不同的执行者之间传递与执行。 工作流是一种反映业务流程的计算机化的模型,实现经营过程集成与经营过程自动化而建立的可由工作流管理系统执行的业务模型。 工作流管理系统

它是一个软件系统,完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。并监控其工作状态。工作流管理系统可称为企业的业务操作系统。(Business Operating System,简称:BOS) 工作流系统参考模型 有关工作流管理联盟更详细的规范请参见https://www.360docs.net/doc/e212942256.html, 二、JU工作流管理系统 根据国际工作流管理联盟的标准模型,实现了过程定义工具、工作流执行服务(工作流机)、工作流管理工具以及工作流客户应用(人工动作)和供工作流执行服务(工作流机)直接调用的应用(自动化动作)。 人工动作必须与表单绑定。表单提供了人机交互的工作界面,而表单的后面是标准通用的关系型

工作流与JBPM开发实例精解

1.工作流与JBPM 开发实例 前几天发了一篇文章,没几个人看也没人留言,看来我这功夫差的还是远啊,今天来一个实际点的吧。可能上回的废话太多。说说这个jbpm应该怎么来用。 首先当你想学一个框架的时候一定是你要有项目来用他了,OK,那么你项目当中的流程是什么你应该清楚吧,那么当你清楚了这些的时候我们就开始我们这个最简单的例子吧。 假如我们现在有这么一个例子,公司员工想报销点出差费,那么他要将他的申请提交给他的第一级领导——部门主管去审批,然后部门主管审批完了之后还要交给这个部门主管的上级公司老总进行审批。那么针对这个简单的流程,我们应该从哪里下手呢? 首先第一件事情就是写流程定义文件,那么这个文件我们用什么来写呢,他就是一个符合某个语法的xml文件,幸运的是jbpm给我们提供了一个集成的开发环境让我们来用。 首先去官网上下一个jbpm-jpdl-suite-3.2.GA包,解压后你会发现他里面有一个designer文件夹,那个里面就是我们写流程定义文件的开发环境,他是一个eclipse的插件,但是好像他给我们的那个eclipse版本有问题,建议大家从新下一个eclipse-SDK-3.2.1-win32.zip这个版本的eclipse,然后覆盖他给我们提供的那个。 准备工作做完了,那么我们就开始吧,首先我们打开解压目录下的designer 文件夹中的designer.bat文件,他弹出一个eclipse,然后我们就用这个东西来开发我们的流程定义文件了。 打开之后你就会看见一个他的小例子,不过我们不去用他,我们自己新建一个工程。右键-new-other-jBoss jbpm-process project。这个时候你会看见他弹出一个对话框,输入你的工程名字,然后点击next,这个时候你会发现他已经把jbpm加载进去了,记住要选中Generate simple ......。 工程建立完了,我们开始建立我们的流程定义文件。在工程里面你会发现src/main/jpdl这个source folder,然后你会看见他里面已经有了一个流程定义文件了,但是我们不去用他的,我们自己建立一个,右键src/main/jpdl,然后new-other-jBoss jbpm-process definition。这个时候他就会弹出一个对话框,起一个你要写的流程定义文件的名字输入进去,OK,可以了。这个时候你打开你建立的那个文件夹,里面就有processdefinition.xml文件,ok,打开他。 在右面的图里面你就可以看到一张什么都没有的白纸,我们看看这部分左面的那些东西,什么start啊,end啊,tasknode啊,fork啊,join啊。那我们来解释一下这是个什么东西呢,我们看看我们的需求,员工要写一个报销单,然

小学语文阅读教学中如何实施情感教育

小学语文阅读教学中如何实施情感教育 发表时间:2016-09-13T16:41:41.033Z 来源:《素质教育》2016年7月总第211期作者:张会娟 [导读] 儿童的情感就像一池水,只要一颗小小的石子,就会使它泛起粼粼波纹。 寿光圣城街道西关小学262700 在语文教学中,教师不仅要传授语文知识,还需要进行情感传递和情感教育,情感教育有利于全面提高学生的素质。那么如何在语文阅读教学中进行有效的情感教育呢? 一、充分挖掘教材中的情感因素,激发学生的情感 小学语文教材本身就蕴涵着丰富的情感教育内容,作者的情感、意愿乃至整个心灵都寄托在他们所描写的形象之中,如《丰碑》、《钱学森》、《诚实的孩子》等课文蕴涵着道德感,《五彩池》、《草原》、《桂林山水》等课文体现着自然风光美感,《新型玻璃》、《太阳》等课文蕴藏着理智感。教师在教学中应根据教材特点挖掘情感因素,采用适当方法拨动学生的情感之弦,让学生捕捉到作者熔铸在作品中的情和意,令他们如临其境、如听其声、如见其人,从而通过形象思维来感知、感悟文章的内涵、作者的情感。当作者刻画的形象展现在学生面前时,情感就随之而产生了,他们的情感伴随着教学活动,与作者同喜同悲,并感受到作者笔下人物的美好品质,在脑海中再现文章所描述的情境,这样教师就可以免去许多繁琐的讲解。 二、创设教学情境,激活学生的情感 儿童的情感就像一池水,只要一颗小小的石子,就会使它泛起粼粼波纹。教师在教学过程中应抓住感人情节,通过多媒体课件、录音、幻灯、挂图等灵活地创设情境激活学生的情感。例如在教学《桂林山水》一课时,教师可创设这样的情境——观看多媒体课件:先欣赏屏幕上波浪翻滚、气势雄伟的辽阔大海,水平如镜、和风拂柳的美丽西湖,峰峦雄伟的泰山,红叶似火的香山,感受自然美。然后教师激情告白:“同学们,大海、西湖水美,泰山、香山山美,但都无法与桂林山水相比。桂林山水不但山美、水美,而且奇山围绕碧水,碧水倒映奇山,山水交融充满了诗情画意。再加上空中云雾迷蒙,山间绿树红花,江上竹筏小舟,把桂林山水这幅画点缀得更美,这真是‘舟行碧波上,人在画中游’。”在这样一个特定的教学情境中,让学生用眼睛去凝望,用耳朵去聆听,用心灵去体验,激活了情感。 三、运用语言,培养语感,体验情感 《小学语文新课程标准》明确提出:“语文课程应培育学生热爱祖国语言的思想感情,指导学生正确地理解和运用祖国语言,丰富语言的积累,培养语感。”可见语感能力之重要。对于学生来说,悟性是一种潜在的智慧。因此,在教学活动中要注重运用语言,培养语感,让学生真正体验到情感。 1.让教师在声情并茂的范读中引起情感共鸣。 如果教师能按不同文章的风格,采用不同的朗读风格,或高亢或沉缓,或激越或悲伤,把作者创作时的全部激情重新释放出来,恰到好处的音量、充沛浓郁的氛围、笼罩心头的情感展示和延伸了作品的意韵,在身临其境的情感体验中,学生会更快地走进作品的意境之中,从而与作品中人物一起喜怒哀乐,在意境中体验到真正的情感。例如在教学《十里长街送总理》一课时,在范读“人们常常幸福地看到周总理,看到他矫健的身躯、慈祥的面庞。然而今天……”一句时,教师应用哀婉低沉的语调、缓慢的语速去读,因为周总理矫健的身躯、慈祥的面庞从此再也看不见了,从悲哀中回忆失去的欢乐,使人更加悲哀。让学生明白这样读的理由,进一步引导学生投入地朗读,从而让学生在听教师范读和自己的朗读中激发藏在内心深处的情感。 2.让学生在感受形象中朗读,体会情感。 情感的激活需要感受,没有感受就没有情感。作者的情感寄寓于所描绘的形象中,只有引导学生去认识形象、感悟形象,在感悟形象中动情,在动情中抓住课文重点句子进行朗读,学生的情感才能与作者相通,学生才能体会到真正的情感。在教学课文《会摇尾巴的狼》时,先让学生在初读课文的基础上说说课文讲了一件什么事,然后根据学生的回答,显示课件——“有一个陷阱里有一只狼,陷阱边上有一只羊,狼在陷阱里怎样爬也爬不上来”的动态画面。这样的教学设计使课文中抽象的语言文字的描述变成直观的形象展现在学生的面前,激起了学生的兴趣。学生有了表象后再细读课文中狼与羊的五次对话,那么课文中老山羊的诚实、善良、机警和狼的狡猾、凶恶、虚伪的性格特点就清晰地展现在了他们的眼前。此时,引导学生进行朗读,当学生读到“你再会摇尾巴,也还是凶恶的狼,谁也不会来救你的”等句子时,学生对羊的同情之心和对狼的痛恨之情就会油然而生。 3.让学生在朗读中展开联想,升华情感。 学生在小学阶段的语文学习主要表现在对语言文字的直觉感悟能力上,他们在看、听、读之中就能凭借直觉和联想去体会,使抽象的文字化为真切的具体的画面,从而领悟语言文字的精妙。如在讲《海底世界》一课时,让学生边听边看配乐多媒体课件,伴随着优美的音乐,教师深情地朗读课文优美的词句,学生听着教师的朗读,看着眼前课件屏幕上出现的海底的美丽景色,浮想联翩,从而激起了他们热爱大海的情感;再让学生闭着眼睛展开想象的翅膀,进行丰富多彩的想象,然后引导学生把这些美好的感受表达出来。这样既使教学情景交融,学生的感情产生共鸣、得到升华,又锻炼了学生语言文字的表达能力,培养了学生的语感。 总之,情感让语文充满活力,是语文教学的生命。语文教学中的情感教育,是对学生实施素质教育、加强情操教育的重要内容。在教学中,语文教师应挖掘课文,点化学生情感,打动学生的心弦,激发学生情感共鸣,让“情感”在教学中起到培养人、教育人的作用。

小学语文教学中的情感教育

浅谈小学语文教学中的情感教育

————————————————————————————————作者:————————————————————————————————日期: 2

浅析小学语文教学中的情感教育 摘要:情感是一个人综合素质结构中的重要组成部分,对人一生的发展起到不可估量的作用。因为通过在教育过程中尊重和培养学生的社会性情感品质,发展他们的自我情感调控能力,促使他们对学习、生活和周围的一切产生积极的情感体验,形成独立健全的个性与人格特征起到积极的作用。然而,长期以来由于受到传统的教育模式和教育教学评价体制的影响,语文教师往往过分注重学生的认知水平的教育,而忽略了在语文教学对小学生的情感教育,因此加强对小学语文教学中的情感教学是必不可少的一个环节。 关键词:情感意义方式朗读体会拓展延伸 《语文课程标准》明确指出:小学语文教学要从提高学生的人文素养出发,把态度、情感、价值观列为课程教学目标之一。由此可见,情感教育是小学语文教学的核心内容,是语文学科的人文性的体现。在小学语文教学中,教师的一言一行在潜移默化的陶冶着学生的情操,自己的精神与人格也在感染着学生,因此作为一名小学语文教师使情感教育与语文课堂教学有效的结合起来,是我们义不容辞的责任,我在担任小学语文教师以来,一直思索怎样把孩子自然灵活的带入课本中并使他们感悟文中的情感,下面是我几点粗浅的看法 一、在小学语文教学中实施情感教育的意义 1、调控作用。小学生的情感特征十分鲜明突出,尤其是小学低年级学生,他们情感丰富,对一切客观事物都怀着极大的热情,而且又具有强烈的好奇心。但他们由于年龄、知识和经验的限制,对客观

jBPM4.4详细讲解

jBPM4.4 一、什么是jBPM JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上。 java Business Process Management :工作流,工作流引擎 注:记得j小写,因为j代表java,与Log4j中j一样 工作流管理系统不止一中,如还有Intaliol BPMS …但JBoss jBPM灵活性且扩展性高。 jBPM项目于2002.3由Tom Baeyens 发起,2003.12发布1.0版本,2004年10.18发布 2.0,并在这天加入了JBOSS组织-→被RedHat公司 二、能干什么 提供工作流的实现,帮助更好的进行BPM 三、jBPM有什么,简介jBPM的Service API 各种服务 1:ProcessEngine:流程引擎。并不负责具体的业务,而是用于获取各种Service。 2:RepositoryService:流程资源服务的接口,如流程定义发布、查询、删除等。 3:ExecutionService:用于操作流程实例的服务,可以进行流程实例发布、查询、流程推进、设置流程变量等操作。 4:TaskService:用于操作人工任务的服务,可以进行任务创建、查询、获取、提交完成、保存、删除等操作。 5:HistoryService:用于操作流程历史的服务,提供对流程历史库(就是已经完成的流程实例)的操作。比如:历史流程实例,历史活动实例等。 6:IdentityService:用于操作用户、用户组以及成员关系的服务 7:ManagementService:流程管理控制服务的接口,只提供异步工作(Job)相关的执行和查询操作。 四、Myeclipse8.5 搭配开发环境 1.jbpm-4.4.zip 下载完 2.myeclipse→help→Myeclipse Configuration Center →add……. 3.找到\jbpm- 4.4\install\src\gpd\jbpm-gpd-site.zip 安装这个插件 4.记得不要联网安装,不要选source文件 5.安装完后window→JBoss jBPM→runtime Location→add 添加jbpm的路径 6.添加lib下所有jar包,如果你使用的是tomcat6.0则:要把 Juel-api.jar ,juel-impl.jar,juel-engine.jar 拷到tomcat lib 下并把原来的el-api.jar删掉 项目中就不要再导上面三个包 五、修改配置文件 1、将example中的下列配置文件拷贝到java项目的src目录下: jBPM.cfg.xml、jBPM.hibernate.cfg.xml、jBPM.mail.properties、 jBPM.mail.templates.xml、process_forms.css 2、在以上配置文件中的jBPM.hibernate.cfg.xml,实际上就是我们熟悉的 hibernate.cfg.xml,这里,要修改为连接我们的数据库。 oracle.jdbc.driver.OracleDriver

浅谈小学语文课堂教学评价有效评价

浅谈小学语文课堂教学评价有效评价 在新课程背景下,如何通过课堂教学评价帮助学生认识自我、建立自信,并激发其内在发展动力,促进学生以积极的心态投入学习,实现课堂教学中师生真情的交融,使师与生双方都同时感受教与学的无穷的趣味与自身的无法估量的潜力,使教学活动进入师生对话、充满生命活力的完美的境界,是我开展小学语文课堂教学评价研究追求目标。下面谈一些我在小学语文课堂教学评价方面的做法,求教于方家。 一、善于倾听是正确评价的保证 着名语文教育家周一贯说:“有倾听意识和习惯的教师不会满足于仅仅听到了学生的言辞,他还善于倾听言辞背后的思绪和性情、欲望和需求,并加以热情地呵护和细心地引导”。由此可见,教师要在课堂上全神贯注地聆听学生们的每一个问题,每一句话语,了解学生的个性和真实想法,捕捉到来自学生的思维火花,并及时作出回应,热情、全面地对每一位学生的学习表现加以有的放矢的评价。因此,在教学中,教师是否善于倾听直接影响到课堂评价的好坏,也直接决定了学生对老师评价的接受程度。 1、倾听学生求知的声音 小学生正处于求知的重要阶段,他们对世界充满了好奇,心中有着无数个为什么,因而在课堂教学中,教师要尊重学生的求知欲,善于倾听他们的问题,逐一进行评价和解释。随着课堂教学的展开,有些问题在教学中师生共同给予解答,有的问题我鼓励学生向书本、课下收集资料中去寻求答案。这样这样就让学生在自主、轻松的状态下展现出他们的天性和聪明。 2、倾听课堂中出现的“小插曲” 在课堂上,经常会发现学生新奇的创意和意外的回答,教师需要花些时间耐心地倾听和询问,作出正确、适当的评价。及时地肯定性评价,缓解了

课堂气氛,保护了学生的自尊心,起到了良好的作用。 3、倾听学生争论的声音 每一个学生都各有差异,各具个性,对于一些学习问题,他们也都有各自的见解。因而在课堂中,允许学生畅所欲言,鼓励他们各抒己见,此时,教师则要用心地倾听,适时作出公平的评价,提高他们的思维能力。 二、善于运用语言艺术提高评价的时效性 语文课堂运用情感评价的过程是引导、教育学生的过程,也是师生之间进行信息传输和情感交流的过程,因此,用好“语言”这个工具,对于提高课堂评价质量起到至关重要的作用。 1、真诚地赞美学生 赞美是一种驱使人奋发向上、锐意进取的动力源泉。学生尽管有这样或那样的缺点,但他们心灵深处却都隐藏着对自信心的渴求,赞美就是唤起学生自我意识的一剂“良方”。但赞美也需要讲场合、讲对象、讲分寸、讲实效,否则,只会让学生迷失方向,变得麻木,效果适得其反。归结起来,应该要注意以下几个方面: (1)在引导中赞美。要从长远考虑,在肯定、夸奖的同时,还要流露出一种引导和企盼,有助于学生在以后的学习中更加出色。 (2)使赞美更具体。一些老师在赞美学生的过程中,往往简单的选用一些诸如“你真棒!”、“你真聪明!”等语言,时间长了,学生也习以为常了,提不起兴致。只有使赞美具体化、精细化、真实化,避免空洞乏味,才能让学生感到新奇和受用。 (3)赞美要恰如其分。善于区别赞美的广度和力度,避免夸夸其词、哗众取宠。如对成绩突出、进步明显的学生,应面对全班同学进行表扬,使成绩有目共睹。这样既很有说服力,同时也可鞭策其他学生,从而全面调动学生的积极性。面对那些微不足道的优点,教师则宜私下表扬,避免夸夸其谈、哗众取宠,否则,有些学生会因一点点小成绩就沾沾自喜。另外,还要忌赞过多,让学生学会“惜赞如金”。

工作流分析及设计

工作流系统需求分析及设计 业务过程描述: 工作流是一种反映业务流程的计算机化的、实现经营过程集成与经营过程自动化而建立的可由工作流管理系统执行的业务模型。工作流起源于生产组织和办公自动化领域,其目的是将现有工作分解,按照一定的规则和过程来执行并监控,提高效率,降低成本。 下图是用户使用工作流系统的业务过程:

业务模型描述:

系统组成: 工作流管理系统由客户端、流程定制工具、流程监控与管理和工作流运行服务四个部分组成,下图是系统构件图: 系统功能划分: 工作流管理系统是指运行在一个或多个工作流引擎的软件上用于定义、实现和管理工作流运行的一套软件,从用户建模的过程来看在建立阶段功能主要是工作流过程和相关活动的定义和建模,在运行阶段包括运行流程的监控、管理以及执行过程中的人机交互等。 工作流管理系统由流程定制工具、流程监控与管理、工作流运行服务和客户端交互四个部分组成,整个系统的使用者可以分为四种:系统管理员、流程设计人员、流程管理人员、普通用户。 下图是整个工作流管理系统的顶层用例:

第一部分流程定制工具 本部分主要完成企业信息流中业务过程的图形化建模,定制工具提供丰富的图形化元素、简单易懂的建模方法以及完善的模型管理方式。 流程定制用例图:

打开流程模型 参与者:流程设计者。 前置条件:流程定制工具已经打开。 后置条件:被选择的流程模型中的内容被展开。 步骤序列: 1.打开流程模型列表或新建流程模型文件。 2.选择流程模型文件名称。 3.展开流程模型中的设计内容。 保存流程模型 参与者:流程设计者。 前置条件:某个流程模型已经被打开,并且被修改。 后置条件:修改过的流程模型存到了物理文件中。 步骤序列: 1.保存流程模型到物理文件中。 删除流程模型 参与者:流程设计者。 前置条件:拥有可被删除的流程模型。 后置条件:选中的流程模型被删除。 步骤序列: 1.用户打开流程模型列表。 2.用户选择想要删除的流程模型。 3.系统删除选中的流程模型。 导入导出流程模型 参与者:流程设计者。 前置条件:拥有可被导入的文件或导出的流程模型。 后置条件:流程模型被导出成文件或模型文件被导入到设计系统成为流程模型。 步骤序列: 1.用户打开可被导入文件列表或设计工具中的流程模型列表。 2.用户选择将被导入的流程文件或选择将被导出的流程模型。 3.系统把导入文件生成流程模型或把导出流程模型生成流程文件。 流程发布 参与者:流程设计者。 前置条件:拥有设计完成并可供发布的流程模型。 后置条件:流程模型被发布并可通过客户工具执行。 步骤序列: 1.用户打开流程模型列表。 2.用户选择发布的包或流程。 3.用户选择发布的运行服务器。 4.用户形成发布版本。

小学语文高效课堂的几点反思

小学语文高效课堂的几点反思 走进了高效课堂小学语文教学,在这一过程中,我真切地看到了自己成长的轨迹,真切地感受到了一位位充满活力的优秀教师,一节节撞击着智慧火花的语文课堂。主体意识,创新意识感人深思,“高效课堂教学耳濡目染。我曾兴奋地说,高效课堂教学真好。构建教学以真的精彩。我谨以个人体会谈谈小语教学的一点反思。 记得在改革开始的时候,很多教师这样说:“课程改革虽是一个实验的过程,但它却关系着千千万万个孩子一生的命运!”教育家杜威先生说过:“给孩子一个什么样的教育,就意味着给孩子一个什么样的生活!”我以为:“教师在乎什么,学生就发展什么.” (一)给学生一个“情感的课堂”。 1、一个语文教师应该让学生觉得极富“激情”在语文课中,如何体现语文学科的“人文性”,其基点就在于“情感”。一个没有激情的教师,如何能调动学生的情感,能让学生充满热情地学习?展现给学生一个“充满激情的我”,陪伴孩子度过每一段“燃烧的岁月”! 2、尊重“需要”,注重“激趣”。 通过多种方式在教学过程中激发学生学习兴趣,或直观演示、或旁征博引、或巧设悬念……激发他们的阅读欲望和动机,创造“我要学”“我想学”的积极教学气氛。为了激发学生的学习兴趣,我在教学《只有一个地球》这篇课文时,我找来银河、天体、宇宙的图片和资料与学生一同欣赏,当浩瀚的宇宙呈现在孩子们眼前的时候,我是那样真真切切地感受到了他们渴求的眼神!他们太想了解银河、了解宇宙了!我扣之心弦地提出:“你们想问银河些什么呢?你还想说些什么?”孩子们个个兴趣盎然,跃跃欲试。“激趣”极大地调动了学生的主动性和积极性,教学过程也就“变苦为乐”。 3、教学活动中要注重置师生于课文、作者、情景之中,也就是“溶情”。“登山则情满于山,观海则意溢于海”,教学当中的“情”犹如教与学双边活动的“催化剂”,有了它,学生才会在教师的点拨下进入课文佳境。 (二)给学生一个“交流的课堂”。 以前的语文课堂,学生只是可怜的倾听者,谈不上和谁去“交流”。我们要还给学生一个“交流”的课堂,实现“文本对话”、“师生交流”和“生生交流”。 (三)给学生一个“开放的课堂”。 1、让孩子去“展示自己”。 “教学不仅仅是一种告诉,更多的是学生的一种体验、探究和感悟”。 给孩子多大的舞台,他就能跳出多美的舞蹈。课堂是什么啊?课堂是激情燃烧的动感地带,是他们求知、创造、展示自我、体验成功的平台。是学生健康成长的地方。学生的潜力是无限的,关键在于教师是否给了学生足够大的平台。孩子的创造力有时简直是我们难以想象的:一位教师在教学《乌鸦喝水》时,接触到了两组形近字,“鸟”和“乌”,“喝”和“渴”。这一直以来都是教学的难点,教师让孩子们自己思考,竟得出了这样的答案:对于“乌”的理解:“乌”表示黑色;“乌”比“鸟”少一点,是因为乌鸦全身都是黑的,以致于我们看不到它的眼睛了。 对于“喝、渴”的区别,学生这样说:“喝水”要用口喝,而且必须把嘴张大(形象说明“口”的字形),所以是口字旁;“渴”是因为口渴了特别想喝水,

工作流引擎技术

1.1工作流引擎技术 工作流概念的提出是人们注意到了隐藏在业务处理的过程控制的共性,并从业务处理操作中分离出过程逻辑单独加以研究,从而可以实现过程优化配置和重组。但是,多年来,不同的研究者和产品供应商从不同的角度给出了工作流的定义。下面分别从工作流定义及工作流相关术语进行解释,并分析工作流应用中所遇到的多种模式,提出了工作流参考引擎、处理模型、体系结构等。 1.1.1工作流定义 WfMC给出的工作流的定义[21]:工作流(Workflow)是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则,文档、信息或任务能够在不同的执行者之间传递、执行。 工作流是指业务领域的流程,它描述了业务过程中的各个要素以及要素之间的关系。 业务过程则是对工作流的抽象,通过对业务过程中各要素的描述形成过程定义。过程定义是过程自动化的基础数据,它通过工作流引擎进行管理。 下面将对工作流引擎技术中涉及到的一些基本概念给出其定义。这些概念包括:工作流引擎、业务过程、过程定义、活动、自动活动、人工活动、实例、过程实例、活动实例、工作流参与者、工作项、工作项列表等。 1.工作流引擎 工作流引擎是一个软件系统,它定义、创建和管理工作流的执行,并且运行在一个或多个工作流引擎之上。工作流引擎能够解释过程定义、实现与工作流参与者的交互并且调用各种外部IT工具和应用。 2.业务过程 一个包含一个或多个相关程序或活动的集合,这些程序或活动共同实现一个业务或决策目标。通常地,业务过程存在于一个定义了职能角色和业务关系的组织结构中。 3.过程定义 过程定义是对业务过程的描述,这种描述形式支持诸如建模、通过工作六管理系统执行等操作的自动化处理。过程定义有活动和它们之间的关系组成,这些活动和关系形成了一个网状结构,并且还包含过程开始和结束条件和各活动的详细信息,如活动参与者、相关应用和数据等。 4.活动 活动是对一份工作的描述,它是过程中的一个逻辑步聚。一个活动可以是

如何小学语文教学中进行情感教育

如何在小学语文教学中进行情感教育 现代教育要培养全面发展的人才,现代生活要求有良好的情感,尤其是儿童情感的荒漠化都呼唤情感教育,而语文教学无论从学科性质还是学科教材上,都有着进行情感教育的得天独厚的条件。 一、优化教学情境,激发学生情感 创设情境,是指在语文教学活动中,营造融洽的有利于教学的心理氛围。用富于形象、生动、优美的激情语言,激发学生的学习热情;或以具体形象的画面、实物、电脑图象等教学媒体,将学生引入到所要学习的情境之中,以激起学生的情思。当然,创设情境的途径有很多,比如,实物演示、角色扮演或课本剧表演、现场参与、小品表演、语言描述等均不失为营造体验情境的良好方式。教师在教学时,如果能绘声绘色地描摹出作品的境界,引导学生身临其境,让学生陶醉其间,使之通过亲身的情感体验,必然能产生“豁人耳目”的美感,从而自然受到情感的熏染。例如在讲授《卖火柴的小女孩》时,语文教师在朗读时首先要酝酿好思想感情,不要泛泛的读,要尽量用低沉缓慢的基调范读,读到小女孩见到种种幻想充满希望,表现喜悦、惊奇,语调稍快,进入童话角色,然后让学生自由读,个别读,齐读,引导学生入情入境,激起学生对小女孩悲惨命运的同情,对贫富悬殊的旧社会的强烈不满。再例如教师在讲授《长征》一课时,首先要一一介绍这首诗的有关知识、作者和写作背景,然后运用《长征》的歌曲为背景音乐,以营造与诗词相同的磅礴壮美的气氛。再例如我由此在讲解三国演义的片段时,首先用多媒体播放了电视剧《三国演义》的主题歌,随着刘欢那豪放、浑厚、悠远而略带苍凉的歌声,很快唤起学生对电视剧《三国演义》有关情节、场面的回忆,激发了他们的学习兴趣,奠定了鉴赏的基调。学习李白的《静夜思》时,我采用“月夜思故乡”的多媒体镜头并配以节奏舒缓、音调低沉的乐曲来诱发学生对思乡情的体验。 二、教师要具备情感素质和教学艺术 罗曼?罗兰说:“要撒播阳光在别人心中,总得自己心中有阳光。”苏霍姆林斯基说过:“热爱自己学科的教师,他的学生也充满热爱知识、科学、书籍的感情情感教育对教师提出了一个十分重要的任务,它要求教师要有广博的知识,更要有一颗博爱、宽厚、敏锐的心。教师应做到爱自己的职业,爱自己所教的学科,爱自己的学

小学语文教学如何正确把握“情感”内涵

小学语文教学如何正确把握“情感”内涵 发表时间:2012-01-17T11:19:19.187Z 来源:《中小学教育》2012年2月总第90期供稿作者:白璐[导读] 文本的基本要素是语言,语言的本质属性又是生命意识的符号化。 白璐河北省武安市北安庄乡南安庄小学056300 摘要:文本的基本要素是语言,语言的本质属性又是生命意识的符号化。情感不是靠教者“告诉”、“灌输”、“讲解”的,语文教学更多的是要通过语言文字进行思想的磨砺和情感的熏陶。 关键词:语文人文情感 眼下,语文教学中出现的某些现象值得思考,文本在教学中的地位仅仅是引出话题,教者往往围绕一些问题转:你感悟到了什么?你读懂了什么?你想对他说些什么?学生活动由此出发,信马由缰,任意驰骋。语文课上,花上大量的时间去听歌、看录像,常常是歌听了、舞跳了、画画了,唯独“语文”没有了。如此离开语言文字的载体加以思想教育、情感熏陶等,语文教学则远离了“语”和“文”的家园。 文本的基本要素是语言,语言的本质属性又是生命意识的符号化。情感不是靠教者“告诉”、“灌输”、“讲解”的,语文教学更多的是要通过语言文字进行思想的磨砺和情感的熏陶。人文情感是学生对语言文字感知的基础上油然而生的,是学生感受之后体验的结果。学生对教材中语言文字的理解,以及由此产生的疑问与感受,应成为我们帮助学生形成正确的价值观和积极的人生态度的教育资源。如果离开对课文的“咬文嚼字”,人文教育变成了无源之水、无本之木。 某位教师教学《船长》一课,首先让学生诵读感悟:(1)在这千钧一发的关头,船长哈尔威是怎么做的呢?请大家自由地读课文,找出文中相关的句段。(2)读一读这些句段,把你最感动的地方画下来,想一想让你感动的原因。接着组织集体交流:谁愿意把自己感动的句段读给大家听?能说说你感动的理由吗?教学中,教者放手让学生朗读自己“深受感动的句子”,学生读来读去,却没有真正抓住课文中最能表现船长哈尔威伟大人格的关键词句“读进去”,诵读成了感悟课文的“过场”。教者把教学的目光局限在令学生感动的语句上,试图在学生的“感动”中体验到船长的英雄形象。殊不知,丢掉语言文字的感悟和实践,人文又从何而来?学生对船长的所作所为还没有真切的理解和体验,怎么会在心中萌动对英雄的崇尚? 关于这篇课文的教学,我撰写了一份教例,现摘其片断: 首先是围绕问题,自主阅读。 1.“诺曼底”号客轮即将沉没的关键时刻,船长哈尔威是怎么做的呢?让我们打开课本,认真研读船长的一言一行,去和船长一起经历这生死存亡的20分钟。 2.学生选择自己喜欢的方式自主地阅读课文,并注出自己的阅读感受。 其次是交流感悟,重点体验。 1.学生在小组中交流,教师指导参与。 2.集体交流,重点围绕以下方面研读: A.哈尔威船长站在指挥台上,大声吼道:“大家安静,注意听命令!……必须把60人全都救出去!” (1)从这段话中你体会到了什么?能把自己的感受通过朗读读出来吗? (2)还有谁愿意当“船长”的?让我们每一个人都来当一次哈尔威船长! B.船长威严的声音压到了一切呼号和杂乱,黑暗中人们听到了一段简短而有力的对话…… (1)这段对话中,你体会到了什么呢?你愿意和谁把自己的体会读出来? (2)资料链接:吉林市2.15特大火灾的报道。联系报道内容,再读读课文内容,大家有什么新的感受吗? C.船长哈尔威屹立在舰桥上……人们透过阴森恐怖的薄雾,凝视着这尊黑色的雕像徐徐沉入大海。 (1)船长哈尔威望着获救的船员和乘客,他心中一定心潮澎湃,此时,他会想到些什么呢? (2)可是他没有说一句话,没有做一个手势,他成了夜幕中一尊黑色雕像,凝视这尊黑色雕像,难道大家不想把自己心中的感动读出来吗? (3)凝视着这尊黑色的雕像徐徐沉入大海,假如你就是一名获救的船员或乘客,你想对他说些什么呢? 这样,抓住课文中折射船长伟大灵魂的重点语句,细细品味,来体验船长的沉着镇静、先人后己;透过船长在轮船沉默一瞬间纹丝不动的表情,引导学生展开想象的翅膀,走进船长澎湃的内心世界;通过角色置换:假如我是一名获救的船员或乘客,我会对船长说些什么?这一系列教法设计,不仅激活了语言文字,还激发起学生内心的“情感风暴”,从而将“读、说、听”与“感、悟、思”等语文实践活动与心灵体验过程有机地整合在一起,使本节课的教学在关注“语文”的同时更体现了“人文”。 工具性与人文性相结合,是新课程的重要理念,也是语文学科的显著特点,同其他学科相比,在语文课中进行人文教育有它独特的优势。语言文字是人性化的,它充溢着人文关怀,闪烁着人性的光芒,充满了人文魅力。“语言是存在的家”,然而,“语言从来不是孤立的存在,每个词都布满历史的脚印和充溢着生命的呼吸”。“语文的人文性”和“语文的工具性”同样重要,犹如语文教学的两翼,谁也不可或缺。没有人文,就没有语文这个工具;舍弃人文,就无法真正掌握语言这个工具。苏霍姆林斯基在《给教师的建议》中写道:“我努力做到,使一个词对儿童来说,不仅仅是一种东西、对象或现象的标志,而且使它带有情感的色彩——带有它的芬芳的香气和丰富多彩的色调。重要的是,要使儿童像倾听美妙的旋律一样倾听词……”果真如此,我们的语文教学则成为学生的生命之旅。

(专题研究)小学语文教学中的情感教育

小学语文教学中的情感教育 (2010---2011专题研究)情感教育是教师依据一定的教育教学要求,通过相应的教育教学活动,促使学生的情感领域发生积极变化,产生新的品质的过程,也是教师在尊重学生情感的基础上与学生进行交流和沟通的过程。近年来,人们越来越重视情感教学,情感教育在小学语文教学中占有越来越重的分量,没有情感的语文教学就像无源之水、无本之木。 一、在小学语文教学中实施情感教育的意义 1、调控作用。小学生的情感特征十分鲜明突出,尤其是小学低年级学生,他们情感丰富,对一切客观事物都怀着极大的热情,而且又具有强烈的好奇心。但他们由于年龄、知识和经验的限制,对客观事物又不具有穿透现象看本质的能力,因此感情不够深刻,不但情感外露,而且易冲动,稳定性和可控性都比较差。他们需要被理解,需要交流和沟通,更需要教师的尊重和肯定,而情感教育就是教师在尊重学生情感的基础上与学生进行交流和沟通的过程,因此它能有效地调控学生的情感,最大程度地开发学生的内驱力,充分发挥学生的心理潜能,从而建立一个生爱学、师乐教的良好教学氛围,更好地激发学生的学习兴趣,提高语文教学效果。 2、熏陶作用。由于情感教育具有渗透性,能够通过语文教学将文中所承载的情感溶进学生的血液,成为学生的情

感。因此,在小学语文教学中开展情感教育对培养学生健康纯洁的感情、坚贞高尚的节操、爱憎分明的态度有着潜移默化的熏陶作用。它能不露痕迹地启发学生,挖掘学生的灵性,唤起学生爱憎亲仇的健康意识,从而使其向善的情感不断得到巩固。不过这要求教师本身就要是健康情感的拥有者,因为低年级学牛的情智还不够成熟,还不能有意识地分辨教师的情感取向,假如教师的情感出现偏蓐,是非、爵恶、好坏态度不明确,就会在不知不觉中影响学生。 3、审美作用。语文教材为学生提供了丰富的审美对象,它们都浸透着作者丰富的思想感情。学生们要从审美对象中感受到美,获得美感,就必须要有情感。而情感教育有助于学生内化情感,并在情感的渗透和驱使下去发现美,感受美,从而提高他们的审美能力,净化他们的心灵,陶冶他们的情操,提升他们的思想境界。因此在小学低年级语文教学中实施情感教育不但能优化学生的情感,打开他们内在思维的情感闸门,而且还能让他们在真情的交融中领略各种审美情韵。 二、在小学语文教学中实施情感教育的方法 在小学语文教学中,怎样才能充分利用和调动低年级学生的情感因素呢?我认为可以从教师创情和学生体情两个方面着手。 1、创设教学情境,诱发情感共鸣。据心理学分析,儿童的情感往往是比较肤浅的,他们的脸部表情便是他们的晴

相关文档
最新文档