当前位置:文档之家› Struct2 工作机制及分析

Struct2 工作机制及分析

Struct2 工作机制及分析
Struct2 工作机制及分析

Struts2的工作机制及分析(转)

概述

本章讲述Struts2的工作原理。

读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。

Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebW ork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。

本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.doczj.com/doc/0e14239814.html,/xwork/downloa d.action即可自行下载。

下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到struts-2.1.0-src"struts-2.0.10"src"core"src"main"java目录下查看S truts2的源文件,如图14所示。

(图14)

主要的包和类

Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了W ebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Str uts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在Web Work的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。

以下是对各包的简要说明:

包名说明

org.apache.struts2. components 该包封装视图组件,Struts2在视图组件上有了很大加强,不仅增加了组件的属性个数,更新增了几个非常有用的组件,如updownselect、doubleselect、datetimepicker、token、tree等。

另外,Struts2可视化视图组件开始支持主题(theme),缺省情况下,使用自带的缺省主题,如果要自定义页面效果,需要将组件的theme属性设置为simple。

org.apache.struts2. config 该包定义与配置相关的接口和类。实际上,工程中的xml和properties文件的读取和解析都是由WebWork完成的,Struts只做了少量的工作。

org.apache.struts2.dispatcher Struts2的核心包,最重要的类都放在该包中。

org.apache.struts2.impl 该包只定义了3个类,他们是StrutsActionProxy、StrutsActionProxyFactory、StrutsObjectFactory,这三个类都是对xwork的扩展。

org.apache.struts2.interceptor 定义内置的截拦器。

org.apache.struts2.util 实用包。

org.apache.struts2.validators 只定义了一个类:DWRValidator。

org.apache.struts2.views 提供freemarker、jsp、velocity等不同类型的页面呈现。

下表是对一些重要类的说明:

类名说明

org.apache.struts2.dispatcher. Dispatcher 该类有两个作用:

1、初始化

2、调用指定的Action的execute()方法。

org.apache.struts2.dispatcher. FilterDispatcher 这是一个过滤器。文档中已明确说明,如果没有经验,配置时请将

url-pattern的值设成/*。

该类有四个作用:

1、执行Action

2、清理ActionContext,避免内存泄漏

3、处理静态内容(Serving static content)

4、为请求启动xwork’s的截拦器链。

com.opensymphony.xwork2. ActionProxy Action的代理接口。com.opensymphony.xwork2. ActionProxyFactory 生产ActionProxy的工厂。

com.opensymphony.xwork2.ActionInvocation 负责调用Action和截拦器。com.opensymphony.xwork2.config.providers.

负责Struts2的配置文件的解析。XmlConfigurationProvider

Struts2的工作机制3.1Struts2体系结构图

Strut2的体系结构如图15所示:

(图15)

3.2Struts2的工作机制

从图15可以看出,一个请求在Struts2框架中的处理大概分为以下几个步骤:

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClean Up的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plug in);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给Ac tionProxy;

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Acti on类;

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper。

3.3Struts2源代码分析

和Struts1.x不同,Struts2的启动是通过FilterDispatcher过滤器实现的。下面是该过滤器在web.xml文件中的配置:

代码清单6:web.xml(截取)

struts2

org.apache.struts2.dispatcher.FilterDispatcher

struts2

/*

Struts2建议,在对Struts2的配置尚不熟悉的情况下,将url-pattern配置为/*,这样该过滤器将截拦所有请求。

实际上,FilterDispatcher除了实现Filter接口以外,还实现了StrutsStatics接口,继承代码如下:

代码清单7:FilterDispatcher结构

public class FilterDispatcher implements StrutsStatics, Filter {

}

StrutsStatics并没有定义业务方法,只定义了若干个常量。Struts2对常用的接口进行了重新封装,比如HttpServletRequest、HttpServletResponse、HttpServletContext等。以下是StrutsStatics的定义:

代码清单8:StrutsStatics.java

public interface StrutsStatics {

/**

*ConstantfortheHTTPrequestobject.

*/

public static final String HTTP_REQUEST = "com.opensymphony.xwork2.dispatcher.HttpServlet Request";

/**

*ConstantfortheHTTPresponseobject.

*/

public static final String HTTP_RESPONSE = "com.opensymphony.xwork2.dispatcher.HttpServlet Response";

/**

*ConstantforanHTTPrequest dispatcher}.

*/

public static final String SERVLET_DISPATCHER = "com.opensymphony.xwork2.dispatcher.Ser vletDispatcher";

/**

*Constantfortheservlet context}object.

*/

public static final String SERVLET_CONTEXT = "com.opensymphony.xwork2.dispatcher.Servlet Context";

/**

*ConstantfortheJSPpage context}.

*/

public static final String PAGE_CONTEXT = "com.opensymphony.xwork2.dispatcher.PageContext";

/**ConstantforthePortletContextobject*/

public static final String STRUTS_PORTLET_CONTEXT = "struts.portlet.context";

}

容器启动后,FilterDispatcher被实例化,调用init(FilterConfig filterConfig)方法。该方法创建Dispatcher类的对象,并且将FilterDispatcher配置的初始化参数传到对象中(详情请参考代码清单10),并负责Action的执行。然后得到参数packages,值得注意的是,还有另外三个固定的包和该参数进行拼接,分别是org.apache.struts2.static、template、和org.apache. struts2.interceptor.debugging,中间用空格隔开,经过解析将包名变成路径后存储到一个名叫pathPrefixes的数组中,这些目录中的文件会被自动搜寻。

代码清单9:FilterDispatcher.init()方法

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

dispatcher = createDispatcher(filterConfig);

dispatcher.init();

String param = filterConfig.getInitParameter("packages");

String packages = "org.apache.struts2.static template org.apache.struts2.interceptor.debugging";

if (param != null) {

packages = param + " " + packages;

}

this.pathPrefixes = parse(packages);

}

代码清单10:FilterDispatcher.createDispatcher()方法

protected Dispatcher createDispatcher(FilterConfig filterConfig) {

Map params = new HashMap();

for (Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements(); ) { String name = (String) e.nextElement();

String value = filterConfig.getInitParameter(name);

params.put(name, value);

}

return new Dispatcher(filterConfig.getServletContext(), params);

}

当用户向Struts2发送请求时,FilterDispatcher的doFilter()方法自动调用,这个方法非常关键。首先,Struts2对请求对象进行重新包装,此次包装根据请求内容的类型不同,返回不同的对象,如果为multipart/form-data类型,则返回MultiPartRequestWrapper类型的对象,该对象服务于文件上传,否则返回StrutsRequestWrapper类型的对象,MultiPartRequestWrap per是StrutsRequestWrapper的子类,而这两个类都是HttpServletRequest接口的实现。包装请求对象如代码清单11所示:

代码清单11:FilterDispatcher.prepareDispatcherAndWrapRequest()方法

protected HttpServletRequest prepareDispatcherAndWrapRequest(

HttpServletRequest request,

HttpServletResponse response) throws ServletException {

Dispatcher du = Dispatcher.getInstance();

if (du == null) {

Dispatcher.setInstance(dispatcher);

dispatcher.prepare(request, response);

} else {

dispatcher = du;

}

try {

request = dispatcher.wrapRequest(request, getServletContext());

} catch (IOException e) {

String message = "Could not wrap servlet request with MultipartRequestWrapper!";

LOG.error(message, e);

throw new ServletException(message, e);

}

return request;

}

request对象重新包装后,通过ActionMapper的getMapping()方法得到请求的Action,A ction的配置信息存储在ActionMapping对象中,该语句如下:mapping = actionMapper.ge tMapping(request, dispatcher.getConfigurationManager());。下面是ActionMapping接口的实现类DefaultActionMapper的getMapping()方法的源代码:

代码清单12:DefaultActionMapper.getMapping()方法

public ActionMapping getMapping(HttpServletRequest request,

ConfigurationManager configManager) {

ActionMapping mapping = new ActionMapping();

String uri = getUri(request);//得到请求路径的URI,如:testAtcion.action或testAction!meth od

uri = dropExtension(uri);//删除扩展名,默认扩展名为action,在代码中的定义是List exten sions = new ArrayList() {{ add("action");}};

if (uri == null) {

return null;

}

parseNameAndNamespace(uri, mapping, configManager);//从uri变量中解析出Action的nam e和namespace

handleSpecialParameters(request, mapping);//将请求参数中的重复项去掉

//如果Action的name没有解析出来,直接返回

if (mapping.getName() == null) {

return null;

}

//下面处理形如testAction!method格式的请求路径

if (allowDynamicMethodCalls) {

// handle "name!method" convention.

String name = mapping.getName();

int exclamation = https://www.doczj.com/doc/0e14239814.html,stIndexOf("!");//!是Action名称和方法名的分隔符

if (exclamation != -1) {

mapping.setName(name.substring(0, exclamation));//提取左边为name

mapping.setMethod(name.substring(exclamation + 1));//提取右边的method }

}

return mapping;

}

该代码的活动图如下:

(图16)

从代码中看出,getMapping()方法返回ActionMapping类型的对象,该对象包含三个参数:Action的name、namespace和要调用的方法method。

如果getMapping()方法返回ActionMapping对象为null,则FilterDispatcher认为用户请求不是Action,自然另当别论,FilterDispatcher会做一件非常有意思的事:如果请求以/struts 开头,会自动查找在web.xml文件中配置的packages初始化参数,就像下面这样(注意粗斜体部分):

代码清单13:web.xml(部分)

struts2

org.apache.struts2.dispatcher.FilterDispatcher

packages

com.lizanhong.action

FilterDispatcher会将com.lizanhong.action包下的文件当作静态资源处理,即直接在页面上显示文件内容,不过会忽略扩展名为class的文件。比如在com.lizanhong.action包下有一个aaa.txt的文本文件,其内容为“中华人民共和国”,访问http://localhost:8081/Struts2Demo /struts/aaa.txt时会有如图17的输出:

(图17)

查找静态资源的源代码如清单14:

代码清单14:FilterDispatcher.findStaticResource()方法

protected void findStaticResource(String name, HttpServletRequest request, HttpServletResponse r esponse) throws IOException {

if (!name.endsWith(".class")) {//忽略class文件

//遍历packages参数

for (String pathPrefix : pathPrefixes) {

InputStream is = findInputStream(name, pathPrefix);//读取请求文件流

if (is != null) {

……(省略部分代码)

// set the content-type header

String contentType = getContentType(name);//读取内容类型

if (contentType != null) {

response.setContentType(contentType);//重新设置内容类型

}

……(省略部分代码)

try {

//将读取到的文件流以每次复制4096个字节的方式循环输出

copy(is, response.getOutputStream());

} finally {

is.close();

}

return;

}

}

}

}

如果用户请求的资源不是以/struts开头——可能是.jsp文件,也可能是.html文件,则通过过滤器链继续往下传送,直到到达请求的资源为止。

如果getMapping()方法返回有效的ActionMapping对象,则被认为正在请求某个Action,将调用Dispatcher.serviceAction(request, response, servletContext, mapping)方法,该方法是处理Action的关键所在。上述过程的源代码如清单15所示。

代码清单15:FilterDispatcher.doFilter()方法

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOExcepti on, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) res;

ServletContext servletContext = getServletContext();

String timerKey = "FilterDispatcher_doFilter: ";

try {

UtilTimerStack.push(timerKey);

request = prepareDispatcherAndWrapRequest(request, response);//重新包装request

ActionMapping mapping;

try {

mapping = actionMapper.getMapping(request, dispatcher.getConfigurationManager ());//得到存储Action信息的ActionMapping对象

} catch (Exception ex) {

……(省略部分代码)

return;

}

if (mapping == null) {//如果mapping为null,则认为不是请求Action资源String resourcePath = RequestUtils.getServletPath(request);

if ("".equals(resourcePath) && null != request.getPathInfo()) {

resourcePath = request.getPathInfo();

}

//如果请求的资源以/struts开头,则当作静态资源处理

if (serveStatic && resourcePath.startsWith("/struts")) {

String name = resourcePath.substring("/struts".length());

findStaticResource(name, request, response);

} else {

//否则,过滤器链继续往下传递

chain.doFilter(request, response);

}

// The framework did its job here

return;

}

//如果请求的资源是Action,则调用serviceAction方法。

dispatcher.serviceAction(request, response, servletContext, mapping);

} finally {

try {

ActionContextCleanUp.cleanUp(req);

} finally {

UtilTimerStack.pop(timerKey);

}

}

}

这段代码的活动图如图18所示:

(图18)

在Dispatcher.serviceAction()方法中,先加载Struts2的配置文件,如果没有人为配置,则默认加载struts-default.xml、struts-plugin.xml和struts.xml,并且将配置信息保存在形如com.opensymphony.xwork2.config.entities.XxxxConfig的类中。

类com.opensymphony.xwork2.config.providers.XmlConfigurationProvider负责配

置文件的读取和解析,addAction()方法负责读取标签,并将数据保存在ActionConfi g中;addResultTypes()方法负责将标签转化为ResultTypeConfig对象;load Interceptors()方法负责将标签转化为InterceptorConfi对象;loadIntercept orStack()方法负责将标签转化为InterceptorStackConfig对象;loadInte rceptorStacks()方法负责将标签转化成InterceptorStackConfig对象。而上面的方法最终会被addPackage()方法调用,将所读取到的数据汇集到PackageConfig对象中,细节请参考代码清单16。

代码清单16:XmlConfigurationProvider.addPackage()方法

protected PackageConfig addPackage(Element packageElement) throws ConfigurationException { PackageConfig newPackage = buildPackageContext(packageElement);

if (newPackage.isNeedsRefresh()) {

return newPackage;

}

if (LOG.isDebugEnabled()) {

LOG.debug("Loaded " + newPackage);

}

// add result types (and default result) to this package

addResultTypes(newPackage, packageElement);

// load the interceptors and interceptor stacks for this package

loadInterceptors(newPackage, packageElement);

// load the default interceptor reference for this package

loadDefaultInterceptorRef(newPackage, packageElement);

// load the default class ref for this package

loadDefaultClassRef(newPackage, packageElement);

// load the global result list for this package

loadGlobalResults(newPackage, packageElement);

// load the global exception handler list for this package

loadGlobalExceptionMappings(newPackage, packageElement);

// get actions

NodeList actionList = packageElement.getElementsByTagName("action");

for (int i = 0; i < actionList.getLength(); i++) {

Element actionElement = (Element) actionList.item(i);

addAction(actionElement, newPackage);

}

// load the default action reference for this package

loadDefaultActionRef(newPackage, packageElement);

configuration.addPackageConfig(newPackage.getName(), newPackage);

return newPackage;

}

活动图如图19所示:

(图19)

配置信息加载完成后,创建一个Action的代理对象——ActionProxy引用,实际上对Action 的调用正是通过ActionProxy实现的,而ActionProxy又由ActionProxyFactory创建,Action ProxyFactory是创建ActionProxy的工厂。

配置信息加载完成后,创建一个Action的代理对象——ActionProxy引用,实际上对Action 的调用正是通过ActionProxy实现的,而ActionProxy又由ActionProxyFactory创建,Action ProxyFactory是创建ActionProxy的工厂。

注:ActionProxy和ActionProxyFactory都是接口,他们的默认实现类分别是DefaultActi onProxy和DefaultActionProxyFactory,位于com.opensymphony.xwork2包下。

在这里,我们绝对有必要介绍一下com.opensymphony.xwork2.DefaultActionInvocati on类,该类是对ActionInvocation接口的默认实现,负责Action和截拦器的执行。

在DefaultActionInvocation类中,定义了invoke()方法,该方法实现了截拦器的递归调用和执行Action的execute()方法。其中,递归调用截拦器的代码如清单17所示:代码清单17:调用截拦器,DefaultActionInvocation.invoke()方法的部分代码if (interceptors.hasNext()) {

//从截拦器集合中取出当前的截拦器

final InterceptorMapping interceptor = (InterceptorMapping) interceptors.next();

UtilTimerStack.profile("interceptor: "+interceptor.getName(),

new UtilTimerStack.ProfilingBlock() {

public String doProfiling() throws Exception {

//执行截拦器(Interceptor)接口中定义的intercept方法

resultCode = interceptor.getInterceptor().intercept(DefaultActionInvo cation.this);

returnnull;

}

});

}

从代码中似乎看不到截拦器的递归调用,其实是否递归完全取决于程序员对程序的控制,先来看一下Interceptor接口的定义:

代码清单18:Interceptor.java

publicinterface Interceptor extends Serializable {

void destroy();

void init();

String intercept(ActionInvocation invocation) throws Exception;

}

所有的截拦器必须实现intercept方法,而该方法的参数恰恰又是ActionInvocation,所以,如果在intercept方法中调用invocation.invoke(),代码清单17会再次执行,从Action的Int ercepor列表中找到下一个截拦器,依此递归。下面是一个自定义截拦器示例:代码清单19:CustomIntercepter.java

publicclass CustomIntercepter extends AbstractInterceptor {

@Override

public String intercept(ActionInvocation actionInvocation) throws Exception

{

actionInvocation.invoke();

return"李赞红";

}

}

截拦器的调用活动图如图20所示:

(图20)

如果截拦器全部执行完毕,则调用invokeActionOnly()方法执行Action,invokeActionOn ly()方法基本没做什么工作,只调用了invokeAction()方法。

为了执行Action,必须先创建该对象,该工作在DefaultActionInvocation的构造方法中调用init()方法早早完成。调用过程是:DefaultActionInvocation()->init()->createAction()。创建Action的代码如下:

代码清单20:DefaultActionInvocation.createAction()方法

protectedvoid createAction(Map contextMap) {

try {

action = objectFactory.buildAction(proxy.getActionName(), proxy.getNamespace(), proxy. getConfig(), contextMap);

} catch (InstantiationException e) {

……异常代码省略

}

}

Action创建好后,轮到invokeAction()大显身手了,该方法比较长,但关键语句实在很少,用心点看不会很难。

代码清单20:DefaultActionInvocation.invokeAction()方法

protected String invokeAction(Object action, ActionConfig actionConfig) throws Exception { //获取Action中定义的execute()方法名称,实际上该方法是可以随便定义的

String methodName = proxy.getMethod();

String timerKey = "invokeAction: "+proxy.getActionName();

try {

UtilTimerStack.push(timerKey);

Method method;

try {

//将方法名转化成Method对象

method = getAction().getClass().getMethod(methodName, new Class[0]);

} catch (NoSuchMethodException e) {

// hmm -- OK, try doXxx instead

try {

//如果Method出错,则尝试在方法名前加do,再转成Method对象

String altMethodName = "do" + methodName.substring(0, 1).toUpperCase() + methodName.substring(1);

method = getAction().getClass().getMethod(altMethodName, new Class[0]);

} catch (NoSuchMethodException e1) {

// throw the original one

throw e;

}

}

//执行方法

Object methodResult = method.invoke(action, new Object[0]);

//处理跳转

if (methodResult instanceof Result) {

this.result = (Result) methodResult;

returnnull;

} else {

return (String) methodResult;

}

} catch (NoSuchMethodException e) {

……省略异常代码

} finally {

UtilTimerStack.pop(timerKey);

}

}

刚才使用了一段插述,我们继续回到ActionProxy类。

我们说Action的调用是通过ActionProxy实现的,其实就是调用了ActionProxy.execute()方法,而该方法又调用了ActionInvocation.invoke()方法。归根到底,最后调用的是DefaultAc tionInvocation.invokeAction()方法。

以下是调用关系图:

其中:

?ActionProxy:管理Action的生命周期,它是设置和执行Action的起始点。

?ActionInvocation:在ActionProxy层之下,它表示了Action的执行状态。它持有Action实例和所有的Interceptor

以下是serviceAction()方法的定义:

代码清单21:Dispatcher.serviceAction()方法

publicvoid serviceAction(HttpServletRequest request, HttpServletResponse response, ServletC ontext context,

ActionMapping mapping) throws ServletException { Map extraContext = createContextMap(request, response, mapping, context);

// If there was a previous value stack, then create a new copy and pass it in to be used by the new Action

ValueStack stack = (ValueStack) request.getAttribute(ServletActionContext.STRUTS_VALU ESTACK_KEY);

if (stack != null) {

extraContext.put(ActionContext.VALUE_STACK, ValueStackFactory.getFactory().create ValueStack(stack));

}

String timerKey = "Handling request from Dispatcher";

try {

UtilTimerStack.push(timerKey);

String namespace = mapping.getNamespace();

String name = mapping.getName();

String method = mapping.getMethod();

Configuration config = configurationManager.getConfiguration();

ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).create ActionProxy(

namespace, name, extraContext, true, false);

proxy.setMethod(method);

request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, proxy.getInvo cation().getStack());

// if the ActionMapping says to go straight to a result, do it!

if (mapping.getResult() != null) {

Result result = mapping.getResult();

result.execute(proxy.getInvocation());

} else {

proxy.execute();

}

// If there was a previous value stack then set it back onto the request

if (stack != null) {

request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, stack);

}

} catch (ConfigurationException e) {

LOG.error("Could not find action or result", e);

sendError(request, response, context, HttpServletResponse.SC_NOT_FOUND, e);

} catch (Exception e) {

thrownew ServletException(e);

} finally {

UtilTimerStack.pop(timerKey);

}

}

最后,通过Result完成页面的跳转。

3.4本小节总结

总体来讲,Struts2的工作机制比Struts1.x要复杂很多,但我们不得不佩服Struts和Web Work开发小组的功底,代码如此优雅,甚至能够感受看到两个开发小组心神相通的默契。两个字:佩服。

以下是Struts2运行时调用方法的顺序图:

(图21)

四、总结

运维制度及流程

运行维护管理制度 2017年8月

目录3 3 3 5 6 6 7 8 8 9 9

1、总则 第一条为保障公司信息系统软硬件设备的良好运行,使员工的运维工作制度化、流程化、规范化,特制订本制度。 第二条运维工作总体目标:立足根本促发展,开拓运维新局面。在企业发展壮大时期,通过网络、桌面、系统等的运维,促进企业稳定可持续性发展。 第三条运维管理制度的适用范围:运维部全体人员。 2、编制方法 本实施细则包括运维服务全生命周期管理方法、管理标准/规范、管理模式、管理支撑工具、管理对象以及基于流程的管理方法。 本实施细则以ITIL/ISO20000为基础,以信息化项目的运维为目标,以管理支撑工具为手段,以流程化、规范化、标准化管理为方法,以全生命周期的PDCA循环为提升途径,体现了对运维服务全过程的体系化管理。 3、运维部工作职责 一、负责网站运维和技术支持 (一)根据网站运营战略和目标,负责网站整体架构、栏目、应用系统等技术开发方案制定和组织开发,保障网站技术的稳定性和先进性。 (二)负责网站栏目和应用系统的使用培训和操作使用指南编

写,对用户使用过程中出现问题的沟通和解决; (三)网站设备和软件购买计划书的拟定,包括采购数量、品牌规格、技术参数。会同行政部进行采购。 (四)网站设备和软件操作规程和应用管理制度的制定,并负责监督执行。 (五)网站设备和软件安装、调试和验收,使用培训和维修保养。 (六)网站日常运行过程中信息安全和技术问题的协调解决,保障网站24小时安全稳定运行。 (七)网站技术服务外包管理,主要包括技术外包开发、运行服务托管和空间域名管理。 (八)负责网站管理系统及设备保密口令的设置和保存,保密口令设置后报中心主任备案,保密口令设定后任何人不得随意更改,保密口令每季度更新一次。 (九)负责网站新程序、新系统和网站改版升级方案技术的设计开发。 二、负责网站信息和技术安全 (一)执行国家和省上有关网络信息技术安全的法律法规,与通信管理和网络安全监管部门联络,及时处理网站信息技术安全方面存在的问题,确保网站安全、稳定、可靠运行。 (二)网站信息技术安全保密制度和工作流程的制定,落实信息技术安全保密责任制,执行“谁主管、谁负责,谁主办、谁负责”的原则,责任到人。

销售管理制度及主要工作流程

营销部销售管理制度及 主要工作流程 文件审批页 文件名:营销管理制度及主要工作流程

营销部销售组组织结构图........................................ 第二部分销售组职责及质量目标 .................................. 一、销售组职责................................................ 二、销售组质量目标............................................ 第三部分销售组各岗位职责 ...................................... 一、销售助理岗位说明.......................................... 二、销售代表岗位说明.......................................... 第四部分销售部管理办法........................................ 一、行为规范.................................................. 二、礼貌用语.................................................. 三、接听电话.................................................. 四、考勤制度.................................................. 五、例会...................................................... 六、销售合同管理制度.......................................... 七、客户归属及佣金分配原则 .................................... 八、销售基金的管理............................................ 九、销售代表奖惩制度.......................................... 十、认购及销控管理条例........................................ 十一、售中、售后服务金分配办法(起草草案) ...................... 第一部分部门组织机构图 营销部销售组组织结构图

工作前安全分析(JSA)管理制度

工作前安全分析(JSA)管理制度 一、目的 为保障作业人员的健康与安全,在作业前识别出作业过程中的所有危害并评价其风险,进而制定并落实相应措施,以消除、预防、削减或控制可能的风险,规范公司及为其服务的承包商作业前工作安全分析的范围、方法及安全管理要求。 二、范围 本制度适用于中粮糖业辽宁有限公司(以下简称公司)及为其服务的承包商。 三、名词解释 (1)工作前安全分析(简称JSA):是指事先或定期对某项工作任务进行危害识别、风险评价,并根据评价结果制定和实施相应的控制措施,达到最大限度消除或控制风险的方法。 (2)工具箱会议:是指作业人员在作业前,集中在一起,由作业负责人或技术人员对工作进行交底,同作业人员沟通工作中风险及安全措施的短暂、非正式的会议。因一般情况下都是在作业人员拿好工具箱准备作业,或坐在工具箱上开的会,所以形象的叫做工具箱会议。 四、职责 安全环保部负责在公司内推行、落实本制度。 五、管理要求 5.1工作前安全分析的范围

5.1.1电力装置等运行操作有操作规程的除外,所有施工、安装、检修、装卸、搬运、装饰、清理等作业活动都应进行工作前安全分析。 5.1.2 新开展的作业活动、非常规(临时)的作业活动必须事先针对该项作业活动进行工作前安全分析。 5.1.3 当某项作业活动没有操作规程涵盖时或现有的操作规程不能有效控制风险时,应针对该项作业进行工作前安全分析。 5.1.4 当改变现有的作业,应确认变更或不同的部分,补充进行工作前安全分析。 5.1.5 需要评估现有作业的危害及潜在的风险时,应进行工作前安全分析。 5.1.6 现场作业人员均可根据当前的工作任务提出工作前安全分析的需求。 5.1.7 当作业内容、步骤或程序、所使用工具和材料、作业者资质或素质、作业环境条件(包括季节、气象、温湿度等自然环境条件)相同或等同,仅作业地点和具体时间不同的重复作业,必须按照此前的工作前安全分析结果进行确认,变更或不相同的部分必须补充进行工作前安全分析。 5.2 工作前安全分析程序及要求 5.2.1 所有的作业活动或具体作业项目应由属地单位负责人指定项目负责人,项目负责人对工作任务进行初步审查,确定工作任务内容,判断是否需要做工作前安全分析,制定工作前安全分析计划。

投标工作流程及各环节注意事项

投标工作流程及各环节注意事项投标流程分以下四个环节。每个环节又分若干步骤。先将各环节、步骤的注意事项总结如下,希望能规范投标工作流程,提高投标工作效率,减少不必要的失误。 一、投标报名环节 当目标项目发出招标公告后,即进入投标报名环节。投标报名环节由部门指派一个同事完成。投标报名环节流程如下:在招投标信息发布媒体上找到招标公告→按招标公告的报名要求准备报名资料→申请报名费→到现场进行报名→注意查收邮箱中的招标文件投标报名环节注意事项如下: ①报名资料原件还是复印件 ②授权代理人身份证原件需带到报名现场 ③每天查看报名时所留邮箱,是否收到招标文件。如第三天还未收到招标文件,及时联系招标公司,询问情况。 一旦收到招标文件,表明报名成功,即进入投标准备环节。 二、投标准备环节 投标准备环节由部门指派一名同事完成,一名同事配合和审核。 投标准备环节分以下步骤: 阅读招标文件→递交投标保证金→制作投标文件→打印装订投标文件→投标文件签字盖章→检查投标文件→投标文件封装→准备现场要提交的资料→最后检查 投标准备环节是投标工作的核心内容,是投标能否成功的关键。

且需要公司其他部门与本部门和本部门同事间相互配合。为了更好的完成投标工作,下面将投标准备环节的各步骤进行详细说明,并写出注意事项和控制要点。 1、阅读招标文件 阅读招标文件时,需注意以下要点: ①项目名称、招标编号 ②投标时间、地点 ③投标保证金数额、递交投标保证金的时间、递交方式、招 标公司名称、账号、是否换投标保证金收据 ④拦标价、投标有效期、工期等 ⑤商务部分要求,特别注意是否有需要赶紧去开的文件,如: “无犯罪记录查询函”、“社保证明”、“律师函”、“企业信用证明” 等。 ⑥技术部分要求,特别注意人员数量、配置等要求。 ⑦评分规则,特别注意商务分、技术分、报价分的计算方法; 以及争取得高分需准备得资料,如公司业绩、人员证件、报价评分方法等。 ⑧需带到投标现场的原件。 ⑨是否有述标环节,是否需要技术人员到场述标或详细讲解。 如需要,联系项目部配合。 ⑩投标文件签字盖章、打印装订、封装等要求。 以上工作由负责完成投标文件的同事和负责配合审核投标文

运营部运行机制

运营部运行机制

运营部运行机制一:架构 运营部总 店长分公司总 运 营 部 网 络 部 招 商 部 主 市 场 部 课程顾教 学 老 前 台 接 调 研 部 主 策 划 部 主 推 广 部 主 市 场 公 关 客 服 主 管企 划 部

二:岗位职责 运营总监(运营部经理辅助总监工作) 岗位职责: 1.负责建设和发展运营团队,组织开展员工队伍培训、考核评价及人才梯队建设工作,满足公司业务拓展需要;负责下辖相关岗位的人员招募及培训鉴定。 2.整体负责品牌运营管理,包括分公司、旗舰店、分店、加盟店等在内的品牌管理、服务规范、营业培训、形象管理及产品与价格管理工作。 3.负责所辖区域的整体市场工作计划的制定、部

署及监督实施是运营总监职责中重要的一部分,提升品牌在所辖区域的知名度和认同度等。 4.负责公司市场部门(营运、品牌策划)制度规范,负责组织及监管市场部关于对外合作、渠道管理、媒体合作、推广策划及服务产品开发等相关工作的落实。 5.负责对外战略合作品牌的协调、策划、组织与合作实施工作,负责大型重点合作项目洽谈、管控与形象创新工作,行业品牌竞争格局分析与竞争策略规划,品牌产品概念策划与推广方案设计,行业媒体合作伙伴的跟进。 任职要求: 1.教育背景:管理类相关专业毕业。 2.培训经历:受过管理学、财务管理、企业运营管理、领导艺术、领导执行力、口才演讲、生产作业管理等知识培训。 3.经验:8年以上工作经验,6年以上高级管理经验。 4.技能:出众的领导管理才能和良好的商业理念。

5.具有很强的团队协作精神,组织及策划能力和良好的沟通技巧,能与政府、企业高层人士广泛接触,并深入沟通。 6.个性特征:办事认真严谨;追求成功,精力充沛,可以承受较大工作压力。 权力范围: 1.对公司的产品研发及管理运营有计划权、建议权、否决权、调度权。 2.对下属各职能部门完成任务的情况有考核权。 3.对下属各职能部门经理的工作有指导权和考核权。 4.对总经理决策有建议权 分公司总经理 岗位职责: 1.负责制定具体的销售计划和进行销售预测; 2.负责管理团队成员的年度目标与计划,并督促实施; 3.负责分公司的销售目标达成及区域客户情况进行统一的管理;

项目负责人项目实施过程需要承担的主要工作内容及责任

项目负责人项目实施过程需要承担的主要工作内容及责任 项目负责人是施工项目的总负责人和总调度,负责项目从施工准备到竣工验收到审计对账的整个过程,同时应该承担起整个项目的进度、质量、安全、成本等全部责任。从项目角度讲,公司领导只是项目负责人的后勤,为项目负责人提供资源保障。 项目负责人的首要责任是在控制项目成本的前提下,安全无事故的保质、如期完成施工任务。为规范项目运作,特梳理以下流程,项目负责人在项目实施的各阶段,应做好如下工作: 一、施工准备阶段: 1、合同签订后,项目负责人需会同公司郑总等勘察现场,核对图纸及清单,提出疑问,准备并参与图纸会审; 2、熟悉图纸、清单及合同要求,与公司签订项目责任书及安全生产责任书; 3、现场施工环境分析,根据合同工期排定《施工进度计划表》 4、根据进度计划(和羊总、郑总对接后)、排定《劳动用工计划表》以及《主要材料进场计划表》,备注:此阶段需要完成的表单有:《图纸会审纪要》、《项目目标责任书》、《安全生产责任书》、《施工进度计划表》、《劳动用工计划表》、《主要材料进场计划表》等。 二、施工阶段: 1、施工进场准备:?接水接电(临水、临电),办公场所设置; ?工班安排(公司配合),与工班签订协议; 2、组织项目施工,统筹人、材、机等各项资源,建立与维护好监理、业主关系,组织项目施工: ?施工器械进场、材料采购下单; ?安全防护工具的配备;

?开工资料(《开工报告》、《材料进场报验》)等施工资料的跟进; ?按进度计划表组织施工,安排每天的施工任务,统筹协调各个工班,做好工种施工衔接;零星材料的采购; ?施工过程中涉及到项目变更的,在施工时同步跟进《施工联系单》,《签证单》(请预算部门配合),对收到的建设单位的《变更联系单》及其他通知应及时反馈至公司, ?按要求如实填写《施工日志》、《考勤表》,每日通过微信图片上传《施工日志》, ?根据施工进度,关注收款节点,向监理及建设单位提交《工程款申请单》, 3、安全教育、每日工地安全巡检; 4、落实好文明施工工作:材料集中堆放,注重场容场貌的整洁,体现施工现场良好形象; 备注:此阶段需要完成及收集的表单有:《工班协议》、《材料需求单》、《材料、设备进场登记表》、《开工报告》、《材料报验单》、《会议纪要》、《安全教育记录(附签到单)》、《施工日志》、《考勤表》,《分部分项或工序验收记录》《工程款申请单》等。 三、施工扫尾阶段: 1、自检自查(核对图纸及清单,是否完成全部施工任务) 2、资料完善(工程资料、签证资料、竣工图) 3、《竣工报告》,竣工验收。 4、施工成本汇总与分析 备注:此阶段需要完成的表单有:《竣工报告》,《竣工验收单》等; 四、结算及审计对账

数据分析管理制度

数据分析管理制度 1.目的和适用范围 收集和分析适当的数据,以确定压力管道安装质量保证体系的适宜性和有效性,并识别可以实施的改进。适用于对来自测量和监控活动及其他相关来源的数据分析。 2. 职责 2.1.质量检验部负责统筹公司对内、对外相关数据的传递与分析、处理。 2.2.各部门和各责任人员负责各自相关的数据收集、传递、交流。 3. 管理程序 3.1.数据是指能够客观地反映事实的资料和数字等信息。3.2.数据地来源 3.2.1.外部来源 a.政策、法律、法规、规范、标准等 b.相关方(如顾客、供方等)反馈及投诉等。 3.2.2.内部来源

a.日常工作,如质量目标完成情况、检验试验记录、内 部质量审核与管理评审报告及体系正常运行的其他记 录; b.存在、潜在的不合格,如质量问题统计分析结果、纠正预防措施处理结果等; c.其他信息,如部门建议等 3.2.3.数据可采用已有的质量记录、书面资料、会议、讨论交流、通讯等方式。 3.3. 数据的收集、分析与处理 3.3.1.对数据的收集、分析与处理应提供如下的信息: a.顾客满意和(或)不满意程度 b.安装满足安全性能的符合性; c.过程、安装的特性及发展趋势; d.供方的信息等。 3.3.2. 外部数据的收集、分析与处理 3.3.2.1.质量检验部负责质量管理部门检查及反馈数据、技 术标准类数据的收集分析,并负责传递到相关部门。

对出现的不合格项,执行《改进控制管理制度》。 3.3.2.2.政策法规类信息由办公室及相关部门和各责任人 员收集、分析、整理、传递。 3.3.2.3.工程部积极与甲方进行信息沟通,以满足顾客需 求,妥善处理甲方的投诉,执行《改进控制管理制 度》的有关规定; 3.3.2. 4.各部门和各责任人员直接从外部获取的其他类数 据,应在一周内用《信息联络处理单》报告质量检 验部,由其分析整理,根据需要传递、协调处理。 3.3.3. 内部数据的收集、分析与处理 3.3.3.1.各部门和各责任人员依据相关文件规定直接收集 并传递日常数据,对存在和潜在的不合格项,执行 《改进控制管理制度》。 3.3.3.2.紧急信息由发现部门迅速报告质量检验部组织协调处理。 3.3.3.3.其他内部信息获得者可用《信息联络处理单》反馈给质量检验部。

运作机制

运作机制、工作流程、信息反馈渠道、控制方式等 在物业管理发展的现阶段,探索一套行之有效的物业管理企业运行机制,对于加快企业发展具有十分重要的意义。物业管理企业的运行机制应从以下几方面: 一、建立良好的用人机制 用人机制主要包括选人和用人两个方面,选人是根据企业发展定位选择使用什么样的人,用人则是在管理中如何使用人,也就是说用人机制应体现出既要选好人,又要用好人的特点。随着中国加入 WTO ,世界经济一体化进程的加快,人才竞争已成为企业之间的主要竞争手段之一。有资料显示,物业管理高级人才已位列全国十种紧缺人才排行榜。在这种形势下,对物业管理企业来说,谁抓住了人才,谁就取得了主动权。 由于全国各城市的物业管理起步时间不一,物业管理市场的发育程度不一,因此形成了高素质的物业管理人才大多集聚在一些发达的大中城市。人才在不同的地区工资收入差距很大,造成了一些物业管理市场发育程度不高的城市,物业管理人才更为短缺。对于尚处在物业管理市场不发达城市的企业来说,假如单一的以招聘形式来解决人才短缺问题很难如愿,物业管理的低收费和人才的高身价,使企业难以长期承受。解决人才问题的理想方式是立足于企业自身人才的培养,让人才能够早日脱颖而出。 在用人上,首先,为人才创造一个拴心留人的环境;其次,要量体裁衣把人才放在最能发挥其特长的岗位上;第三,注重优化人员结构,把整体作用发挥出来;第四,引入竞争上岗机制,坚持能者上、平者让、庸者下的用人策略;第五,依据考核实行工作成效末位淘汰制,始终保持企业布满活力。 二、建立系统的培训机制 什么样的员工素质,就有什么样的管理水平,要搞好一个企业,没有一支高素质的员工队伍是不可能做到的。为此,重视员工培训,提高员工素质,对于全面提高物业管理水平,增强企业发展后劲,具有重要作用。 员工素质的提高,其重要手段是建立一套系统的培训机制。这个机制应当涵盖整个企业的各级人员,贯穿于各项工作的始终。主要内容包括:根据企业发展规划,制定员工培训规划和年度培训计划。培训科目及内容应当制式化,既要培

最新办公室行政工作流程

办公室行政工作流程 办公室主要工作内容: 执行办公设备、公共设施的日常管理和维护; 执行办公用品及日常用品的采购、发放管理; 执行固定资产及低值易耗品的管理; 执行秘书事务、行政日常事务、档案的归档管理; 执行各种费用的控制交纳; 执行后勤管理; 执行上级交办事务等。 具体工作流程 一、执行办公用品及日常用品的采购、发放管理 月末综合办公室要根据其他部门的请购计划及库存情况,并要根据相关规定作适当储备以备不时之需,作好请购计划单经主管审批后,及时保质保量地采购办公用品和日常用品,采购物品应当定价定点,保证质优价廉。要作好物品出入库登记,每月盘存,确保帐物相符。 二、执行固定资产及低值易耗品的管理 对于公司所有的固定资产以及低值易耗品,需要建立台帐清单,监督各部门于每月25日进行盘点,办公室会根据各部门盘点情况进行抽查,核对帐物是否相符,然后根据各部门盘点状况及调动增加状况制作《固定资产、低耗品清单》报表发放各部门;每季度组织财务部对各部门进行全面盘点,核对帐物。

对需要报废的资产按照相关程序申请报废,及时跟进各部门资产调动、出入库单据的核对,做到帐物相符。对于资产管理不当、帐物不符,应进行相应处罚。 综合办公室负责根据维修要求协调或外请技术人员维修、对维修全过程进行控制;各部门对维修质量监督、确认。 所有维修要求做好记录、跟踪维护结果及完成状态;对未按要求完成的维修事项、及时了解情况并报告负责人。 四、执行文件档案的归档管理 根据不同种类档案的特点,做好系统编目、使用/传阅控制、分类存放、排列有序,定期收集各类文件资料,并整理立卷归档。 各部门往来的备忘录、文档、资料等按类别、内容、时间顺序等存档管理。 六、文件资料收发、传真管理 各类文件资料收发、传真均需在登记薄上作好详细登记、记录,及时将各类信息(通知、文件)进行上传下达,特别是各类客户信息应登记后及时传递给相关部门; 七、执行各种费用的支付、控制 按时申请、交纳、控制公司各项费用,例如:车辆养路费、车船税等;并将所要交纳的各项费用进行审核记录,对各项资金审批单归类管理。做到资金审批的及时、准确,以确保各职能部门工作的正常开展。

信访工作分析研判制度

信访工作分析研判制度 为进一步促进信访工作的制度化和规范化,明确及时、准确、全面、有效的工作要求,从群众信访问题入手,加强重点领域信访态势、特点、成因的分析和可能引发大规模集体上访及群体性事件的形势研判,深入实际调查研究,增强信访工作的前瞻性和针对性,特制定如下制度。 一、建立信访工作分析研判例会制度 1、市级、县(区)以及联席办所属的各专项工作组的牵头行政机关或部门,要建立等每个季分析例会制度,根据信访工作综合情况,重点分析信访突出问题和群体性事件的成因及发展趋势,并通过联席会议、排查调处机制、信访督查以及报送市、县(区)领导等方式,及时化解矛盾和纠纷。 2、信访工作分析研判例会也可根据实际需要,随时召开。 3、信访工作季分析研判例会的时间原则上为每季度次月的8日,遇节假日顺延。 二、信访工作分析研判例会分析研判内容和事项办理、报结 1、每季度来电来信来访受理情况; 2、初电初信初访受理情况。初电初信初访受理、转送、交办、承办、督办、督查、报结的情况以及各机关部门采纳改进建议情况; 3、信访事项涉及领域以及被投诉较多的行政机关或单位; 4、受理复查、复核的数量及办理情况; 5、重复率较高的来电来信来访办理情况; 6、在调查研究基础上,提出政策性建议及其被采纳情况。 7、对涉及下列情况的重要信访案件提出办理建议意见: (1)涉及多个地方、多个部门的信访件; (2)信访人与责任单位对处理意见存在较大分岐的信访件; (3)不及时处理,将引发群体性、突发性事件的信访件; (4)群众反映的热点、难点、复杂的信访件; (5)具有倾向性、苗头性的信访件。 8、每季度来电来信来访办理、报结情况; 9、其它需要协调的信访事项。 三、季信访分析研判例会方式 市、县(区)以及市直各行政机关或单位的季分析采用信访总体情况综合分析与个案分析结合的方式进行。 四、组织形式 市、县(区)召开的季信访分析例会由分管信访工作的副秘书长(副县、区长)主持,副秘书长(副县、区长)不在时,由副秘书长(副县、区长)委托相关领导主持,相关信访问题较多的行政机关或单位职能部门及有关部门参加。必要时,可邀请律师参加。各市直行政机关或部门召开的分析研判例会,由所在单位的主要领导主持。 五、督查督办 市、县(区)及各单位部门召开的每次例会要形成会议纪要,对排查出的重点领域、难点、热点问题和可能引发大规模集体上访及群体性事件的信访事项,要逐级上报提出解决的建议和意见,包括转送、交办、督办、报结、督查、协调以及报请市、县(区)相关领导等,会议纪要所列出的事项由市、县(区)行政效能办和信访局(办)负责督办。督查督办后,有关部门拒不执行督查督办意见的,按照《南宁市行政责任追究暂行办法》的有关规定,予以责任追究。

环评的工作程序和主要内容

环境影响评价的工作程序和主要内容 环评工作的开展主要有三个阶段:1、准备阶段;2、正式工作阶段;3、环境影响报告编制阶段。 1.准备阶段环境影响评价第一阶段,主要完成以下工作内容。首先是研究有关文件,包括国家和地方的法律法规、发展规划和环境功能区划、技术导则和相关标准、建设项目依据、可行性研究资料及其他有关技术资料。之后需进行初步的工程分析,明确建设项目的工程组成,根据工艺流程确定排污环节和主要污染物,同时进行建设项目环境影响区的环境现状调查。结合初步工程分析结果和环境现状资料,可以识别建设项目的环境影响因素,筛选主要的环境影响评价因子,明确评价重点。最后确定各单项环境影响评价的范围和评价工作等级。如果是编制环境影响报告书的建设项目,该阶段的主要成果是编制完成环境影响评价大纲,将以上这些工作的内容和成果全部融入其中;如果是编制环境影响报告表的建设项目,无需编制环境影响评价大纲。 2.正式工作阶段环境影响评价第二阶段,主要工作是做进一步的工程分析,进行充分的环境现状调查、监测并开展环境质量现状评价,之后根据污染源强和环境现状资料进行建设项目的环境影响预测,评价建设项目的环境影响,并开展公众意见调查。最重要的,是要根据建设项目的环境影响、法律法规和标准等的要求以及公众的意愿,提出减少环境污染和生态影响的环境管理措施和工程措施。若建设项目需要进行多个厂址的比选,则需要对各个厂址分别进行预测和评价,并从环境保护角度推荐最佳厂址方案;如果对原选厂址得出了否定的结论,则需要对新选厂址重新进行环境影响评价。 3.环境影响报告编制阶段环境影响评价第三阶段是环境影响报告书或报告表的编制阶段,其主要工作是汇总、分析第二阶段工作所得的各种资料、数据,从环境保护的角度确定项目建设的可行性,给出评价结论和提出进一步减缓环境影响的建议,并最终完成环境影响报告书或报告表的编制。

统计分析管理制度

统计分析管理制度 2006年第一版

中国网通广东省分公司 支撑共享中心 2006年3月制 1.总则 ●明确报人员相关职责,保持统计分析的准确性和时效性。 ●确定报表数据种类,统一报表统计口径,保证报表数据统一性。 ●制定报表开发与作业流程,保证报表工作有序性。 ●规范报表周边信息以及报表归档工作,确保报表数据的可查性和追溯性。 2.细则 2.1 统计分析人员职责要求 2.1.1统计分析人员职责描述 ●负责与市场部、财务部等部门共同确定报表统计口径与固定报表体系。 ●负责制作财务报表、集团报表、经营分析报表等固定报表。 ●负责提取统计分析类临时数据。 ●负责统计分析类报表数据的稽核、报送及归档工作。

●负责就统计分析类报表相关事宜与业务部门进行沟通。 ●负责统计分析类报表问题的核查与处理。 2.1.2 统计分析人员职责分工 ●需设立统计分析岗与统计分析稽核岗,即填表人与审核人。 ●填表人负责报表的制作与报送工作,审核人负责报表的稽核与归档工作。 ●填表人与审核人不能为同一个人,可采取交叉复核的方式,即此报表的填表 人可作为另一份报表的审核人。 ●填表人和审核人均确认后方可报送,由填表人和审核人共同承担责任。 2.1.3 对统计分析报表接口的规定 ●对于各业务部门需要省公司或分公司定期提供的数据,业务部门把已审批的 《统计数据需求登记表》或通过ITS上报报表需求给综合室,由支撑共享中心负责人审批后交统计分析岗处理。 ●对于业务需求,若不需系统开发的,转由统计分析岗处理,对于需系统开发 的,则由需求管理员安排厂家开发。 ●计费账务运行室在统计数据中若有程序开发或改动的需求,在ITS向综合室 需求管理员提出需求,由需求管理员安排厂家处理。 ●各业务部门须指定统计分析报表接口人。统计分析人员直接向报表接口人提 供报表和有关信息,由报表接口人向对应分公司或部门发布。

公司配送人员工作流程及注意事项(参考模板)

配送人员工作流程及注意事项 配送员是公司内直接与顾客打交道,对顾客能否继续订购我公司商品有着重要影响,也是企业良好形象的体现。因此特制定以下工作流程及注意事项: 一、工作流程 (一)出车前车况检查、登记 1、出车前检查汽车水箱水、汽油、机油、轮胎状况,并定期实行车辆保养,确保行车安全; 2、发现车辆有故障时应立即送检维修; 3、保持车体外部、车厢内干净整洁,禁止脏乱有异味。 4、出车时必须佩带工作牌,统一佩在胸前,着装干净整洁。 5、检查后认真填写《出车登记表》登记日期、检查时间、车辆状况、公里数等。 (二)送货单的领取、确认 1、车辆检查完毕后到公司财务部门制单员处签字领取《送货单》。 2、领取《送货单》时仔细查看《送货单》上地址、电话、联系人是否详细;货品、数量、收款金 额是否清楚,确认无误后在《送货单》存根联配送人员一栏签字。(配送人员只对照单送货负 责,对送货单开具错误不负责任。) 3、签字确认后领取《送货单》客户联、结算联、仓库联、记账联;将签过字的存根联交制单员保管。(三)仓库提货、验货 1、配送人员凭《送货单》向仓库提货,将仓库联交仓库主管领取货物,同时对所领货物的品项、数 量、规格、质量等进行核对验收;确认无误后在仓库联配送人员一栏签字确认收货、装车。 2、对于大宗货物一车无法装下的情况,必须向仓库主管索要货物领取单,仓库主管根据所剩货品、 数量、规格等出具《货物领取单》,配送人员根据《货物领取单》可再次向仓库领取剩余货物。(四)安排行程、如约配送 1、根据《送货单》,结合部门主管的安排,调配《送货单》的先后顺序,合理安排行程,预约送货 时间。

2、送货过程中必须文明驾驶、遵守《中华人民共和国道路交通管理条例》,保管好公司财产,携带 保存好各种证件、货单、票据、财物、以及车上工具等,凡有丢失由配送人员负责。严禁私自带公司外人跟车或实习。 (五)货物送达与交接 1、配送车辆到达客户处,车辆要停靠在指定位置或按照客户要求停靠,不得随意乱停。 2、联系客户并请客户根据《送货单》对所送商品进行逐件验收; 3、对于货到付款客户,客户对货物验收无误后,请客户交清货款并在《送货单》记账联上签名确认 收到货物,之后将《送货单》客户联、结算联交与客户。 4、对于已付款客户,客户对货物验收无误后,请客户在《送货单》记账联上签名确认收到货物,之 后将《送货单》客户联、结算联交与客户。 5、对于批结、月结等其它方式结款,本次不结款客户,请客户在《送货单》记账联、结算联上签名 确认货款未付,之后将《送货单》客户联交与客户。 6、对于非《送货单》上注明收货人收货,需与原收货人联系并核对委托收货人信息,要求委托人出 示有效证件,并在记账联、结算联上进行签字、抄录相关有效证件号码、记录委托收货人手机、电话。 (六)送货结束货款、单据的交接及车辆入库 1、当天送完货后,回公司要把当天收到的货款及记账联、结算联(未付款客户的结算联)交给财务 部出纳员,当面清点、核对无误后,向出纳员索要相对应的签字存根联。 2、与财务部门交接完毕后填写完全当日《出车登记表》并将《送货单》存根联及当日《出车登记表》 当面交行政部主管,并在行政部《配送人员日工作登记簿》上签字确认。 3、下班时,配送员要把配送车辆等公司的交通工具停在指定的位置,并且要锁好大锁,车门。 二、注意事项 1、严禁酒后开车,司机在上班待命时间内不准喝酒。 2、停车时不能影响正常交通,下车要锁好车门。 3、要严格按顺序和行车路线行驶,违规损坏货物,按货物价值赔偿。

公司运营管理机制.doc

公司运营管理机制1 公司运营管理机制 事业部制:事业部是在公司总部宏观领导下,拥有完全的经营自主权,实行独立经营、独立核算的部门,既是受公司控制利润中心,具有利润生产和经营管理的职能,同时也是产品责任单位或市场责任单位,对产品设计、生产制造及销售活动负有统一领导的职能。因此,公司按照现行或未来发展中形成的农业、工业和商业等三种业态,分别设立农业、产业和电商三个事业部,其日常运营管理授权这三个事业部组织实施。 各事业部在全面履行其工作职责的同时,须开展包括但不限于下述运营管理工作:(1)依据公司的各项规章制度及本事业部业务特点,全面完善并细化日常运营管理制度和工作流程;(2)收集、汇总并编制本事业部生产经营计划和统计报表,实施生产调度、运行质量、作业项目、劳动定额、设备运行、物料调配等相关业务的日常管理;(3)审核所属各项目公司作业计划书及工艺设计并监督、指导其实施;(4)协调、控制所属各项目公司的运营业务关系及其生产经营运行中的工、料、费;(5)实施安全生产监督与管理。 计划管理:计划是战略落实的具体方案,也是一定时期生产经营活动的动力纲领。计划管理包括编制、审批、执行、监控等四个环节:(一)计划体系。计划管理是公司运营管理的基础和重要组成部分,公司实行总部、事业部和项目公司三级计划管理体制。公司总裁是公司层面计划管理的第一责任人;事业部总经理是本产业计划管理的第一责任人,事业部所属各项目公司经理是本级计划管理的第一责任人。 1、公司总部:以资产增值、资本运作、项目投(融)资、资金运营和经营利润为主要计划对象,由总部财务运营中心作为总部计划管理业务的主持部

门,并对总部职能部门实施预算业务管理。 2、事业部:以所属产业生产经营活动所必备的各项核心要素(包 括但不限于:产出量、销售量、业务收入、生产成本、经营费用、经营利润等)为主要计划对象,由事业部计划管理主管部门主持计划管理业务工作,并负责与总部财务运营中心实施业务对接。 3、项目公司:事业部所属的项目公司,以及直属于总部的全资公司,以其作业项目为主要计划对象,在保证本级事业部“利润中心”功能得以体现的前提下,可根据各项目公司业务特点,按“利润中心”或“成本中心”、“责任中心”方式实施计划管理。由项目公司财务部门主持本单位计划管理业务工作,并负责与事业部计划主管部门实施业务对接。 计划的编制。公司财务运营中心或事业部计划主持部门,应按照本部门归属的计划内容,拟定内容齐全、格式规范、符合实际、便于操作的统一表格及编制文字说明式样,交由协助部门或项目公司填报。各项目公司或协助部门必须按主持部门的要求,及时、准确、完整的向主持部门提供各种相关信息资料及计划草案。 公司财务运营中心或事业部计划主持部门应充分了解公司或事业部年度及阶段经营目标和工作重点,对各种信息资料、数据进行认真分析;计划草案在提交公司运营总监审核前,主持部门必须汇集协助及其他相关部门,进行计划的可行性论证。 在计划体系确立后,上述计划编制工作是一个公司上下共同协作的过程,总部财务运营中心重点负责计划编制过程的协调、监督、指导工作,以保障公司整体计划达到公司战略目标的要求。 编审流程。公司计划实行“两下两上”的编审流程。

工作流程编写指南

*******************公司 工作流程编写指南 前言 为规范、科学、务实地撰写公司的流程,特编写《********公司工作流程编写指南》供相关人员参考。本指南主要对工作流程的规范填写做出了指导建议,希望您在填写之前仔细阅读该指引所列出的解释,如仍有疑问,请与人力资源部门或顾问组联系,谢谢! 深圳清溢和衡管理咨询有限公司顾问组 年月日

目录 一、定义 (3) 二、流程文件的内容 (3) 三、流程设计的原则 (4) 四、流程图内容解释及说明 (5) 五、流程编写格式规范 (8) 六、流程描述注意事项 (11) 七、流程和制度的区别 (11) 八、流程绘制操作步骤 (12)

**********公司工作流程 编写指南 一、定义 1、流程 一个或一系列有规律的活动,这些行动以确定的方式发生或执行,导致特定结果的实现。 2、关键流程 管理过程中涉及项目内容重大,职责划分跨越两个或两个以上部室,管理流程的履行需要部室之间的协调、沟通、配合才能完成的重要性流程。 3、流程管理 指从流程的角度切入,关注流程是否增值,从而形成认识流程、建立流程、运作流程、优化流程的体系,并在此基础上开始一个“再认识流程”的新的循环。同时有着流程描述、流程改进等一系列方法、技术与工具。 二、流程文件的内容 流程要包括对工作事项/活动进行策划的所有内容,既通常定义为:5W1H。 ?5W ——When:实施流程的时机,既启动流程的条件/依据,也称为“输入”; ——Who:规定由“谁”来实施流程; ——What:流程需要完成的工作内容,包括内容的先后顺序和接口要求; ——Where:完成流程规定内容所需的环境和资源; ——Why:流程实施的结果——流程内容目标,也成为“输出”。 ?1H ——How:规定流程中所需完成的各项内容的方法,也成为工作标准。 依据上述对流程内容规范的定义,我们将形成流程的文件内容划分两个部分:流程图部分和工作标准(流程说明文件)部分。

稳定问题分析研判工作制度

稳定问题研判指挥处置中心工作制度 第一条为准确及时地掌握全区维稳形势,及时处理各类不稳定事件,牢牢掌握控制维护社会稳定的主动权,提高驾驭维稳局势的能力,为我区维护社会稳定工作的科学决策提供客观依据,特制定本制度。 第二条稳定问题研判指挥处置中心负责组织指挥处理我区范围内各类突发性群体事件,发挥协调和指挥的枢纽作用,督促指导区有关部门做好协调、排查、处置工作,力争做到“发现得早、化解得了、控制得住、处置得好”,切实把问题解决在萌芽状态、解决在基层、解决在内部,全力维护我区和谐稳定的发展大局。 第三条中心负责做好信息的收集研判工作,全面排查我区范围内各类不稳定因素和群体性事件苗头,以便准确掌握群体性事件的性质、规模、危害程度和主要策划者。同时,迅速向区委、区政府领导报告,做好应对重大突发事件的准备,有针对性地建立处置方案。 第四条发生突发性群体事件后,中心应立即将事件情况迅速报告区委、区政府领导,同时组织协调各相关责任单位和责任人在第一时间赶到现场,履行职责,开展事件处置工作,并根据现场情况采取以下措施: 1、迅速查清事件产生的原因、规模和可能产生的后果。

2、提出合理处理的意见,向区委、区政府领导报告情况。 3、组织力量维护现场秩序。 4、召集责任主体和相关职能部门,共同研究处置方案,明确分工,落实任务和责任。 5、根据现场情况,注重方式方法,接待群众代表,听取情况反映。 6、根据事态发展,向上级部门报告事件的发生时间,发生原因以及处置情况。 7、事件得到平息后,及时研究布置善后工作。 第五条事态平息后,中心要加强对善后处理的督查督办力度,督促有关职能部门及时有效处理群众反映的问题。并跟踪掌握信访动态,抓好信息排查和信息报送工作,防止纠纷的再次发生。 第六条建立责任追究制度,对发生下列情形之一的,由中心提出查究建议,经区委、区政府领导研究同意后,追究相关责任人责任: (一)对影响社会稳定的重要情报信息或重大事件排查不力、瞒报、谎报、迟报、漏报,致使事态扩大,造成严重后果或恶劣影响的。 (二)因主管领导、直接责任人工作不负责,对带有苗头性、倾向性不稳定因素不排查调处,对群众长期

施工员工作流程及主要施工内容

洛阳水利工程局有限公司 施工员工作流程及主要施工内容 一、施工员的定义 水利施工员是基层的技术组织管理人员,是施工现场生产一线的组织者和管理者,在水利施工过程中具有极其重要的地位,是水利施工企业各项组织管理工作在基层的具体实践者,是完成水利工程施工任务的最基层的技术和组织管理人员。 作为一名合格的施工员,从工程刚开始的投标文件编制及中标后的合同签订,到进驻施工现场的施工准备,再到现场过程中的施工生产安排、施工方案及进度计划编制、工程质量管理、工程资料整理、每月计量签证工作等,以及工程完工后的验收及结算一系列贯穿整个工程项目施工阶段的工作内容都要积极的参加进去,要对不同阶段的施工情况了若指掌,针对不同情况,合理安排各项施工任务,有目的性的调配人员、材料、机械,要保证施工现场合理有序的组织实施各项施工任务,按时保质保量的完成合同约定的建设内容。 二、施工员的工作流程 一个工程项目想要按时保质保量的完成合同约定的建设内容,必须有一套成熟的管理办法和正确的工作流程。最为一个施工企业,施工员必然是整个施工过程中的中坚力量,他的工作内容牵扯到工程项目的方方面面,所以说施工员的整个施工流程和工作方法是否合理,对工程的质量、安全、进度起到了至关重要的作用。为了能够更进一步的提高公司施工员的业务能力和工作效率,现根据实际施工中需要

参与的各项工作,编制制订了施工员工作流程。 招投标阶段的文件编制→中标后的合同签订→熟悉图纸、参与图纸会审→编制施工组织设计及各项专项施工方案→参与编制施工进度计划→参与编制人员、材料、机械用量计划→技术交底→施工现场工作安排(人员、机械、材料)→施工质量控制→对各项工作进行检查、分析、纠偏、整改落实→参与施工资料整理→参与工程验收→参与竣工结算的编制→参与工程成本核算。 二、施工员的工作内容 1、招投标阶段 首先在工程的招投标阶段,就需要施工员进行踏勘现场,参加编制投标文件。对于一个由施工员参加报价的标书一旦以后中标,那么施工员作为该项目的管理人员之一,他对该工程的初步有了一个了解,如果报价中存在失误那么可以在工程开工后尽可能进行弥补。 2、合同签订 投标项目中标后,进一步研究施工合同,熟悉签订的各项合同条款,掌握工程承包范围及质量工期目标等,作为以后各项计划制定的目标及计量签证支付的依据。 3、图纸绘审 施工员在接到工程设计图纸后要认真阅读,对工程设计图纸中存在的疑问或存在的问题加以汇总,并在图纸会审时向设计方提出,要求给与明确答复,并出据正规的书面文件。在施工过程中,如发现设

质量投诉处理工作制度分析(doc 2页)

质量投诉处理工作制度分析(doc 2页)

1、对公民、法人和其他组织通过信函、电话或登门来访等形式反映工程质量问题的活动,质监站应热情接待。 2、建设工程在保修期内和建设过程中发生的工程质量投诉问题,质监站应主动到现场进行调查,责成有关方面进行处理。 3、在正常使用条件下,房屋建筑工程的最低保修期限为: ①地基基础工程和主体结构工程,为设计文件规定的该工程合理的使用年限; ②屋面防水工程、有防水要求的卫生间、房间和外墙面的防渗漏为5年; ③供热与供冷系统,为2个采暖期、供冷期; ④电气管线、给排水管理、设备安装为2年; ⑤装修工程为2年 其他项目的保修期限由建设单位和施工单位在合同中约定。 4、对超过保修期限,在使用过程中发生的工程质量问题,由产权单位或有关部门处理。

5、对上级领导批转的工程质量投诉和本站接受的质量投诉要进行详细的记录,有必要的进行现场勘察,做到受理一件,处理一件,件件有结果,并在两个月内将调查和处理情况向主管部门汇报。 6、对涉及到由多方面原因引起的工程质量投诉,需要几个部门共同处理的,由建设行政主管部门与有关部门协调,按各司其职、积极处理的原则办理。 7、在处理工程质量投诉工作中,如投诉方要求对工程质量进行检测、鉴定时,由投诉处理机构确定并委托有资质的检测单位或组织有关专家进行,其费用由投诉方垫支,责任单位承担。如经检测鉴定,工程质量符合设计和检测评定标准要求,其费用由投诉方承担。 8、对以电话、来访等形式的投诉,应要求投诉者提供文字材料,并对材料的真实性负责,对注明联系地址和联系人姓名的实名投诉,要将处理情况通知投诉人。 9、对工程质量责任方不及时或不按规定处理用户投诉的,可提请建设行政主管部门按照有关规定进行处罚。 10、对涉及到廉政建设或其他方面的信访函件,要严格保密,注意保护举报人。 11、加强投诉数据的管理,并按规定归档备查。

相关主题
文本预览
相关文档 最新文档