分类 Paas 下的文章

SSO介绍

SSO(Single sign-on):在多个相互信任的应用系统中,只需要登录一次,就可以访问其他的应用系统。

SSO的实现方式

无论是SSO还是普通登录,它们的实现都是基于Cookie-Session模式的。该模式的基本流程如下:

640.png


从上面可以看出,cookie 是服务端生成发送到浏览器端的。浏览器端将 cookie 存储在本地,并且在之后每次的用户端 HTTP 请求头中都附带的一小段数据。

而且cookie 是跟域名关联的,其对应浏览器所请求的域名

cookie有如下的重要属性:

  1. Name:单条 cookie 信息的 key 值,我们通常也是通过这个 key 值设置和获取存储在 cookie 中数据。

  2. Value:我们所说的cookie的值。

  3. Expires/Max-Age:此条 cookie 记录的到期时间。

  4. Domain:此条 cookie 的作用范围。我们知道域名是分多个级别的,如:顶级域名、二级域名、三级域名等等。domain 属性是指可以访问该 cookie 的域名。如果设置为 '.baidu.com',那么末尾是 '.baidu.com' 结束的域名都可以访问到这个 cookie,要注意必须是 '.' 开头。这产生了一个效果,那就是 '.baidu.com' 下属的子域名也可以访问这个 cookie,例如: '.tieba.baicu.com'。

1、各子系统在相同的域名下

一般情况下,企业只有一个二级域名,然后通过三级域名区分不同的系统。比如公司有个二级域名叫做:.bl.com,同时有两个业务系统分别为:.app1.bl.com和 .app2.bl.com,以及一个登录系统:.sso.bl.com。

我们要实现只在 .sso.bl.com登录,.app1.bl.com和 .app2.bl.com也就登录了。

例如,用户通过浏览器登录 .sso.bl.com系统,根据cookie-session模式可知, .sso.bl.com 的服务端的session中会记录登录状态,同时浏览器会保存cookie信息,其中cookie的Domain属性为 .sso.bl.com。

如果我们想让其他两个系统 .app1.bl.com 和 .app2.bl.com 登录,需要解决两个问题:

  • 浏览器的cookie的Domain属性是.sso.a.com,在给app1.bl.com和app2.bl.com发送请求是带不上的。

  • sso、app1和app2是不同的应用,它们的session存在自己的应用内,是不共享的。

好在解决这两个问题是比较简单的。针对第一个问题,sso登录以后,可以将cookie的域设置为二级域名 .bl.com,这样所有子域的系统都可以访问到二级域的 cookie。针对第二个问题,解决方法就是 seesion共享。

2、各子系统属于不同的域

若各个子系统属于不同的域,那么它们之间的 cookie 是无法共享的。因此需要一种新的解决方案,目前单点登录的标准流程就是 CAS。

CAS

Central Authentication Service ——— 中央认证服务,是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的 SSO 解决方案。

标准的CAS登录流程如下:


cas_flow_diagram.png

第一次访问app:

  1. 用户访问app系统,app系统是需要登录的,app验证cookie和session发现用户没有登录,要求用户重定向到 CAS Server,同时要携带service参数。

  2. 跳转到CAS Server,CAS Server系统发现用户也没有登录本系统,弹出用户登录页。

  3. 用户填写用户名、密码,CAS Server系统进行认证后,CAS Server生成一个该用户的SSO session存放到本地session中,并生成一个SSO session id,即TGT。最后重定向返回一个CASTGC(放在cookie内)给用户浏览器,这个TGC中包含了TGT的值。

  4. CAS Server系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。

  5. app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。

  6. 验证通过后,app系统将登录状态写入session并设置app域下的Cookie,再返回给浏览器。

  7. 用户发起请求,带上cookie,app系统校验cookie和session。通过后,返回app正确的内容给浏览器。

第二次方法app:

  1. 用户发起请求,并带上 Cookie 中的 JSESSIONIDapp 服务端。

  2. app 服务端 使用 JSESSIONIDSession 中存储的数据进行校验。

  3. 校验通过,返回正确的内容,展示 app

再app登录成功的情况下,第一次访问app2:

  1. 访问 app2 服务地址,app2 请求未通过认证,重定向至 CAS Server 地址。

  2. 访问 CAS Server 地址,发送认证请求,带上 TGC 信息。

  3. CAS Server 通过 TGC中的TGT 去查找 SSO Session 的信息进行认证。

  4. 认证通过,生成票据 ST 重定向至 app2 的服务地址。

  5. app2 服务 携带 STCAS Server 进行认证。

  6. CAS Server 认证成功,返回通过的响应。

  7. app2 服务拿到成功的响应后,设置 Session,并重定向至 app2 的地址,并设置 Cookie  MOD_AUTH_CAS_S

  8. 用户浏览器 发起请求,带上 Cookie 中的 MOD_AUTH_CAS_S ,发送给app2 服务进行校验。

  9. app2 服务使用 MOD_AUTH_CAS_SSession 中存储的数据进行校验。

  10. 校验通过,返回正确的内容,展示 app2

CAS重要字段

TGT

CAS Server 创建TGT,存放在 CAS Server的 Session 里面,根据用户信息签发的。简单来说,TGT 是 SSO Session 的 ID。

TGC

创建 TGT 的同时,生成 TGC。通过 CAS Serverresponse header 的 set-cookie 字段设置 TGC,其中包含了 TGT 的信息。

ST

根据 TGT 签发的 ST,是 CAS 为用户签发的访问某一 service 的票据。在CAS Server 创建 TGT 后,生成一个 ST 将其添到重定向地址后。

为了保证ST的安全性:ST 是基于随机生成的,没有规律性。而且,CAS规定 ST 只能存活一定的时间,然后 CAS Server 会让它失效。而且,CAS 协议规定ST只能使用一次,无论 Service Ticket 验证是否成功, CASServer 都会清除服务端缓存中的该 Ticket ,从而可以确保一个 Service Ticket 不被使用两次。



作者:吾乃零陵上将军邢道荣是也
链接:https://www.jianshu.com/p/95598407fb90
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


推荐一个分布式单点登录框架XXL-SSO!

推荐一个分布式单点登录框架XXL-SSO!

后端元宇宙

后端元宇宙

关注他

有关单点登录(SSO)之前有写过两篇文章

如果说XXL-JOB你可能并不陌生,它是非常火爆的一个分布式任务调度平台。但其实在该作者还有一个非常优秀的开源项目叫XXL-SSO,这两个个项目都是1000+Star。

XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,开箱即用。

这里主要是通过对XXL-SSO源码的分析,将理论和实践结合!


一、快速接入sso

1、xxl-sso特性

  1. 简洁:API直观简洁,可快速上手

  2. 轻量级:环境依赖小,部署与接入成本较低

  3. 单点登录:只需要登录一次就可以访问所有相互信任的应用系统

  4. 分布式:接入SSO认证中心的应用,支持分布式部署

  5. HA:Server端与Client端,均支持集群部署,提高系统可用性

  6. 跨域:支持跨域应用接入SSO认证中心

  7. Cookie+Token均支持:支持基于Cookie和基于Token两种接入方式,并均提供Sample项目

  8. Web+APP均支持:支持Web和APP接入

  9. 实时性:系统登陆、注销状态,全部Server与Client端实时共享

  10. CS结构:基于CS结构,包括Server"认证中心"与Client"受保护应用"

  11. 记住密码:未记住密码时,关闭浏览器则登录态失效;记住密码时,支持登录态自动延期,在自定义延期时间的基础上,原则上可以无限延期

  12. 路径排除:支持自定义多个排除路径,支持Ant表达式,用于排除SSO客户端不需要过滤的路径

2、环境

  • JDK:1.7+

  • Redis:4.0+

3、 源码地址

4、 项目结构说明

- xxl-sso-server:中央认证服务,支持集群- xxl-sso-core:Client端依赖- xxl-sso-samples:单点登陆Client端接入示例项目    - xxl-sso-web-sample-springboot:基于Cookie接入方式,供用户浏览器访问,springboot版本    - xxl-sso-token-sample-springboot:基于Token接入方式,常用于无法使用Cookie的场景使用,如APP、Cookie被禁

5、 架构图



应用系统:sso-web系统(8081端口)、sso-web系统(8082端口)(需要登录的系统)

SSO客户端:登录、退出(独立jar包给应用系统引用)

SSO服务端:登录(登录服务)、登录状态(提供登录状态校验/登录信息查询的服务)、退出(用户注销服务)

数据库:存储用户账户信息(一般使用Mysql,在当前项目中为了简便并没有查询数据库)

缓存:存储用户的登录信息(使用Redis)


二、快速接入XXL-SSO框架

1、 部署认证中心(sso-server)

只需要修改配置文件即可,配置文件位置:application.properties

## 配置redisxxl.sso.redis.address=redis://118.31.224.65:6379##  登录态有效期窗口,默认24H,当登录态有效期窗口过半时,自动顺延一个周期xxl.sso.redis.expire.minute=1440

2、 部署'单点登陆Client端接入示例项目'

这里指需要接入SSO的系统,在当前项目有xxl-sso-web-sample-springboot和 xxl-sso-token-sample-springboot两个示例项目,这里暂且以sso-web为示例。

1)、maven依赖

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-sso-core</artifactId>
    <version>${最新稳定版}</version></dependency>

2)配置 XxlSsoFilter

参考代码:com.xxl.sso.sample.config.XxlSsoConfig

@Beanpublic FilterRegistrationBean xxlSsoFilterRegistration() {
    // xxl-sso, redis init    JedisUtil.init(xxlSsoRedisAddress);
    // xxl-sso, filter init    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setName("XxlSsoWebFilter");
    registration.setOrder(1);
    registration.addUrlPatterns("/*");
    registration.setFilter(new XxlSsoWebFilter());
    registration.addInitParameter(Conf.SSO_SERVER, xxlSsoServer);
    registration.addInitParameter(Conf.SSO_LOGOUT_PATH, xxlSsoLogoutPath);
    return registration;}

3) application.properties修改

## 中央认证服务地址xxl.sso.server=http://ssoserver.com:8080/xxl-sso-server## 退出接口xxl.sso.logout.path=/logout## 排除走sso的接口xxl-sso.excluded.paths=/excludedUrl## redis地址xxl.sso.redis.address=redis://118.11.214.65:6379


三、快速验证

1、修改host文件

修改Host文件:域名方式访问认证中心,模拟跨域与线上真实环境

127.0.0.1       ssoserver.com127.0.0.1       webb.com127.0.0.1       weba.com

2、启动项目

分别运行 “xxl-sso-server” 与 “xxl-sso-web-sample-springboot”,为了验证单点登录,这里sso-web需求启动两次,只是一次是8081端口,一次是8082端口。

## 1、SSO认证中心地址:http://ssoserver.com:8080/xxl-sso-server## 2、Client01应用地址:http://weba.com:8081/xxl-sso-web-sample-springboot/## 3、Client02应用地址:http://webb.com:8082/xxl-sso-web-sample-springboot/

3、验证

SSO登录流程

正常情况下,登录流程如下:

1、访问 "Client01应用地址" ,将会自动 redirect 到 "SSO认证中心地址" 登录界面



2、成功登录后,将会自动 redirect 返回到 "Client01应用地址",并切换为已登录状态



3、此时,访问 "Client02应用地址",不需登陆将会自动切换为已登录状态



很明显Client01登录成功后,Client02无需再重新登录就可以访问了。

SSO注销流程

正常情况下,注销流程如下:

1、访问 "Client01应用地址" 配置的 "注销登陆path",将会自动 redirect 到 "SSO认证中心地址" 并自动注销登陆状态2、此时,访问 "Client02应用地址",也将会自动注销登陆状态


四、核心代码分析

1、SSO客户端(sso-core)拦截器

主要看sso拦截器流程就可以了

@Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        // 获取当前请求接口        String servletPath = req.getServletPath();
        // 1、是否是排除 不走sso的接口 如果是直接放行        if (excludedPaths != null && excludedPaths.trim().length() > 0) {
            for (String excludedPath : excludedPaths.split(",")) {
                String uriPattern = excludedPath.trim();

                // 支持ANT表达式                if (antPathMatcher.match(uriPattern, servletPath)) {
                    // excluded path, allow                    chain.doFilter(request, response);
                    return;
                }
            }
        }
        // 2、是否是退出登录接口 
        if (logoutPath != null
                && logoutPath.trim().length() > 0
                && logoutPath.equals(servletPath)) {

            // 2.1删除当前请求客户端的cookie            SsoWebLoginHelper.removeSessionIdByCookie(req, res);
            // 2.2重定向到sso认证服务的 退出接口            String logoutPageUrl = ssoServer.concat(Conf.SSO_LOGOUT);
            res.sendRedirect(logoutPageUrl);
            return;
        }
        // 3、校验用户(是否存在,是否过期) 这个方法下面在展开        XxlSsoUser xxlUser = SsoWebLoginHelper.loginCheck(req, res);
        // 4、令牌校验失败        if (xxlUser == null) {
            //获取当前请求地址            String link = req.getRequestURL().toString();
            // 重定向到sso认证服务的 登录接口            String loginPageUrl = ssoServer.concat(Conf.SSO_LOGIN)
                    + "?" + Conf.REDIRECT_URL + "=" + link;
            res.sendRedirect(loginPageUrl);
            return;
        }
        // ser sso user        request.setAttribute(Conf.SSO_USER, xxlUser);
        // 已经登录 放行        chain.doFilter(request, response);
        return;
    }

在看下上面的loginCheck方法

/**     * 令牌校验     *     * @return 用户信息     */
    public static XxlSsoUser loginCheck(HttpServletRequest request, HttpServletResponse response){

        //去cookie去获取xxl_sso_sessionid 其实就是之前原理篇说的token,只是名称叫法不同        String cookieSessionId = CookieUtil.getValue(request, Conf.SSO_SESSIONID);

        // 这里去redis中获取用户信息 有可能获取不到。这个方法就不粘贴了 这里有三种情况        //1、cookieSessionId为空 那么直接返回null        //2、cookieSessionId不为空,但在redis获取不到用户信息,因为存在其它系统退出后 redis删除了        //3、redis获取到了用户信息,但超过有效期了 依旧返回null        XxlSsoUser xxlUser = SsoTokenLoginHelper.loginCheck(cookieSessionId);
        if (xxlUser != null) {
            return xxlUser;
        }
        // 如果获取不到 所以已经在其它系统退出登录了 那删除cookie中的xxl_sso_sessionid        SsoWebLoginHelper.removeSessionIdByCookie(request, response);
        //如果是 sso登录成功后 回调过来的 这个时候在这里是可以获取到xxl_sso_sessionid的        String paramSessionId = request.getParameter(Conf.SSO_SESSIONID);
        xxlUser = SsoTokenLoginHelper.loginCheck(paramSessionId);
        if (xxlUser != null) {
            CookieUtil.set(response, Conf.SSO_SESSIONID, paramSessionId, false);    /
            return xxlUser;
        }
        return null;
    }

2、认证服务器(sso-server)登录接口

/**     * sso认证中心 登录接口     */
    @RequestMapping(Conf.SSO_LOGIN)
    public String login(Model model, HttpServletRequest request, HttpServletResponse response) {

        // 同样的 该判断sso上有没有全局会话 
        XxlSsoUser xxlUser = SsoWebLoginHelper.loginCheck(request, response);
        //如果 其它系统登录成功过 这个就不回为null 直接再带上xxl_sso_sessionid=xxx 重定向到之前接口        //也不用在登录了        if (xxlUser != null) {
            // success redirect            String redirectUrl = request.getParameter(Conf.REDIRECT_URL);
            if (redirectUrl!=null && redirectUrl.trim().length()>0) {

                String sessionId = SsoWebLoginHelper.getSessionIdByCookie(request);
                String redirectUrlFinal = redirectUrl + "?" + Conf.SSO_SESSIONID + "=" + sessionId;;
                return "redirect:" + redirectUrlFinal;
            } else {
                return "redirect:/";
            }
        }
        //只有全局会话不存在 才会跳转登录页面 
        model.addAttribute("errorMsg", request.getParameter("errorMsg"));
        model.addAttribute(Conf.REDIRECT_URL, request.getParameter(Conf.REDIRECT_URL));
        return "login";
    }

3、认证服务器(sso-server)退出接口

@RequestMapping(Conf.SSO_LOGOUT)
    public String logout(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
        // 退出操作        SsoWebLoginHelper.logout(request, response);
        // 跳转到登录页        redirectAttributes.addAttribute(Conf.REDIRECT_URL, request.getParameter(Conf.REDIRECT_URL));
        return "redirect:/login";
    }

再来看下 logout 方法做了哪些事情

public static void logout(HttpServletRequest request,
                              HttpServletResponse response) {

        String cookieSessionId = CookieUtil.getValue(request, Conf.SSO_SESSIONID);
        if (cookieSessionId==null) {
            return;
        }
        //1、删除全局缓存 redis中 清除cookieSessionId,这样其它系统在令牌校验的时候 会失败。即一处退出,处处退出。        String storeKey = SsoSessionIdHelper.parseStoreKey(cookieSessionId);
        if (storeKey != null) {
            SsoLoginStore.remove(storeKey);
        }
        //2、清除全局会话 
        CookieUtil.remove(request, response, Conf.SSO_SESSIONID);
    }

整个核心代码的逻辑都在这里了,其实结合上一篇的理论篇,理解起来就一点也不复杂了。

声明: 公众号如需转载该篇文章,发表文章的头部一定要 告知是转至公众号: 后端元宇宙。同时也可以问本人要markdown原稿和原图片。其它情况一律禁止转载!


(一)制造企业数字化转型

制造业数字化企业转型是指企业通过采用先进的数字化技术,如工业4.0、智能制造、工业物联网、大数据、人工智能等,对传统的生产方式、产品设计、制造流程、服务模式和管理方法进行全面革新。这一转型过程不仅提升了企业的运营效率和产品质量,还增强了企业的创新能力和市场竞争力,实现了从传统制造向智能化、自动化、信息化的现代制造的跨越。

(二)数字化制造—PLM/MES/ERP集成(业务流)
数字化制造中的PLM(Product Lifecycle Management,产品生命周期管理)、MES(Manufacturing Execution System,制造执行系统)和ERP(Enterprise Resource Planning,企业资源计划)的集成是实现智能制造的关键步骤。这种集成通过业务流和数据流的无缝连接,提高了制造过程的效率、灵活性和响应速度。以下是业务流中各系统间的一些关键交互:

图片

  1. 设计数据接收:PLM系统提供产品设计数据,这些数据被MES和ERP系统用来计划生产和准备必要的资源。

  2. 工艺分工:MES接收来自PLM的设计数据,并将其转化为具体的工艺流程和工作指导。

  3. 生成生产计划:ERP系统根据市场需求、库存状态和资源可用性生成生产计划,这些计划随后被MES用来安排具体的生产任务。

  4. BOM管理:PLM系统管理产品的Bill of Materials(物料清单),MES和ERP使用这些信息来安排物料采购和生产。

  5. 订单管理:ERP系统管理客户订单,MES根据这些订单生成具体的生产工单。

  6. 计划排程:MES根据ERP的生产计划和资源情况,进行详细的生产排程。

  7. 生产过程监控:MES监控生产过程,确保生产按计划进行,并实时反馈生产状态。

  8. 质量管理:MES跟踪产品质量,确保生产符合质量标准,并将质量数据反馈给PLM和ERP系统。

  9. 物料管理和追溯:MES和ERP系统共同管理物料的采购、存储和使用,确保物料的可追溯性。

  10. 设备运维管理:MES监控设备状态,进行预防性维护,并将设备使用情况反馈给ERP系统。

  11. 人员管理:MES管理操作员的技能和认证,确保人员符合生产任务的要求。

  12. 生产统计和反馈:MES收集生产数据,如产量、效率和异常情况,并将这些数据反馈给ERP系统,用于进一步的分析和决策。

(三)数字化制造—PLM/MES/ERP集成(数据流)
数字化制造中的PLM(产品生命周期管理)、MES(制造执行系统)和ERP(企业资源计划)的集成在数据流方面表现为各系统之间数据的实时交换和共享,以确保生产活动与企业战略和运营目标一致。以下是数据流中的关键点:

图片

  1. ERP系统

    • 生产计划:ERP系统制定生产计划,并将其传递给MES系统。

    • 库存管理:ERP跟踪库存水平,确保物料的及时补充。

    • 设备管理:ERP记录设备信息和维护计划,以支持MES的设备调度。

    • 人力资源:ERP管理员工信息和技能,为MES的人员调度提供数据支持。

  2. MES系统

    • 工作订单和计划:MES接收ERP的生产计划,并将其转化为具体的工作订单。

    • 物料跟踪和追溯:MES跟踪物料使用情况,确保物料的准确性和可追溯性。

    • 详细流程图和说明:MES提供生产流程的详细描述,指导生产活动。

    • 资源管理:MES管理生产所需的各种资源,包括设备、工具和人员。

  3. PLM系统

    • 3D模型和BOM:PLM提供产品的3D模型和物料清单,这些数据被MES用于生产准备。

    • 工艺设计:PLM中的工艺设计信息被MES用于指导生产过程。

    • 技术文档:PLM中的技术文档和工程变更请求(ECR)被MES用于确保生产遵循最新设计。

  4. 数据交换

    • XML/HTTP:PLM和MES之间通过XML和HTTP等技术进行数据交换。

    • 接口服务:各系统之间通过定义良好的接口服务进行通信和数据同步。

  5. 生产数据收集

    • MES收集生产过程中的各种数据,如产量、质量、设备状态等,并反馈给ERP和PLM。

  6. 闭环反馈

    • 实际制造数据:MES收集实际制造数据,反馈给PLM,以支持设计优化和产品改进。

    • 质量数据:MES收集质量数据,反馈给PLM和ERP,以支持质量控制和改进。

  7. 系统集成

    • 通过集成,各系统能够共享数据,减少冗余,提高数据的一致性和准确性。

(四)数字化工厂MOM核心指标

数字化工厂的制造运营管理(MOM)系统的核心指标(KPIs)是衡量制造过程性能的关键因素,它们帮助企业监控、优化并改进生产活动。以下是一些主要的MOM核心指标:

图片

  1. 新产品开发效率

    • 产品设计周期:从概念到完成设计的时间。

    • 新产品导入周期:新产品从设计到生产线的时间。

  2. 新产品的导入效率

    • 工单下达效率:下达工单的速度和准确性。

    • 工单按时完成率:在预定时间内完成工单的比例。

  3. 生产的执行过程效率

    • 平均异常处理时间:处理生产异常所需的平均时间。

    • 设备的利用率:设备实际使用时间与总可用时间的比例。

  4. 生产过程异常处理效率

    • 原材料的质量:原材料的合格率和质量水平。

    • 生产产品良率:生产出的产品中合格品的比例。

  5. 质量

    • 产品设计质量:设计阶段的质量控制能力。

    • 基础数据质量:生产过程中使用的基础数据的准确性。

    • 业务数据质量:业务流程中数据的准确性和完整性。

  6. 成本

    • 原材料的库存成本:原材料库存的持有成本。

    • 在制品的成本:生产过程中半成品的价值。

    • 返工成本:因质量问题导致的额外生产成本。

    • 业务沟通成本:协调生产活动所需的沟通成本。

  7. 人员能力的提升

    • 人员的技能达成率:员工达到预定技能水平的比例。

    • 产品退回率:因质量问题被退回的产品比例。

  8. 设备性能

    • 设备综合效率(OEE):衡量设备效率的综合指标,包括可用率、性能效率和质量率。

  9. 生产调度

    • 生产计划的准确性:生产计划与实际生产符合的程度。

    • 生产调度的响应时间:对生产变更做出调整的速度。

  10. 物料管理

    • 物料准时交付率:供应商按计划交付物料的准确性。

    • 物料库存周转率:库存物料的周转速度。

  11. 生产监控

    • 实时生产数据的准确性:监控系统提供的数据的准确性。

    • 生产过程的可视化程度:生产过程的可见性和监控能力。

  12. 客户满意度

    • 交货期(Delivery):产品交付给客户的速度和准时性。

    • 客户反馈响应时间:对客户反馈的处理速度。

46页PPT,篇幅有限仅展示部分。

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片


(一)电装行业智能制造

集团的信息化规划项目旨在通过深度诊断和转型蓝图设计,提升集团在化工、物流、金融等领域的管控与服务能力。项目包括业务架构、应用架构、数据架构、技术架构以及信息化管控体系的设计,目标是实现集团总部的资本化运作和产业板块的集约化发展。通过构建计划预算、投资管理体系、风险内控、运营分析、财务服务、人资服务、协同办公及信息技术服务体系,集团将优化资源配置,提升管理效率和市场响应速度。同时,项目还涉及财务共享服务中心、人力资源共享服务中心的建设,以及信息技术服务体系的完善,确保信息化建设与集团战略目标相匹配,支持集团的长远发展。

(二)集团信息化规划核心内容

传化集团的信息化规划项目是一项全面的战略计划,旨在通过信息化手段提升集团的整体运营效率和管理能力。以下是该项目核心内容的详细介绍:

  1. 业务架构设计:明确集团的业务流程和管理要求,包括战略目标、管理目标和发展挑战,以及如何通过信息化手段实现这些目标。

  2. 应用架构设计:构建应用系统架构蓝图,包括对现有系统的替代、优化和新建,以支持集团的业务需求和管理决策。

  3. 数据架构设计:确立数据管理和数据治理的框架,确保数据的一致性、准确性和可用性,支持业务决策和运营分析。

  4. 技术架构设计:规划技术平台和基础设施,包括数据中心、网络、安全等,以支撑应用架构和数据架构的实施。

  5. 信息化管控体系设计:建立信息化管理体系和流程,包括制度、标准、组织结构和人员职责,确保信息化项目的顺利实施和运行。

  6. 计划预算体系:通过构建计划预算管理系统,实现预算编制、审批、下达、支付管理等全过程控制,加强战略指导和目标分解能力。

  7. 投资管理体系:建立健全的投资项目库,实现投资信息收集、年度投资计划、投资决策、项目执行和后评价的全生命周期管理。

  8. 风险内控体系:构建风险管理和审计监察体系,通过信息化手段固化流程,实现风险控制点的设置和风险分析机制的建立。

  9. 运营分析体系:建立决策分析平台,整合产业运营和发展信息,提供数据分析和管理决策支持。

  10. 财务服务体系:基于财务管理框架,实现财务组织的集中管控,包括会计核算、资金管理、预算管理和资产管理。

  11. 人资服务体系:建立人力资源管理信息技术体系,提高人力资源管理效率,包括招聘、培训、绩效考核等。

  12. 协同办公及综合服务体系:提供统一的办公环境和业务管理平台,包括企业门户、知识管理、邮件和统一通信系统等。

  13. 信息技术服务体系:实现IT服务管理的流程化、服务化和可视化,提升运维管理效率。

  14. 共享服务中心建设:设计和建设财务和人力资源的共享服务中心,实现服务的标准化和集约化管理。

  15. 信息化项目建设路线图和预算:明确信息化建设的阶段性目标、实施计划和预算安排,确保项目的有序推进。

整个信息化规划项目围绕提升集团管控能力、优化资源配置、加强风险管理、提高决策效率等核心目标,通过综合运用信息技术,推动集团业务的创新和发展。

167页PPT,篇幅有限仅展示部分。

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片


摘要:工业互联网+智能制造解决方案是一种集成了先进的信息技术和制造技术的综合性解决方案。它通过数字化、网络化和智能化的手段,实现生产过程的透明化、管理的智能化和运营的优化。该方案涵盖了MES(制造执行系统)、WMS(仓库管理系统)和ERP(企业资源规划)等多个系统,以提高生产效率、降低成本、增强供应链协同,并实现个性化定制服务。

  • 基于工业互联网的智能制造
  • 智能制造在研发、计划、生产、质量中的应用
  • 智能生产、智能供应链与ERP间的集成关系

(一)基于工业互联网智能制造

基于工业互联网的智能制造是一种创新的制造模式,它利用云计算、物联网、大数据分析、人工智能等技术,将传统制造业与现代信息技术深度融合,以实现制造过程的智能化、自动化和网络化。以下是智能制造的一些关键特点:

  1. 数字化:通过数字化技术,将制造过程中的各种数据转化为数字信息,便于收集、存储和分析。

  2. 网络化:利用物联网技术,实现设备、机器和系统的互联互通,使生产设备能够相互协作,共享信息。

  3. 智能化:应用人工智能和机器学习算法,使制造系统能够自主优化生产流程,预测和响应生产中的问题。

  4. 定制化:通过灵活的生产线和智能系统,实现个性化定制和小批量生产,满足客户多样化的需求。

  5. 供应链协同:通过工业互联网平台,实现供应链上下游的信息共享和业务协同,提高供应链的响应速度和效率。

  6. 智能分析:利用大数据分析技术,对生产数据进行深入分析,为决策提供科学依据。

  7. 云服务:通过云平台提供各种服务,如云设计、云制造、云服务等,降低企业运营成本,提高资源利用率。

  8. 安全与维护:结合先进的安全技术和预测性维护,确保生产系统的稳定运行和数据安全。

  9. 环境友好:智能制造注重生产过程中的能源管理和环境保护,致力于实现绿色制造和可持续发展。

  10. 人机协作:智能制造环境下,人与机器协同工作,机器承担重复性和高强度的工作,而人则负责创造性和决策性的任务。

(二)智能制造在研发、计划、生产、质量中的应用

智能设计、智能计划、智能供应、智能生产、智能质量、智能成本管理系统是智能制造的关键组成部分,它们共同构成了一个高度集成的解决方案,以提高制造过程的效率、灵活性和响应能力。以下是对这些系统的详细介绍:

2.1 智能设计管理

智能设计管理系统(如PLM,Product Lifecycle Management)利用数字化工具来支持产品从概念到市场的全过程。它包括:

  • 标准化工作:确保设计过程中使用的标准件、原材料等的一致性和复用性。

  • 项目管理:通过WBS(Work Breakdown Structure)等方法实现研发过程的标准化。

  • 数据驱动设计:利用数据分析来优化设计,减少迭代,加快产品上市时间。

2.2 智能计划管理

智能计划系统(如APS,Advanced Planning and Scheduling)通过高级算法来优化生产计划和调度:

  • 多层次应用:从简单的批次计划到复杂的物料需求计划(MRP)和有限产能排程。

  • 提高计划可执行性:通过系统综合考虑各种生产要素,建立科学合理的计划。

  • 双模式排产:结合不同的排产算法,如最早开工算法和按班折返算法,以适应不同的生产需求。

2.3 智能供应管理

智能供应管理系统(如WMS,Warehouse Management System)通过以下方式优化库存和物流:

  • 仓库管理:细化到库位和操作级别的管理,提高仓库运营效率。

  • 条码和RFID技术:实现货品的精确追踪和管理。

  • 多层次功能架构:基于独立数据平台,实现复杂的仓储策略和流程自动化。

2.4 智能生产管理

制造执行系统(MES)是智能生产管理的核心,它包括:

  • 生产过程管理:实时监控生产进度,确保生产计划的执行。

  • 工艺管理:优化生产流程,提高生产效率和产品质量。

  • 物料管理:精确控制物料的使用和流转,减少浪费。

  • 质量追溯:记录生产数据,实现产品质量的全程追溯。

2.5 智能质量管理

智能质量管理系统通过以下方式确保产品质量:

  • 质量检验:自动化的质量检测流程,及时发现和解决质量问题。

  • 质量追溯:记录详细的生产数据,便于质量问题的追踪和分析。

  • 质量保证:建立和维护质量管理体系,持续改进产品质量。

2.6 智能成本管理

智能成本管理系统通过集成MES、WMS和ERP等系统,实现成本的精确控制:

  • 成本核算:实时跟踪生产成本,优化成本结构。

  • 预算管理:与财务系统集成,实现预算的实时监控和控制。
  • 商业智能:利用数据分析提供成本优化的决策支持

(三)智能生产、智能供应链与ERP间的集成关系

ERP(企业资源规划)、WMS(仓库管理系统)、MES(制造执行系统)是现代制造业中三个关键的信息系统,它们之间的集成对于实现智能制造至关重要。以下是它们之间的业务、数据和应用集成的介绍:

3.1 业务集成

  1. 销售与订单管理:ERP系统中的销售订单直接传递到MES和WMS,启动生产和物流活动。

  2. 物料需求计划:ERP中的MRP(物料需求计划)模块生成物料需求,这些信息传递给MES进行生产计划和WMS进行库存管理。

  3. 库存管理:WMS管理实际库存,其数据反馈到ERP系统中,以确保库存数据的准确性和及时更新。

  4. 生产调度:MES根据ERP中的生产计划和物料信息,制定详细的生产调度和作业指令。

  5. 质量控制:MES中的质量管理功能与ERP集成,确保质量数据的一致性和可追溯性。

3.2 数据集成

  1. 物料主数据:ERP系统中的物料信息(如物料编号、描述、BOM等)同步到MES和WMS。

  2. 订单数据:ERP系统中的订单信息(如客户订单、交货日期等)同步到MES和WMS,以指导生产和发货。

  3. 库存数据:WMS中的库存水平和库存移动信息同步回ERP系统,以支持库存评估和财务报告。

  4. 生产数据:MES中的生产进度、产量、停机时间等数据反馈到ERP系统,用于生产分析和成本计算。

  5. 质量数据:MES收集的质量检测数据同步到ERP系统,用于质量报告和改进。

3.3 应用集成

  1. 用户界面集成:提供一个统一的用户界面,允许用户在ERP、WMS和MES之间无缝切换。

  2. 工作流程集成:确保ERP、WMS和MES之间的工作流程协调一致,如订单处理、物料采购、生产调度等。

  3. 报告和分析集成:集成三个系统的数据,提供综合的业务报告和分析,以支持决策制定。

  4. 异常管理:MES中的生产异常和质量问题能够及时反馈到ERP系统,触发相应的业务流程。

  5. 系统集成平台:使用中间件或集成平台,如OPEN API、Web服务等,实现ERP、WMS和MES之间的数据交换和应用集成。


图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

相关学习参考: