关于作者

姓名:

性别:男

出生日期:

地区:安徽-合肥

联系电话:

QQ:--

婚否:保密
用户名:sagesse
笔名:sagesse
地区: 安徽-合肥
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



http://xly1981.blog.edu.cn

朱子容的blog

访问统计:
文章个数:19
评论个数:5
留言条数:0




Powered by BlogDriver 2.1

Sagesse的博客

 

欢迎访问sagesse的博客

文章

Xerces DOM 读取

清单 1. Xerces DOM 顶级代码

 1  // parse the document from input stream ("in") 
 2  DOMParser parser = new DOMParser(); 
 3  parser.setFeature("http://xml.org/sax/features/namespaces", true); 
 4  parser.parse(new InputSource(in)); 
 5  Document doc = parser.getDocument(); 
 6  // recursively walk and modify document 
 7  modifyElement(doc.getDocumentElement()); 
 8  // write the document to output stream ("out") 
 9  OutputFormat format = new OutputFormat(doc);
 10  XMLSerializer serializer = new XMLSerializer(out, format);
 11  serializer.serialize(doc.getDocumentElement());
正如我在注释中指出的,清单 1 中的第一块代码(第 1-5 行)处理对输入流的语法分析,以构建文档表示。Xerces 定义了 DOMParser 类,以便从 Xerces 语法分析器的输出构建文档。InputSource 类是 SAX 规范的一部分,它能适应供 SAX 分析器使用的几种输入形式的任何之一。通过单一调用进行实际的语法分析和文档构造,如果成功完成了这一操作,那么应用程序就可以检索并使用已构造的 Document。
第二个代码块(第 6-7 行)只是将文档的根元素传递给我马上要谈到的递归修改方法。这些代码与本文中所有文档模型的代码在本质上是相同的,所以在剩余的示例中我将跳过它,不再做任何讨论。
第三个代码块(第 8-11 行)处理将文档作为文本写入输出流。这里,OutputFormat 类包装文档,并为格式化生成的文本提供了多种选项。XMLSerializer 类处理输出文本的实际生成。
Xerces 的 modify 方法只使用标准 DOM 接口,所以它还与任何其它 DOM 实现兼容。清单 2 显示了代码。
清单 2. DOM Modify 方法 
 1  protected void modifyElement(Element element) { 
2    // loop through child nodes 
3    Node child; 
4    Node next = (Node)element.getFirstChild(); 
5    while ((child = next) != null) { 
6      // set next before we change anything 
7      next = child.getNextSibling(); 
8      // handle child by node type 
9      if (child.getNodeType() == Node.TEXT_NODE) {
10        // trim whitespace from content text
11        String trimmed = child.getNodeValue().trim();
12        if (trimmed.length() == 0) {
13          // delete child if nothing but whitespace
14          element.removeChild(child);
15        } else {
16          // create a "text" element matching parent namespace
17          Document doc = element.getOwnerDocument();
18          String prefix = element.getPrefix();
19          String name = (prefix == null) ? "text" : (prefix + ":text");
20          Element text = 
21            doc.createElementNS(element.getNamespaceURI(), name);
22          // wrap the trimmed content with new element
23          text.appendChild(doc.createTextNode(trimmed));
24          element.replaceChild(text, child);
25        }
26      } else if (child.getNodeType() == Node.ELEMENT_NODE) {
27        // handle child elements with recursive call
28        modifyElement((Element)child);
29      }
30    }
31  }

清单 2 中显示的方法所使用的基本方法与所有文档表示的方法相同。 通过一个元素调用它,它就依次遍历那个元素的子元素。如果找到文本内容子元素,要么删除文本(如果它只是由空格组成的),要么通过与包含元素相同的名称空间中名为“text”的新元素来包装文本(如果有非空格的字符)。如果找到一个子元素,那么这个方法就使用这个子元素,递归地调用它本身。

对于 DOM 实现,我使用一对引用:childnext 来跟踪子元素排序列表中我所处的位置。在对当前子节点进行任何其它处理之前,先装入下个子节点的引用(第 7 行)。这样做使得我能够删除或替代当前的子节点,而不丢失我在列表中的踪迹。

当我创建一个新元素来包装非空白的文本内容(第 16-24 行)时,DOM 接口开始有点杂乱。用来创建元素的方法与文档关联并成为一个整体,所以我需要在所有者文档中检索当前我正在处理的元素(第 17 行)。我想将这个新元素放置在与现有的父元素相同的名称空间中,并且在 DOM 中,这意味着我需要构造元素的限定名称。根据是否有名称空间的前缀,这个操作会有所不同(第 18-19 行)。利用新元素的限定名称,以及现有元素中的名称空间 URI,我就能创建新元素(第 20-21 行)。

一旦创建了新元素,我只要创建和添加文本节点来包装内容 String,然后用新创建的元素来替代原始文本节点(第 22-24 行)。

- 作者: sagesse 2007年01月24日, 星期三 11:14  回复(0) |  引用(0) 加入博采

读取xpdl
2:用户、组管理

这个例子既不能在LDAP组件下运行,也不能在基于数据库组件为空时运行,你至少拥有一个组和一个用户的情况下才能运行。

Shark.configure();

   UserGroupAdministration ugAdmin =

      Shark.getInstance().getAdminInterface().getUserGroupAdministration()

   ugAdmin.crateGroup("developers","sweat-shop");

   ugAdmin.createUser("developers", "user", "secret", "Jane Doe", "some@email.address");

   System.out.println("Group and user created!");

 

3:向shark库中加载包

XPDL文件包的位置和知识库包的根目录是有关的。在你执行这个操作以前,你可能想通过调用getDefinedPackagesPath()方法在你的客户端对象中得到所有的相关路径。

首先,你需要得到XPDL文件相对于知识库根路径的位置,然后,你需要一个PackageAdmininistration实例。

String xpdlName = "test.xpdl";

   Properties props = new Properties();

   props.setProperty("enginename","testSharkInstance");

   props.setProperty("EXTERNAL_PACKAGES_REPOSITORY","c:/Shark/repository/xpdls");

   Shark.configure(props);

   String pkgId = Shark.getInstance().getRepositoryManager().getPackageId(xpdlName);

   PackageAdministration pa = Shark.getInstance().getAdminInterface().getPackageAdministration();

   if (!pa.isPackageOpened(pkgId)) {

      pa.openPackage(xpdlName);

   }

   System.out.println("Package "  xpdlName  " is loaded");

 

4:创建或者开始一个流程

在将xpdl文件加载到shark以后,让我们创建,初始化变量值,启动一个基于xpdl定义的流程。

String pkgId="test";

   String pDefId1="basic";

   String pDefId2="complex";

 

   SharkConnection sConn=Shark.getInstance().getConnection();

 

   sConn.connect("user","secret","","");

 

   WfProcess proc1=sConn.createProcess(pkgId,pDefId1);

   WfProcess proc2=sConn.createProcess(pkgId,pDefId2);

 

   proc1.set_process_context("test_var","This is String variable defined in XPDL for the process basic");

   proc2.set_process_context("counter",new Long(55));

 

   proc1.start();

proc2.start();    

 

5:设置变量

在成功地连接上shark,获得分配列表以后,让我们做点有用的事,像设置变量和完成活动。

/*

   SharkConnection sConn;

   String activityId;

   String vName;

   String vValue;

    */

   WfAssignment a = null;

   WfAssignment[] ar = sConn.getResourceObject().get_sequence_work_item(0);

   for (int i = 0; i < ar.length;   i) {

      if (activityId.equals(ar.activity().key())) {

         a = ar;

         break;

      }

   }

   if (null == a)

      throw new BaseException("Activity:"

                                activityId

                               " not found in "

                                sConn.getResourceObject().resource_key()

                               "'s worklist");

   if (!a.get_accepted_status())

      throw new BaseException("I don't own activity "  activityId);

   Map _m = new HashMap();

   WfActivity activity = a.activity();

   Object c = activity.process_context().get(vName);

   if (c instanceof Long) {

      c = new Long(vValue);

   } else {

      c = vValue;

   }

   _m.put(vName, c);

   activity.set_result(_m);

   activity.complete();    

 

6:得到基于一些标准的流程管理器

这个例子演示了如何得到基于一些标准的流程管理器。他将尝试得到包Id为“test”的,状态为enabled的所有流程的管理器。

ExecutionAdministration eAdmin=Shark.getInstance().getAdminInterface().getExecutionAdministration();

   eAdmin.connect("user","secret","","");

 

   WfProcessMgrIterator pmi=eAdmin.et_iterator_processmgr();

   query="packageId.equals(\"test\") && enabled.booleanValue()";

   pmi.set_query_expression(query);

   WfProcessMgr[] procs=pmi.get_next_n_sequence(0);

 

7:得到基于一些标准的流程

这个例子演示了如何得到基于一些标准的流程管理器创建的流程,它将试图得到所有的状态为:”open running”,创建时间为最近10分钟,活动的活动数超过3个的流程。他的String变量myvariable的值为test

/*

   WfProcessMgr mgr;

   */

 

   WfProcessIterator wpi=mgr.get_iterator_process ();

   query="state.equals(\"open.running\") && startTime.longValue()>(java.lang.System.currentTimeMillis()-10*60*1000) && activeActivitiesNo.longValue()>3 && context_myvariable.equals(\"test\")";

   wpi.set_query_expression(query);

   WfProcess[] procs=wpi.get_next_n_sequence(0);

 

8:使用外部事物

每一个Shark API方法调用都使用独立的事物,引擎内部创建,使用,提交,最后释放事物。这意味着即使是非常简单的代码应用,shark也会不自觉地使用了很多事物。

有时,做一件事情有点不同是必要的,因此,SharkTransaction被介入。一个应用程序开发者可能会有很多理由来选择外部的事物,包括用同一个数据库存储应用程序数据的方法,以避免经常地创建/销毁事物……

当然,这种处理带来了一个代价,:你必须服从用法的规则。Transaction被调用Shark.getInstance().createTransaction();方法创建。在你释放他之前,你的应用程序必须调用Shark.getInstance.unlockProcesses(st);来通知shark做内部登记。如果有任何错误出现,你必须捕捉这个抛出,然后调用Shark.getInstance().emptyCaches(st);是的,在你正确地读他时,错误必须被捕捉到,另外你将允许引擎处在为定义状态下。

下面是一个修改一个单独事务中的变量的例子。

/*

SharkConnection sConn;

String activityId;

String vName;

String vValue;

*/

SharkTransaction st = Shark.getInstance().createTransaction();

try {

WfAssignment a = null;

WfAssignment[] ar = sConn

.getResourceObject(st)

.get_sequence_work_item(st, 0);

for (int i = 0; i < ar.length; i) {

if (activityId.equals(ar.activity(st).key(st))) {

a = ar;

break;

}

}

if (null == a)

throw new BaseException("Activity:"

activityId

" not found in "

sConn.getResourceObject(st).resource_key(st)

"'s worklist");

if (!a.get_accepted_status(st))

throw new BaseException("I don't own activity " activityId);

Map _m = new HashMap();

WfActivity activity = a.activity(st);

Object c = activity.process_context(st).get(vName);

if (c instanceof Long) {

c = new Long(vValue);

} else {

c = vValue;

}

_m.put(vName, c);

activity.set_result(st, _m);

activity.complete(st);

st.commit();

} catch (Throwable t) {

Shark.getInstance().emptyCaches(st);

st.rollback();

if (t instanceof RootException)

throw (RootException)t;

else

throw new RootException(t);

} finally {

try { Shark.getInstance().unlockProcesses(st);} catch (Exception _){}

st.release();

}

 

XPDL流程定义

(你可以通过我们提供的XPDL编辑器JaWE非常容易地创建XPDL文件)

如何为一个活动写一个最后期限异常?

shark中,最后期限异常和所有的流程变量一样,你可以使用这个特殊变量。这个变量的java类型为java.util.Date,下面是他们的描述:

lPROCESS_STARTED_TIME-流程开始时间

lACTIVITY_ACTIVATED_TIME-工作流流程中的活动或者分配创建的时间

lACTIVITY_ACCEPTED_TIME-活动中第一个分配被接受的时间

注意:

如果一个活动在接受之后被拒绝了,或者他从来就没被接受,ACTIVITY_ACCEPTED_TIME 将被设置成最大值。

下面是当最后期限异常被创建时的一些规则:

l最后期限异常一定能得到一个java.util.Date结果。

l如果shark被安装为不做最后期限评估,但是初始化最后期限限制时间评估,则ACTIVITY_ACCEPTED_TIME在异常中部能够被使用,因为他在将来将包含最大值。

l这里不因该有流程变量(XPDL中的DataField或者FormalParameter实体),他们有相同的ID

下面是最后期限异常的一些例子:

// Deadline limit is set to 15 secunds after accepting activity

var d=new java.util.Date();

d.setTime(ACTIVITY_ACCEPTED_TIME.getTime() 15000);

d;

// Deadline limit is set to 5 minutes after activity is started (activated)

var d=new java.util.Date();

d.setTime(ACTIVITY_ACTIVATED_TIME.getTime() 300000);

d;

// Deadline limit is set to 1 hour after process is started

var d=new java.util.Date();

d.setTime(PROCESS_STARTED_TIME.getTime() 3600000);

d;

shark admin应用中,如何写扩展属性使其能够更新和查看活动变量

为了在shark admin应用程序中更新活动变量(被XPDL定义),XPDL活动定义必须包含一些预定义的扩展属性。假如XPDL流程定义包含变量(XPDL DataField tag)叫作“x”,并且变量(XPDL FormalParameter 类型)叫作”input_var”。如果当活动执行时,你是一个admin用户,你能够查看这些变量,你应该定义如下的活动扩展属性:

如果你想让用户更新相同的变量,你应该定义如下的活动扩展属性:

 

shark中如何写一个XPDL是用户使用自定义JAVA

为了实现这个功能,你应该定义变量作为XPDL的外部参考,并且设置它的属性位置和你想使用的类的全名,像这样:

可能一个好的方法是定义一个类型声明元素,如果那样的话,你能够在任何地方使用它(在创建应用程序或者子流程的FormalParameters时,你不需要时间去定义适当的数据类型)

然后定义DataField或者FormalParameter如下所示:

被外部引用元素指定的类必须在sharkclasspath中。

 

XPDL中如何定义一些变量的初始化值为空

你应该在DataFieldInitialValue元素中简单地付值:

null

这能够使你使用java接口或者抽象类来作为工作流变量。而这些变量的具体实现将被一些公具代理创建。

 

如何制定脚本语言

目前shark指定了三种脚本语言解释程序:javascript,BeanShellPython(最后一种没有完全测试)。为了告诉shark使用的是哪种脚本语言解析条件表达式,你应该指定包的脚本元素:

# if you want to use java-like syntax (interpreted by BeanShell), specify:

- 作者: sagesse 2007年01月23日, 星期二 19:14  回复(0) |  引用(0) 加入博采

bpel and xpdl difference
BPEL和XPDL最主要的区别是在对有事务性的组合流程方面,BPEL的重点是把多个活动以流程的方式组合起来,成为一个新的程序,这个程序内部的模块相互可以传递数据,并且作为一个事务而管理。XPDL的重点是把流程的结构描述出来,至于流程内的各个活动之间的关联,以及整个流程的事务管理则不在考虑之列。所以XPDL多用于文档管理,业务流程组织以及映像编辑管理业务等方面,而BPEL则多用于业务整合,业务流程管理等方面。

- 作者: sagesse 2007年01月19日, 星期五 16:17  回复(0) |  引用(0) 加入博采

wf
 

在发散模型中,活动A结束后,有M(2<=M<=9999999999..)个直接后继的可选活动

1)M项发散

        后面M项活动同时enabled,正式名称为Parallel Split

2)1项发散

        后面只可能一项活动enabled,正式名称为exclusive choice

3)N项发散

        后面可能有N项活动同时enabled,(1<=n<=m),正式名称为multiple choice

目前,一般的工作流产品及XPDL标准只支持前两项,对N项发散支持的不太强,但已经有产品如MQSeries/Workflow等直接较好的支持N项发散.

- 作者: sagesse 2007年01月19日, 星期五 15:34  回复(0) |  引用(0) 加入博采

wf1
基本上所有的工作流标准都支持M项聚合和单项聚合,而对N项聚合,每个标准的支持程度是
不一样的,XPDL标准不支持N项聚合.

- 作者: sagesse 2007年01月19日, 星期五 15:33  回复(0) |  引用(0) 加入博采

许小平谈人生规划

 徐小平,新东方教育科技集团董事,新东方文化发展研究院院长,2003年荣登中国《福布斯》名人录,被中国青年一代尊称为“人生设计师”。 
   靠自己的劳动赢得生存就是成功 
  难以找到工作的青年,一般有三种情况:一是缺少求职技巧的人;二是缺乏就业竞争力的人;第三种人我觉得最糟糕——他们认为“仅为生存工作是可耻的”,认为“大学生去当家政,扫厕所,去卖肉……是丢人的行为。”这种丢人的感觉,恰恰是最丢人的! 大出国在线 /
  生存永远在成功之前,换言之,靠自己的劳动赢得生存,本身就是一种成功。假如上帝暂时没有给你很多机会,就让你扫厕所,那么你就必须面对现实,把厕所扫好。我在美国就扫过厕所。如今职场竞争激烈,人必须树立最基本的就业价值观:靠自己的劳动生存,永远是最基本的追求!只有把胃填饱之后,才有机会充实头脑,提升自己。 

  伟大出于平凡,辉煌也来自卑微,微软离破产永远只有半年,你离挨饿或许只有三天。首先要生存下来,才能更好地追求其他梦想。 

  我有个亲戚,大学刚毕业,去搬电脑,我说祝贺你了,就从搬运工做起。哪个旅馆的总裁不是从端盘子、打扫房间开始的?沃尔玛特的创始人,就从一个小杂货店起家。美国著名影星史泰龙、施瓦辛格,在成名之前都曾做过裸体模特,李嘉诚14岁就肩负养家糊口的重大责任,天天琢磨下一顿吃什么……当年我这个北大教师,一心想成为音乐家或者哲学家,但到了美国,也感到生存的艰难。我洗碗扫地,给必胜客送外卖,就差流浪街头了。把滚烫的比萨在没有变冷变硬之前送到客户手上,成了我惟一的艺术追求——同事笑我:送个比萨也这么激情!可是我感到自豪,激情不是浮躁,不是幻想,激情是执著当下,全身心投入,激情是做好眼前事的一种素质。 

  我承认浮躁是一种时代必然。同样教育背景的人,有人月薪几万人民币,有人1000元人民币,人心不可能不浮躁,但是,你必须把手头的工作做好,才可能真正进入一个成功者的境界。所谓成功者,并不单纯指百万富翁,也包括那些完美地完成一件工作,进而完成每件工作的人。 
  人生的伟大目标都是从养活自己开始,立足生存,追求梦想,这就是从卑微的工作干起的基本意义所在。 
  骑驴找马的人,也不该虐待驴 

  任何人都必须有敬业精神,能把小事干好的人,成功的几率更大。永远不要抱怨工作有多么无聊、渺小,只要开始工作,就有改进、提升和扩充自己的机会。譬如背英语单词,一天背1000个单词,你肯定背不下来,会精神崩溃,但如果一天背几十个单词,就能轻松做到,以少积多。反过来,假如你一开始就想做比尔·盖茨,学哲学的一上来就想超过黑格尔,忽略手头的工作,最终可能会一事无成。 

  可以骑驴找马,但不要虐待那匹驴。要么放弃这头驴,既然要了,你就要把它当成自己的旅伴和爱人,认真对待。 

  再回头说说扫厕所,你能把你负责的厕所弄得干净明亮,卫生清洁标准也比以前提升一个星甚至两个星,就意味着职位的提升和薪水的增加。新东方发展早期,俞敏洪从讲台到灶台,从教室到厕所,什么都管,他还曾发明一个“熏醋疗法”,驱除了厕所里面难以驱除的异味,至今“俞敏洪会扫厕所”还在被新东方的元老们传诵。 

  新东方还有一个出名的“扫地王”张少云。他来自贫穷的农村,在新东方实用英语学院读了两年非正式的大专英语,毕业后就在新东方看教室、打扫卫生,但他发誓“扫地也一定要扫出出息来,扫出前途来!”他一边干好本职工作,一边确定了在新东方教书的目标,在家里挂了一个小黑板,模拟课堂,一遍一遍地讲,一遍一遍地写,坚持了一年多。到了2002年初,他把这小黑板带到新东方大楼,直接给招聘主管老师模拟讲课,一举成功。现在,张少云已经成为新东方学校最优秀的讲师之一。 

不管做什么工作,一个人的工作做到别人没法替代的程度,就算成功。这种骑驴的态度,这种认真精神和敬业精神,才会感动上帝,也是个人能得到最大发展的直接原因。 

  要抛弃“普洛克路斯忒斯之床” 

  我在新书《邮箱里的灯光》(《骑驴找马》修订版)里提出一个重要的思想:如果简单地以学历为准绳设计未来,人生的路就变得很窄;如果用市场需求来考虑、来测量自己,机会就会很多。这个思想,是针对中国社会依然盲目地追求高学历、追求留学、追求名校的风气而提出的。  
  我在书中讲了则希腊神话故事《普洛克路斯忒斯之床》:恶魔普洛克路斯忒斯有一张床,他守在路口,见到行人就把他们抓来放在床上量一量,太长就用斧子砍去脚,短了就拉长,以便符合床的标准。结果被他丈量过的人,没有一个不是一命呜呼。 
  为了符合社会公认的许多“神圣”但已经过时的人才标准,很多人也宁可把自己拉长或锯短。比如英语学习者,不把能否进行英语交流当作标准,而把四级六级当作标准。事实是,成功并没有公式化的标准和模式。设想一下,假如姚明的父母是个学历迷,强迫他学士、硕士、博士读到底才打职业篮球的话,相当于要他接受“普洛克路斯忒斯之床”的标准,那么今天就没有NBA的姚明了。 
  谈谈具体的案例。甲是家境窘迫,拿到法学学位又去考研。乙刚刚法硕毕业,就急着出国。他们都是以学位为中心,而不是以就业为中心,这样做违反市场规律。现在不少青年陷入追求高学位的盲目状态,认为出国是上品,考研是中品,就业是下品。 
  学历崇拜,出国崇拜,是坑害中国青年的一张普洛克路斯忒斯之床。这张床,威胁着当代中国青年奋斗的命运。以学位为中心来奋斗,是学位集体无意识,拿到学位未必得到前途;以就业资格为中心,是市场人才新规则,得到资格就可以获得工作,从而迈出成功第一步! 
  黑夜给了我们黑色的眼睛,我们要用它来寻找黄金 
  不管从事什么,要用敏锐的眼光,打开所有的神经天线,像捕捉爱人的眼神那样,捕捉那些与你的工作相关、但暂时还没有被商业化的需求,“就业”后“拓业”,更易获得成功。 
  我在1996年刚回新东方时,完全为了赚钱谋生,根本没有什么神圣的使命。但在出国咨询的过程中,我发现很多人盲目盲动,根本不考虑自身条件,更不考虑出国后到底做什么,反正就是为了出国而出国。在对他们的人生以及奋斗目标的拷问、反问中,我发现了一种新的咨询需求——这就是人生设计。后来我在新东方相继提出“留学申请的艺术”和“美国签证哲学”,都是在咨询过程中发现问题、解决问题、最后成为新东方的品牌成分的。 
  有个学生曾到新东方咨询,他是地理专业毕业,在北京找不到工作,特别着急,家里又穷,就想出国作最后一搏,我给劝住了,让他先就业。后来他受新东方成功的启示,想到教育贫瘠的贵阳老家也有英语培训的需求,就回去创业了。五年过去,他的事业蓬勃发展,已经成为当地赫赫有名的创业者。 
  中国的人才不是过多,而是过少。辉煌的故宫藏画艺术,被台湾公司开发出商业价值,他们利用日本超级仿真古画复制技术,生产高价成品,再向大陆推销。中国这样的市场空白增长点并不少,就等着人才开发。我常常戏言:“黑夜给了我们黑色的眼睛,我们就要用它来寻找黄金”。中国职业场上的“黄金”到处都有,就看你怎么开掘。 

  智慧建议: 

  留学、升本、考研、就业都是青年的人生选择,并无一个规则。问题是:它是否能使你们获得幸福的生活,实现人生的终极价值?我在《邮箱里的灯光》提出了重要的“三业”理论:成功无非就是就业(job)、职业(career)和事业(cause)。先要就业,也就是靠什么谋生,解决温饱;再要职业,通过稳定收入,拥有安全感;最后才是成就事业,实现人生最大价值。我呼吁我们的读者和学生,通过独立思考,打破精神枷锁,冲破思想牢笼,确定奋斗目标,以获得“就业”为最低奋斗纲领来设计自己的人生,追求个人的成功

- 作者: sagesse 2007年01月18日, 星期四 10:56  回复(1) |  引用(0) 加入博采

人生规划:事业成功的导航仪
  缺乏一个明确的梦想,即对人生没有一种设计,或许正是你很少得到提拔和不能够赚到更多金钱的原因。几年前,美国作家盖尔·希伊出版了一部畅销书,书名叫《开拓者们》,他在撰写这部书的时候,通过一份内容十分广泛的"人生历程调查问卷",间接地访问了6万多个各行各业的人士,他发现那些最成功和对自己生活最满意的人至少有两个共同的特点:第一,他们喜欢有更多的亲密朋友;第二,他们都致力于实现一个其实际能力所难于达到的目标。根据希伊的研究,这些开拓者们觉得他们的生活很有意义,而且比那些没有长远目标驱使其向前的人更会享受生活。正如西方有一句谚语所说的:如果你不知道你要到哪儿去,那通常你哪儿也去不了"。

  人生规划既是一个实现你终生目标的时间表,也是一个实现那些影响你日常生活的无数更小目标的时间表。人生规划的设计是要使你的注意力集中起来,在一个特定的时间范围里充分地利用你的脑力和体力。事实上,注意力越集中,脑力和体力的使用就越有效。人生规划可以合理地分配你的精力。以下是人生规划设计的六个步骤。

  步骤之一:发现或搞清楚你的主要人生目标是什么。

  所谓主要人生目标,应该是一个你终生所追求的固定的目标,你生活中其他的一切事情都围绕着它而存在。对于一些人来说,这个工作是一个自我发现的愉快的过程;但对于另一些人来说,它也许更是一个痛苦的过程。因为他们需要把其心绪拉回到年少的时代,在那个时候他们还没有对自己所怀抱的梦想产生疑惑。为了找到或找回你的人生主要目标,你可以问自己几个问题,比:我是谁?"、"我想在我的一生中成就何种事业?"、"临终之时回顾往事,一生中最让我感到满足的是什么?"、"在我的日常生活中是哪一类的成功最使我产生成就感?"。

  也许你很快就可以知道你的终极目标是什么,但是大多数人则不是这样的。他们在找到自己的终极目标之前往往需要在不同的场合对自己重复上面的这些或其他类似的问题。每一次向自己提出这样的问题的时候,随意地记下你的所得。开始的时候,它们可能没有什么意义,但是,多次的累积会让你茅塞顿开。

  幸福的人通常是这样一类的人,即他的职业和生活方式与他的生活目标相一致。比如,一个有着很强组织意识、文字天赋和教诲倾向的人,就很可能从编辑、教师等职业生活中得到最大满足。

  步骤之二:当你能够用一个简单的句子表达出你的人生目标了,那么你就该着手准备实现这项目标了。

  在这方面,职业的选择就是你所要着重考虑的问题。你应该知道,职业是一个工具,是帮助实现你终极目标的工具。你规划自己的职业的重要性,就像将军筹划一场战役一样,也像一个足球教练确定一场重要比赛的作战方案一样。

  你可以问自己:"我的职业正在帮助我实现人生的最终目标吗?"如果答案是否定的,那就干脆重新更换职业。倘若更换职业是不现实的,那你可再进一步问一下自己:"是否有一种途径可以让我现有的职业与我的人生基本目标一致起来?"对于第二个问题,答案常常是肯定的。例如,一个事业有成但又并不满足物质上富有的律师,他可能会利用他的部分精力做些公益事情并从中得到精神满足。又比如一个受雇于一家大公司的审计师可能会在工作之余到附近一所大学当兼职教授,从把实践经验概括成理论的讲授过程中得到他在日常枯燥工作中得不到的满足。

  最理想的职业方面的人生规划,应该是在你从学校毕业之时就开始进行了的。在这个时候,只要你心中明确你的人生大目标,你就会知道你要选择或接受什么样的一份职业。毫无疑问,你会选择那份将有助于你实现人生目标的职业。

  不过,我们也该切记:只要你还没有到安享晚年的地步,任何时候开始你的职业规划都不为晚。无论你是20岁左右刚刚踏上职业征程的年轻人,还是40岁左右并且陷在一份你不喜欢的工作之中的中年人,现在仍然是你进行职业规划的好时机。

步骤之三:在弄明白了你的职业将会帮助你实现人生更大目标之后,你应该着手考虑你的人生和职业规划中的具体细节了。

  你需要有一个详细的个人职业发展计划。这个计划可以是一个五年的计划,也可以是一个十年、二十年的计划。不管是属于何种时间范围的计划,它至少应该能够回答如下问题:1.我要在未来5年、10年或20年内实现什么样的一些职业或个人的具体目标?2.我要在未来5年、10年或20年内挣到多少钱或达到何种程度的挣钱的能力?3.我要在未来5年、10年或20年内有什么样的一种生活方式?

  对于这些问题的回答将给你提供一份有关你自己的短期目标的清单。在形成这些目标的过程中,不要纯粹地依靠逻辑思维。这一类的抉择,需要发挥你的创造力,应该把你的情绪、价值和信仰等因素全部调动起来。如果你是已婚者的话,你还需要考虑你的配偶的情绪、价值和信仰等,因为在任何的重要抉择中,他(她)总是影响你个人生活的一个部分。

步骤之四:在形成了上面的具体的短期的目标之后,你应该策划一下将如何去达成它们。
  比如,你现在是一个中层的管理人员,你的5年、10年或20年个人职业发放规划要求你成为一个高级主管。那么,怎么才有可能实现你的目标呢?如果你能够回答好如下的各项问题,那么你就应知道自己该怎样做了。这些问题是:1.我需要哪些特别的训练才能使我够资格做一名高级主管?2.我该增加哪些书本知识?3.为使自己仕途坦荡,我需要排除哪些内部的政治上的障碍?4.我目前的上司在这方面是我的一个帮助还是一个障碍?5.在目前的这个公司我最终成为高级主管的可能性有多大?在这里的机会是否比在其他公司更大?6.得到这份职位者的一般教育程度、经验水平和年龄层次是怎样的?

步骤之五:行动。

  这是所有步骤中最艰难的一个步骤,因为要求你停止梦想而切实地开始行动。我们知道良好的动机只是一个目标得以确立和开始实现的一个条件,但不是全部。如果动机不转换成行动,动机终归是动机,目标也只能停留在梦想阶段。要想实现人生的终极目标,有两个方面:陷阱"需要谨慎避免,一个是懒惰,另一个是错误,哪怕是小的错误。懒惰是事业成功的天敌。

  很多人不息地奋斗一辈子都没有能够完美地实现自己人生目标,更不用说懒惰者了。要想有一个无悔的人生,除了认准目标外,还要集中精力全力以赴。在实现人生终极目标的过程中,难免受到各种妨碍或各种诱惑,任何的闪失或偏差都会使你远离你的既定目标。然而,人非圣贤,谁人无过?只是在通往理想的艰难跋涉途中,尽可能少地犯错误。这样就可以尽可能快地达到你的目标。

步骤之六:不断地修改和更新你的人生和职业发展目标。

  人生目标的确定往往是基于特定的社会环境和条件的。这样的环境和条件总在变化,确定了目标也应该做出修改和更新,况且这样的目标虽然写出来了,但是并未镶刻在石头上,它的存在只是为你的前进提供一个架构,指示一个方向。你是它的创造者,你可以在它看起来正把你引向歧途的任何时候更改它。

- 作者: sagesse 2007年01月18日, 星期四 10:52  回复(0) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: sagesse 2006年12月3日, 星期日 12:42  回复(0) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: sagesse 2006年11月26日, 星期日 16:55  回复(0) |  引用(0) 加入博采

Enterprise Business Process Integratiod.

 

背景:

1.       传统的EAI方式:用过应用进行的各应用之间数据转换,难度非常大,

2.       数据级的集成:对于全异构数据格式在低水平上的结合,会导致数据冗余

3.       功能级的集成:不用中间件的方式由一个应用调用其它应用的泛函数,高耦合

4.       代理集成:利用中间件把要传输的信息进行转换并发到目的地,关键是数据传输过程中的连接和路由,只关心数据流,不关心活动流程。

 

BPI步骤:

1.       建模:把信息交换作为业务过程的一个部分加以研究,业务过程定义了活动、流程、子活动、子流程、变迁。过程执行者的定义,业务分析和活动(不与技术和应用结合来考虑)。

2.       执行:建模结束后,有BPM引擎执行,在运行时集成各种应用(包括手动,协作)处理

3.       模拟:有模拟工具来分析业务过程,它能在模型进入使用前分析模型的时间和费用,用于找到模型的错误。

4.       监视和优化:  下面是他们相互的关系                 

5.       BPI构建步骤

6.       BPI建模工具

7.       业务过程执行方式或引擎:BPM引擎是这个框架的心脏,当活动是并行执行时会增加线程来执行,它也执行路由和条件转换,在路由会条件转换过于复杂是,引入规则引擎来控制路由和条件转换。

8.       BPM访问web服务(核心功能)

9.       过程集成框架:业务过程的集成目标是无缝集成,(不仅对于组织,也包括合作者和用户),关注于多企业级的IT的投资

 

下图三个细节:

1.       borker EAI框架的位置,工作流引擎能通过XML层连接EAI brokerbroker能把引擎信息转换为xml格式信息。

2.       引擎连接应用程序(通过xml),不需要xml中间件

3.       应用以web服务方式暴露服务位置,工作流引擎调用web服务

 

10.外部应用:引擎调用得到的是wsdl文件,它通过WSCIWSDL    信息转换为web

服务的操作。这里连接的方式是纯的soapxml方式。这种方法在b2b中的高传输代价。并且把原有系统中的ERPCRMSCM通过BPM集成到外部系统中来.

11.入口集成:入口运行用户通过组件调用入口或工作流引擎配合的通信来访问各种企业应用.

 

 

 

- 作者: sagesse 2006年08月24日, 星期四 10:32  回复(0) |  引用(0) 加入博采