精华内容
下载资源
问答
  • 本教程简单介绍了一个企业应用案例 Tanggula,并介绍了采用协同应用生命周期管理平台 Rational Team Concert 去配置和完成协同开发的基础以实现应用案例的基本要求:设置和创建项目、团队和过程;计划一个迭代(包括...

    本教程简单介绍了一个企业应用案例 Tanggula,并介绍了采用协同应用生命周期管理平台 Rational Team Concert 去配置和完成协同开发的基础以实现应用案例的基本要求:设置和创建项目、团队和过程;计划一个迭代(包括了迭代计划与工作项目的创建)。

    在本教程中

    内容介绍

    本教程简单介绍了一个企业应用案例 Tanggula,并介绍了采用协同应用生命周期管理 Rational Team Concert去配置和完成协同开发的基础以实现应用案例的基本要求:



    本文转自IBM Developerworks中国

          请点击此处查看全文

     
    展开全文
  • 使用Mahout实现协同过滤 spark

    千次阅读 2016-03-10 16:05:00
    Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎。Taste既实现了最基本的基 于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的...

    Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎。Taste既实现了最基本的基 于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。同时,Taste不仅仅只适用于Java应用程序,它 可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑。Taste的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。

    接口相关介绍

    Taste主要包括以下几个接口:

    • DataModel 是用户喜好信息的抽象接口,它的具体实现支持从任意类型的数据源抽取用户喜好信息。Taste 默认提供 JDBCDataModel 和 FileDataModel,分别支持从数据库和文件中读取用户的喜好信息。
    • UserSimilarityItemSimilarity 。UserSimilarity 用于定义两个用户间的相似度,它是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的“邻居”,这里我们将与当前用户口味相似的用户称为他的邻居。ItemSimilarity 类似的,计算内容之间的相似度。
    • UserNeighborhood 用于基于用户相似度的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的邻居用户的方式产生的。UserNeighborhood 定义了确定邻居用户的方法,具体实现一般是基于 UserSimilarity 计算得到的。
    • Recommender 是推荐引擎的抽象接口,Taste 中的核心组件。程序中,为它提供一个 DataModel,它可以计算出对不同用户的推荐内容。实际应用中,主要使用它的实现类 GenericUserBasedRecommender 或者 GenericItemBasedRecommender,分别实现基于用户相似度的推荐引擎或者基于内容的推荐引擎。
    • RecommenderEvaluator :评分器。
    • RecommenderIRStatsEvaluator :搜集推荐性能相关的指标,包括准确率、召回率等等。

    目前,Mahout为DataModel提供了以下几种实现:

    • org.apache.mahout.cf.taste.impl.model.GenericDataModel
    • org.apache.mahout.cf.taste.impl.model.GenericBooleanPrefDataModel
    • org.apache.mahout.cf.taste.impl.model.PlusAnonymousUserDataModel
    • org.apache.mahout.cf.taste.impl.model.file.FileDataModel
    • org.apache.mahout.cf.taste.impl.model.hbase.HBaseDataModel
    • org.apache.mahout.cf.taste.impl.model.cassandra.CassandraDataModel
    • org.apache.mahout.cf.taste.impl.model.mongodb.MongoDBDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.SQL92JDBCDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.MySQLJDBCDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.PostgreSQLJDBCDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.GenericJDBCDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.SQL92BooleanPrefJDBCDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.MySQLBooleanPrefJDBCDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.PostgreBooleanPrefSQLJDBCDataModel
    • org.apache.mahout.cf.taste.impl.model.jdbc.ReloadFromJDBCDataModel

    从类名上就可以大概猜出来每个DataModel的用途,奇怪的是竟然没有HDFS的DataModel,有人实现了一个,请参考 MAHOUT-1579

    UserSimilarityItemSimilarity 相似度实现有以下几种:

    • CityBlockSimilarity :基于Manhattan距离相似度
    • EuclideanDistanceSimilarity :基于欧几里德距离计算相似度
    • LogLikelihoodSimilarity :基于对数似然比的相似度
    • PearsonCorrelationSimilarity :基于皮尔逊相关系数计算相似度
    • SpearmanCorrelationSimilarity :基于皮尔斯曼相关系数相似度
    • TanimotoCoefficientSimilarity :基于谷本系数计算相似度
    • UncenteredCosineSimilarity :计算 Cosine 相似度

    以上相似度的说明,请参考Mahout推荐引擎介绍。

    UserNeighborhood 主要实现有两种:

    • NearestNUserNeighborhood:对每个用户取固定数量N个最近邻居
    • ThresholdUserNeighborhood:对每个用户基于一定的限制,取落在相似度限制以内的所有用户为邻居

    Recommender分为以下几种实现:

    • GenericUserBasedRecommender:基于用户的推荐引擎
    • GenericBooleanPrefUserBasedRecommender:基于用户的无偏好值推荐引擎
    • GenericItemBasedRecommender:基于物品的推荐引擎
    • GenericBooleanPrefItemBasedRecommender:基于物品的无偏好值推荐引擎

    RecommenderEvaluator有以下几种实现:

    • AverageAbsoluteDifferenceRecommenderEvaluator :计算平均差值
    • RMSRecommenderEvaluator :计算均方根差

    RecommenderIRStatsEvaluator的实现类是GenericRecommenderIRStatsEvaluator。

    单机运行

    首先,需要在maven中加入对mahout的依赖:

    <dependency>
    <groupId>org.apache.mahout</groupId>
    <artifactId>mahout-core</artifactId>
    <version>0.9</version>
    </dependency>
    <dependency>
    <groupId>org.apache.mahout</groupId>
    <artifactId>mahout-integration</artifactId>
    <version>0.9</version>
    </dependency>
    <dependency>
    <groupId>org.apache.mahout</groupId>
    <artifactId>mahout-math</artifactId>
    <version>0.9</version>
    </dependency>
    <dependency>
    <groupId>org.apache.mahout</groupId>
    <artifactId>mahout-examples</artifactId>
    <version>0.9</version>
    </dependency>
    
    

    基于用户的推荐,以FileDataModel为例:

    File modelFile modelFile = new File("intro.csv");
    
    DataModel model = new FileDataModel(modelFile);
    
    //用户相似度,使用基于皮尔逊相关系数计算相似度
    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    
    //选择邻居用户,使用NearestNUserNeighborhood实现UserNeighborhood接口,选择邻近的4个用户
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(4, similarity, model);
    
    Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
    
    //给用户1推荐4个物品
    List<RecommendedItem> recommendations = recommender.recommend(1, 4);
    
    for (RecommendedItem recommendation : recommendations) {
        System.out.println(recommendation);
    }
    

    注意:

    FileDataModel要求输入文件中的字段分隔符为逗号或者制表符,如果你想使用其他分隔符,你可以扩展一个FileDataModel的实现,例如,mahout中已经提供了一个解析MoiveLens的数据集(分隔符为 :: )的实现GroupLensDataModel。

    对相同用户重复获得推荐结果,我们可以改用CachingRecommender来包装GenericUserBasedRecommender对象,将推荐结果缓存起来:

    Recommender cachingRecommender = new CachingRecommender(recommender);
    

    上面代码可以在main方法中直接运行,然后,我们可以获取推荐模型的评分:

    //使用平均绝对差值获得评分
    RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    // 用RecommenderBuilder构建推荐引擎
    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
    @Override
    public Recommender buildRecommender(DataModel model) throws TasteException {
    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(4, similarity, model);
    return new GenericUserBasedRecommender(model, neighborhood, similarity);
    }
    };
    // Use 70% of the data to train; test using the other 30%.
    double score = evaluator.evaluate(recommenderBuilder, null, model, 0.7, 1.0);
    System.out.println(score);
    
    

    接下来,可以获取推荐结果的查准率和召回率:

    RecommenderIRStatsEvaluator statsEvaluator = new GenericRecommenderIRStatsEvaluator();
    // Build the same recommender for testing that we did last time:
    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
    @Override
    public Recommender buildRecommender(DataModel model) throws TasteException {
    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(4, similarity, model);
    return new GenericUserBasedRecommender(model, neighborhood, similarity);
    }
    };
    // 计算推荐4个结果时的查准率和召回率
    IRStatistics stats = statsEvaluator.evaluate(recommenderBuilder,null, model, null, 4,
    GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,1.0);
    System.out.println(stats.getPrecision());
    System.out.println(stats.getRecall());
    
    

    如果是基于物品的推荐,代码大体相似,只是没有了UserNeighborhood,然后将上面代码中的User换成Item即可,完整代码如下:

    File modelFile modelFile = new File("intro.csv");
    DataModel model = new FileDataModel(new File(file));
    // Build the same recommender for testing that we did last time:
    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
    ItemSimilarity similarity = new PearsonCorrelationSimilarity(model);
    return new GenericItemBasedRecommender(model, similarity);
        }
    };
    //获取推荐结果
    List<RecommendedItem> recommendations = recommenderBuilder.buildRecommender(model).recommend(1, 4);
    for (RecommendedItem recommendation : recommendations) {
        System.out.println(recommendation);
    }
    //计算评分
    RecommenderEvaluator evaluator =
    new AverageAbsoluteDifferenceRecommenderEvaluator();
    // Use 70% of the data to train; test using the other 30%.
    double score = evaluator.evaluate(recommenderBuilder, null, model, 0.7, 1.0);
    System.out.println(score);
    //计算查全率和查准率
    RecommenderIRStatsEvaluator statsEvaluator = new GenericRecommenderIRStatsEvaluator();
    // Evaluate precision and recall "at 2":
    IRStatistics stats = statsEvaluator.evaluate(recommenderBuilder,
    null, model, null, 4,
    GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,
    1.0);
    System.out.println(stats.getPrecision());
    System.out.println(stats.getRecall());
    
    

    在Spark中运行

    在Spark中运行,需要将Mahout相关的jar添加到Spark的classpath中,修改/etc/spark/conf/spark-env.sh,添加下面两行代码:

    SPARK_DIST_CLASSPATH="$SPARK_DIST_CLASSPATH:/usr/lib/mahout/lib/*"
    SPARK_DIST_CLASSPATH="$SPARK_DIST_CLASSPATH:/usr/lib/mahout/*"
    

    然后,以本地模式在spark-shell中运行下面代码交互测试:

    //注意:这里是本地目录
    val model = new FileDataModel(new File("intro.csv"))
    
    val evaluator = new RMSRecommenderEvaluator()
    val recommenderBuilder = new RecommenderBuilder {
      override def buildRecommender(dataModel: DataModel): Recommender = {
        val similarity = new LogLikelihoodSimilarity(dataModel)
        new GenericItemBasedRecommender(dataModel, similarity)
      }
    }
    
    val score = evaluator.evaluate(recommenderBuilder, null, model, 0.95, 0.05)
    println(s"Score=$score")
    
    val recommender=recommenderBuilder.buildRecommender(model)
    val users=trainingRatings.map(_.user).distinct().take(20)
    
    import scala.collection.JavaConversions._
    
    val result=users.par.map{user=>
      user+","+recommender.recommend(user,40).map(_.getItemID).mkString(",")
    }
    

    https://github.com/sujitpal/mia-scala-examples 上面有一个评估基于物品或是用户的各种相似度下的评分的类,叫做 RecommenderEvaluator,供大家学习参考。

    分布式运行

    Mahout提供了 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob 类以MapReduce的方式来实现基于物品的协同过滤,查看该类的使用说明:

    $ hadoop jar /usr/lib/mahout/mahout-examples-0.9-cdh5.4.0-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob
    15/06/10 16:19:34 ERROR common.AbstractJob: Missing required option --similarityClassname
    Missing required option --similarityClassname
    Usage:
     [--input <input> --output <output> --numRecommendations <numRecommendations>
    --usersFile <usersFile> --itemsFile <itemsFile> --filterFile <filterFile>
    --booleanData <booleanData> --maxPrefsPerUser <maxPrefsPerUser>
    --minPrefsPerUser <minPrefsPerUser> --maxSimilaritiesPerItem
    <maxSimilaritiesPerItem> --maxPrefsInItemSimilarity <maxPrefsInItemSimilarity>
    --similarityClassname <similarityClassname> --threshold <threshold>
    --outputPathForSimilarityMatrix <outputPathForSimilarityMatrix> --randomSeed
    <randomSeed> --sequencefileOutput --help --tempDir <tempDir> --startPhase
    <startPhase> --endPhase <endPhase>]
    --similarityClassname (-s) similarityClassname    Name of distributed
    similarity measures class to
    instantiate, alternatively
    use one of the predefined
    similarities
    ([SIMILARITY_COOCCURRENCE,
    SIMILARITY_LOGLIKELIHOOD,
    SIMILARITY_TANIMOTO_COEFFICIEN
    T, SIMILARITY_CITY_BLOCK,
    SIMILARITY_COSINE,
    SIMILARITY_PEARSON_CORRELATION
    ,
    SIMILARITY_EUCLIDEAN_DISTANCE]
    )
    
    

    可见,该类可以接收的命令行参数如下:

    • --input(path) : 存储用户偏好数据的目录,该目录下可以包含一个或多个存储用户偏好数据的文本文件;
    • --output(path) : 结算结果的输出目录
    • --numRecommendations (integer) : 为每个用户推荐的item数量,默认为10
    • --usersFile (path) : 指定一个包含了一个或多个存储userID的文件路径,仅为该路径下所有文件包含的userID做推荐计算 (该选项可选)
    • --itemsFile (path) : 指定一个包含了一个或多个存储itemID的文件路径,仅为该路径下所有文件包含的itemID做推荐计算 (该选项可选)
    • --filterFile (path) : 指定一个路径,该路径下的文件包含了 [userID,itemID] 值对,userID和itemID用逗号分隔。计算结果将不会为user推荐 [userID,itemID] 值对中包含的item (该选项可选)
    • --booleanData (boolean) : 如果输入数据不包含偏好数值,则将该参数设置为true,默认为false
    • --maxPrefsPerUser (integer) : 在最后计算推荐结果的阶段,针对每一个user使用的偏好数据的最大数量,默认为10
    • --minPrefsPerUser (integer) : 在相似度计算中,忽略所有偏好数据量少于该值的用户,默认为1
    • --maxSimilaritiesPerItem (integer) : 针对每个item的相似度最大值,默认为100
    • --maxPrefsPerUserInItemSimilarity (integer) : 在item相似度计算阶段,针对每个用户考虑的偏好数据最大数量,默认为1000
    • --similarityClassname (classname) : 向量相似度计算类
    • outputPathForSimilarityMatrix :SimilarityMatrix输出目录
    • --randomSeed :随机种子 -- sequencefileOutput :序列文件输出路径
    • --tempDir (path) : 存储临时文件的目录,默认为当前用户的home目录下的temp目录
    • --startPhase
    • --endPhase
    • --threshold (double) : 忽略相似度低于该阀值的item对

    一个例子如下,使用SIMILARITY_LOGLIKELIHOOD相似度推荐物品:

    $ hadoop jar /usr/lib/mahout/mahout-examples-0.9-cdh5.4.0-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob --input /tmp/mahout/part-00000 --output /tmp/mahout-out  -s SIMILARITY_LOGLIKELIHOOD
    

    上面命令运行完成之后,会在当前用户的hdfs主目录生成temp目录,该目录可由 --tempDir (path) 参数设置:

    $ hadoop fs -ls temp
    Found 10 items
    -rw-r--r--   3 root hadoop          7 2015-06-10 14:42 temp/maxValues.bin
    -rw-r--r--   3 root hadoop    5522717 2015-06-10 14:42 temp/norms.bin
    drwxr-xr-x   - root hadoop          0 2015-06-10 14:41 temp/notUsed
    -rw-r--r--   3 root hadoop          7 2015-06-10 14:42 temp/numNonZeroEntries.bin
    -rw-r--r--   3 root hadoop    3452222 2015-06-10 14:41 temp/observationsPerColumn.bin
    drwxr-xr-x   - root hadoop          0 2015-06-10 14:47 temp/pairwiseSimilarity
    drwxr-xr-x   - root hadoop          0 2015-06-10 14:52 temp/partialMultiply
    drwxr-xr-x   - root hadoop          0 2015-06-10 14:39 temp/preparePreferenceMatrix
    drwxr-xr-x   - root hadoop          0 2015-06-10 14:50 temp/similarityMatrix
    drwxr-xr-x   - root hadoop          0 2015-06-10 14:42 temp/weights
    

    观察yarn的管理界面,该命令会生成9个任务,任务名称依次是:

    • PreparePreferenceMatrixJob-ItemIDIndexMapper-Reducer
    • PreparePreferenceMatrixJob-ToItemPrefsMapper-Reducer
    • PreparePreferenceMatrixJob-ToItemVectorsMapper-Reducer
    • RowSimilarityJob-CountObservationsMapper-Reducer
    • RowSimilarityJob-VectorNormMapper-Reducer
    • RowSimilarityJob-CooccurrencesMapper-Reducer
    • RowSimilarityJob-UnsymmetrifyMapper-Reducer
    • partialMultiply
    • RecommenderJob-PartialMultiplyMapper-Reducer

    从任务名称,大概可以知道每个任务在做什么,如果你的输入参数不一样,生成的任务数可能不一样,这个需要测试一下才能确认。

    在hdfs上查看输出的结果:

    843 [10709679:4.8334665,8389878:4.833426,9133835:4.7503786,10366169:4.7503185,9007487:4.750272,8149253:4.7501993,10366165:4.750115,9780049:4.750108,8581254:4.750071,10456307:4.7500467]
    6253    [10117445:3.0375953,10340299:3.0340924,8321090:3.0340924,10086615:3.032164,10436801:3.0187714,9668385:3.0141575,8502110:3.013954,10476325:3.0074399,10318667:3.0004222,8320987:3.0003839]
    

    使用Java API方式执行:

    StringBuilder sb = new StringBuilder();
    sb.append("--input ").append(inPath);
    sb.append(" --output ").append(outPath);
    sb.append(" --tempDir ").append(tmpPath);
    sb.append(" --booleanData true");
    sb.append(" --similarityClassname 
    org.apache.mahout.math.hadoop.similarity.
    cooccurrence.measures.EuclideanDistanceSimilarity");
    args = sb.toString().split(" ");
    
    JobConf jobConf = new JobConf(conf);
    jobConf.setJobName("MahoutTest");
    
    RecommenderJob job = new RecommenderJob();
    job.setConf(conf);
    job.run(args);
    

    在Scala或者Spark中,可以以Java API或者命令方式运行,最后还可以通过Spark来处理推荐的结果,例如:过滤、去重、补足数据,这部分内容不做介绍。

     

    http://www.tuicool.com/articles/FzmQziz

    展开全文
  • 从德国的“工业4.0”到“中国制造2025”,世界经济舞台上...而在智能制造时代,消费者可以直接给汽车制造商下单,自主挑选外观颜色、发动机、音响、轮胎等几乎所有配置,柔性生产,最大程度实现个性化定制。且生产制...

    从德国的“工业4.0”到“中国制造2025”,世界经济舞台上的几大玩家正在制造业这一主战场,掀起没有硝烟的“智能化”升维战。

     

    “智能制造”应该如何理解?以传统汽车制造业为例,消费者去4S店购买汽车,可选范围往往是批量生产下的“常规菜单”,选择有限。而在智能制造时代,消费者可以直接给汽车制造商下单,自主挑选外观颜色、发动机、音响、轮胎等几乎所有配置,柔性生产,最大程度实现个性化定制。且生产制造由智能机器和人类专家共同操作,过程中融入分析、推理、判断、构思和决策等智能化活动。不仅如此,整个制造过程并非由一家企业独自完成,而是由产业链上下游多个企业共同协作。

     

    事实上,随着制造业分工的逐步精细化,协同生产已成为主流。很多产品生产者已不再是单个企业,而是众多企业所构成的“供应链体系”。为完成某项生产经营活动,企业不仅需要保证内部生产线,如生产决策、车间运转、库存的高效畅通,还需要与外部相配合,如上游原材料、零部件供应商,下游经销商、物流、消费者等,各参与方之间的联系越来越紧密、频繁。当参与方之间没有形成高效协同机制时,便会严重影响企业生产效率。例如,供应链各环节成员在做采购、生产决策之前都需要对需求进行预测,不准确的预测会导致库存增加、缺货严重及客户满意度下降。因此“链主”企业一般会与上下游企业分享包括预测、订单、库存在内的信息,提高预测准确性,同时与上下游企业进行协同计划和补货。严密的供应链协同体系对提高企业生产效率、产品质量、顾客满意度等有着重要影响。

     

    随着制造业向智能制造升级,“供应链协同”成为制造企业的核心竞争力之一,更是关乎企业能否破题智能制造的关键所在

     

    优化供应链协同,企业通常可以从三个方面入手:组织层面,又分为内外部。外部而言,需要实现供应链上下游企业间物流、信息流、资金流的高效畅通,保持开放共赢心态,建立共识,彼此信任。内部,由于各部门责任和立场不尽相同,经常会发生内部受阻的情况。实现组织内协同,需要建立良好的沟通机制,自上而下同步战略,自下而上汇报信息。同时明确各部门职责边界,各司其职,提高组织效率;业务流程层面,供应链涉及的流程众多,如商品建档、采购入库、退货、财务结算等,流程之间相互依存。实现业务流程协同需要确保流程设计的统一、通用、开放性,以提高流程对新业务、新场景以及三方业务的兼容性;信息系统层面,信息系统是实现供应链协同的基石,没有信息系统支撑的供应链协同无法建立。智能制造时代,它需要服务于更智能的生产、管理、销售、售后、生态产业全链条,这对供应链信息化协同提出了更高要求:

     

    1. 更精准掌握供应链运作情况,实现“透明化”管控。这需要企业打通不同IT信息系统之间的孤岛,建立高效的信息交互管道。供应链上下游参与方众多,涉及企业内外部大量IT系统,如ERP(企业资源计划系统)、MES(制造执行系统)、SCM(供应链管理系统)等。业务交互需要通过系统之间的接口来实现,但大部分企业内部IT系统缺乏规范化统一集成和透明化管控。企业往往面临接口不规范、数量不详、运行状态不清晰等缺乏管控的问题,数据交互、连接、同步速度慢、稳定性差,集成效率低。

     

    2. 提高业务响应速度。供应链各环节业务繁杂交错,需要多方沟通配合时,原有沟通方式(如电话、邮件等)效率低,导致上下游需求响应速度慢,企业制造流程慢、耗时长,严重影响企业的业务响应速度。

     

    3. 节省IT投入,降低对原厂依赖。企业IT服务采购费用高,每年涉及对系统升级和接口开发,都需要向供应商采购IT服务。随着人员工资提升,IT服务采购费用也逐年增加。同时,由于这些IT系统往往由不同厂商提供,接口标准不统一、复用性差,企业对原厂依赖性极强。企业内部IT人员需要重复开发,压力大,任务重,亟需降低供应链服务成本和管理便捷化的第三方服务。

    作为传统制造升级智能制造的关键一环,企业需要对其IT系统进行全局性升级,改变集成模式和交付模式,更敏捷、高效地服务于传统制造到智能制造的转型升级。

     

     

    天正电气以“让电力能源更安全、更高效、更智慧地造福人类”为宗旨,近年来紧跟制造业趋势,全力转型智能制造。“供应链协同”是天正电气智能制造主干项目借助白山云科技“数聚蜂巢”API中台,在短时间内搭建起一个轻量化、具有前瞻性的集成平台,实现对IT信息系统接口统一规范管理,极大改善了天正电气供应链协作效率。

     

    作为一个轻量级数据应用混合集成平台,数聚蜂巢API中台基于API化解耦、微服务化、能力化的三层架构设计理念,依托API管理平台集成编排平台构成的底层基础,有效促成企业系统解耦、重组业务逻辑与流程,方便快速地实现数据、应用、服务间的灵活流转与敏捷集成。企业由此具备更强的IT输出能力,提升资源复用性与交付效率,助力业务敏捷创新。

     

    基于API三层架构的数聚蜂巢

     

    使用数聚蜂巢API中台之前,天正电气在系统集成过程中,接口方式仅限于内部系统使用,且方式单一,第三方系统接入困难;内部一些有价值、复用性强、可以带来收益的数据,亟需对外提供服务的渠道;基于老系统架构的数据同步、数据交换效率低,易出错,对IT人员造成很大压力,成为经营效率提升和业务创新的障碍;随着运行时间增长,系统对人的依赖越来越强,若相应技术人员离职,则会面临业务无人懂、不敢动,对企业造成困扰。

     

    数聚蜂巢API中台的使用,成功为天正电气供应链协同项目的建设提供了新思路,打开了不一样的局面。

     

    1. 集成编排,打通核心业务系统,实现供应链各环节纵向一体化。数聚蜂巢首先通过构造标准API接口的方式打通天正电气供应链条上各系统,包括APS(进阶生产规划及排程系统)、SRM(供应商管理系统)、ERP(企业资源计划系统)、BPM(业务流程管理系统)、CRM(客户全生命周期智能化管理系统)等,提高了系统间数据交互、对接、同步的效率,百万数据量同步耗时从过去1小时以上提高到7分钟左右,同时降低对系统原厂的依赖,保证接口使用稳定持续。

     

    依托数聚蜂巢集成编排平台,将解耦后的IT能力根据新的业务逻辑进行编排重组。通过资源复用,实现敏捷开发,交付效率加快,可以快速满足新业务需求,缩短制造流程时间,推进智能制造深入开展。

     

    2. API全生命周期管理,实时监控供应链中核心信息化资产的运行情况。API全生命周期管理提供API设计、创建、测试、部署、集成、管理、运维、下线等一站式服务。通过API全生命周期管理,实时掌握数据使用情况,洞察企业内资源价值,助力企业全方位构建管理API资产。

     

    API管理平台上,所有接口的运行状态全景展示,企业可对接口调用情况、调用频次、健康状况及日志等信息随时查看,随时管理。目前通过API管理平台统一构建和管理的API已超过190个,明显提升了天正电气供应链各方沟通协作效率。

     

    访问量数据统计信息

     

     

    此外,数聚蜂巢提供API Portal用于统一展示API资源,企业可将自主构建的业务服务封装为API统一发布到门户上。API Portal支持API调用申请、审批、授权等操作,并且,API管理者还可根据实际情况对API制定相应访问策略;API消费者在门户上申请自己需要访问的资源,对外提供服务。通过API Portal可方便快速构建以天正电气为核心的产业生态体系。

     

    同时,对API进行权限管控,实现业务隔离。针对API能力、API来源、API归属和主要服务对象划分不同的业务隔离等级。根据使用者角色和身份的不同,赋予不同接口访问权限。方便管理的同时,实现API对指定使用者的定向开放,同时预防错误调用接口,更好实现协同。

     

    3. 开放能力,助力营销智能化,实现数字化业务创新。智能营销也是企业智能制造的核心命题,“企业信息化,信息条码化”在国家“物联网十二五规划”中有明确体现,是实现两化融合必经之路。数聚蜂巢通过构建条码与后端调用能力API接口,服务前端出口,实现“一物一码”,终端消费者可通过扫描商品二维码获取实时信息,特别是营销类商务信息。以创新服务体验提高消费者黏性和满意度,这是天正电气向智能营销模式转变的新尝试。

     

    4. 简单易用,敏捷赋能IT人员,降低企业IT成本。天正电气对系统应用有着战略层面的全局规划,对未来创新业务场景也更希望由内部IT团队和业务人员直接对接,这不仅会大幅加快交付速度、提高沟通效率,而且交付的服务将更贴近企业需求。当后续业务变化时也能快速调整,不再受制于第三方供应商和商务谈判等不可控因素。

     

    作为一款便捷易学、可快速上手敏捷交付的系统集成和服务交付平台,数聚蜂巢恰好满足天正电气这一需求。通过一段时间的现场培训和远程技术支持,天正电气内部IT人员已熟练掌握平台使用,可自行操作,快速交付业务。截至目前,基于数聚蜂巢API中台,天正电气依靠内部IT团队已自主集成多个业务系统,构造了100多个业务相关接口服务与新应用交付,不仅大幅提高效率,还极大降低了企业IT服务采购成本。

     

    制造业升维竞争的命运之战已经打响。数聚蜂巢作为一款服务于企业数字化转型的API中台,以现代API架构风格为突破点,为企业升级智能制造提供了强劲动力。正如天正电气CIO李书育所言:“打造敏捷高效的供应链协同体系,是企业向智能制造转型的必经之途。数聚蜂巢为天正电气供应链协同项目建设提出行之有效的解决方案,为我们攻克了升级智能制造的‘第一关’。

     

    截至目前,数聚蜂巢已收获包括天正电气、万达集团、利星行机械、参天制药、新东方、中船重工、广汇汽车等在内的数十家客户,覆盖政务、制造、地产、零售、教育、医药、能源等各领域。

     

    天正电气简介

     

    浙江天正电气股份有限公司(简称“天正电气”)主要生产以低压配电及工控电器、智能仪表、电源电器、变频器、高压电器、建筑电器为主的工业电器产品,为电力、通讯、新能源、工民建、冶金、石化、机械制造等行业提供优质的低压电器产品和解决方案。在全国范围内,天正电气拥有5000多家销售网点,已为上海世博会、西气东输、京沪高铁、海磁悬浮、西昌卫星发射中心、三峡工程等国内重点工程及电力自动化、成套厂、电力部门提供产品和服务,产品畅销全国各省市,并出口到俄罗斯、东南亚等多个国家和地区。

     

     

     

    展开全文
  • 1、让每个企业单位都有自己的工作系统。 2、移动,免费开源工作系统,数据全部自己管理。 3、自定义管理应用,模块数据,权限分配。 4、单据快速提醒推送,重要通知任务及时提醒。 5、即时信息沟通交流。 6、更多的...

    演示可以参考下这里:http://www.erdangjiade.com/source/259.html

    跨平台的系统,支持APP,pc网页版,pc客户端等。 1、让每个企业单位都有自己的工作系统。 2、移动,免费开源工作系统,数据全部自己管理。 3、自定义管理应用,模块数据,权限分配。 4、单据快速提醒推送,重要通知任务及时提醒。 5、即时信息沟通交流。 6、更多的请到官网下载,包括APP,服务端,客户端等下载。

    1、完善系统安全性。 信呼协同办公系统登录界面 信呼协同办公系统后台管理 后台路径:域名/index.php?m=index 用户名与密码:admin 123456 后台页面 信呼协同办公系统

    展开全文
  • 基于物品的协同过滤算法实现图书推荐系统

    万次阅读 多人点赞 2019-09-14 21:20:24
    本文旨在利用基于物品的协同过滤算法,来实现一个图书推荐系统。 本文首先介绍了推荐系统的发展历史,及目前常用的几种推荐算法的介绍与比较,然后以基于物品的协同过滤算法为基础,详细介绍图书推荐系统的构建。在...
  • 通过办公自动化的方式,OA系统在深化企业管理,提升企业协同办公效率与市场竞争力的同时,亦是为企业节约了大量的时间成本,有效提高了企业的资源利用率,有力推动了企业的科学建设与信息管理。 OA系统通过信息门户,...
  • DZZOffice(大桌子)企业文档协同平台安装部署教程 一、DZZOffice介绍 Dzzoffice是一套开源办公套件,适用于企业、团队搭建自己的 类似“Google企业应用套件”、“微软Office365”的企业协同办公平台。套件由多个...
  • 让我们的工作和生活变得更加轻松和智能,成为众多企业越来越关注的问题,爱思华宝邮件服务器及其协同工作服务,帮助您利用碎片化的时间,让日程管理更轻松,让沟通更高效,让员工实现更多的互动,从而增加企业凝聚力...
  • 三年前,协同采购对于大多数电子企业来说还是一个比较陌生的名词,一些企业甚至以为“协同采购”就是做个网站将采购申请单放到网上,跟手工作业的...只有实现企业内部各部门之间协同及与外部供应商之间的采购协同企业
  • 车路协同也叫做V2X技术,车辆对车辆(V2V)、车辆对基础设施(V2I)、车辆对云(V2N)和车辆对行人(V2P)统称为V2X,是未来智能交通ITS基础性关键技术之一。V2X的两个核心单元为智能网联车载单元(OBU)和智能网联路侧单元...
  • 企业需要一种结合边缘计算和云存储优势的混合解决方案,实现云计算和边缘计算协同作用所需的关键技术是边缘缓存。  在分布式企业中,“边缘存储”是指端点设备中的数据存储,例如笔记本电脑、移动设备、物联网设备...
  • 企业日常经营中经常会出现多个部门及人员共同服务于一个项目的情况,往往需要文件反复传输,传输过程中经常会出现文件丢失的情况,并且使传输成本增高。跨地域文档协同编辑则更难,资料不能及时共享,造成信息孤岛...
  • 一、Confluence简介Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。Confluence为...
  • 协同oa系统在当今信息时代,一直保持着快速增长的趋势,越来越多的企业看到了协同oa系统为企业做出的巨大贡献,提高企业的运营效率。可见协同oa系统正在成为资本市场的追捧对象,这标志着协同oa系统市场已经成熟,...
  • 问题概述 企业日常经营中经常会出现多个部门及人员共同服务于一个项目的情况,往往需要文件反复传输,传输过程中经常会出现文件丢失的情况,并且使传输成本增高。跨地域文档协同编辑则更难,资料不能及时共享,造成...
  • 随着企业分工的逐步细化,企业间的协同成为目前企业经营及其之间活动的主要形式。无论是生产制造型的企业还是纯服务型的企业,任何一个企业的经营活动都离不开上游的供应商与下游的经销商(或者消费者),企业之间...
  • 跨地域开发的需求其实由来已久,在IT/互联网发展的早期就已存在,只不过限于当时网络环境的因素,无法在线上有效的完成协同工作,所以没法实际开展。而随着近十年网络的快速发展,跨地域协同开发线变得可能而且...
  • 企业信息化,ERP以后是协同

    千次阅读 2011-05-26 10:55:00
    企业信息化,从来都是以搭积木的方式渐进完善,ERP推进成功后,如何进行应用软件系统和业务流进行协同发挥各种系统的最大功效,是CIO们和协同软件需要共同解决的问题。
  • 基于Activiti5工作流实战企业协同OA办公系统教程
  • 重点在Scrum计划会议、立会、反思及检讨会议如何透过JIRA及Confluence实现协同合作,进而帮助敏捷团队持续过程改进。 在线直播地址: http://show.quanshi.com/csdn/index/20140619007/login   请采用...
  • 极速5G,联通未来。...2019年12月20日,由联通云数据举办的“2019联通沃云峰会(WCS)”在北京国际会议中心召开,会议以“峯云5G”为主题,来自全国百余家知名企业及机构的近千名代表汇聚一堂,...
  • 流程管理是通过对现有工作流程的梳理和工作流程网络信息化,实现工作条理的规范性及增加现有相关工作流程的透明度,提高工作效率,完善管理体制,以破除企业传统管理模式的弊端。 ​​ 辽宁某大型生物科技类上市...
  • 作者:欧应刚 | 小编:小葱3月29日,中国协同管理软件及云服务领导厂商致远互联在北京隆重召开以“智慧协同 成就高绩效组织”为主题的新一代企业管理平台及产品发布会。此次发布的智慧协同新一代企业管理平台及产品...
  • ONLYOFFICE有多种部署方式,本文介绍docker方式的部署 官网地址:... 另外,OnlyOffice Document Server部署后,不仅可以结合dzzoffice使用,也可供企业内部其他应用调用,实现office文档的在线查看和编辑。
  • 1.2 安装“首页”应用,之后在系统设置中设置下登入后的默认首页。之后登入就不会出现开头的提示。 1.3 安装自己需要的应用 1.4 ... 下篇,讲解如何安装部署 onlyoffice 服务和设置,使Dzzoffice实现真正的文档协同
  • 协同软件

    2006-12-05 16:35:00
    C2协同平台是一种全新的、基于网络的项目协同一体化支持平台,它可以不限时间、地点、对象进行信息交流和协同工作,实现与联盟企业、合作伙伴、单个企业内部及单个客户之间的流畅高效的交流和项目全生命周期管理。...
  • Activiti工作流视频教程-基于Activiti5工作流实战企业协同OA办公系统(spring-data-jpa、uur前台组件) 一、Activiti工作流视频教程课程内容简介 在工作流方面,使用的是Activiti工作流,该工作流功能强大,开发...
  • 本文针对几款适合中小企业的OA产品在功能、价格、服务等方面进行对比,希望对选择OA协同办公产品的用户有一些帮助。
  • 了解协同软件

    2012-04-26 22:42:25
    协同软件:系包括:协同OA、HR、CRM、绩效、网络、门户、IM、邮件等,其作用主要是帮助企业实现行为管理落地的。 ERP软件系包括:财务软件、物流软件、CRM、HR、库存软件甚至各种行业性业务管理软件等,其作用主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,517
精华内容 33,006
关键字:

企业如何实现协同