`
coolme200
  • 浏览: 10447 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 调用 windows com 组件的资料整理-mssql analysis 客户端组件主要

阅读更多
微软的这个联机文档太强大了,强大到要理解他需要耗费相当大的精力。
强大到看到人就让人头痛,呵呵。
不得不这样感叹啊,如果全都看遍,估计就无敌了。
在Analysis service 编程章节中 Decision Support Object Programmer's Reference中
文档分别从Interface,Events,Objects,Enumerations,Collections这些方面比较详细的
介绍了AS中主要对象的一些接口和属性。
比如大部分对象都是继承了Collections。(语言果然是共通的。。。)
Decision Support Objects Architecture 描述了AS中所有基本对象的说明
Server,Database,DataSource,Cube,Deimension,Role,Command,Level,MeaSure,Menber等等。。。
有一点很反感的是微软把文档搞的跟蜘蛛网一样,相当繁琐。
链接来链接去的。。
附微软官方网站添加角色VB代码一段:
Const ServerName = "localhost" '"SERVER-NAME"
Const DatabaseName = "Foodmart 2000" '"OLAP-DATABASE-NAME"
Const UserList = "USERS" '"DOMAIN-NAME\USER-ID;DOMAIN-NAME\USER-ID"
Const CubeName = "HR" '"CUBE-NAME"
Sub Main()

    Dim dsoServer As DSO.Server
    Dim dsoRole As DSO.Role
    Dim dsoCubeRole As DSO.Role
    Dim dsoDB As DSO.Database
    Dim RoleName As String
    
    RoleName = "Fred"
    
    Set dsoServer = New DSO.Server
    'Connect to server.
    dsoServer.Connect ServerName
    
    'Connect to database.
    Set dsoDB = dsoServer.MDStores.Item(DatabaseName)
    
    If dsoDB.Roles.Find(RoleName) Then
       dsoDB.Roles.Remove (RoleName)
    End If
    
    Set dsoRole = dsoDB.Roles.AddNew(RoleName, sbclsRegular) ' 0) ' sbclsRegular
    
    'Set role description.
    dsoRole.Description = "Test through Visual Basic application"
        
    dsoRole.LockObject 1, "Creating Role"
        
    'Set Enforcement Location permission key.
    dsoRole.SetPermissions "EnforcementLocation", "Server"
                
    'Add group of users or single user to roles.
    
    dsoRole.UsersList = UserList
        
    Dim strAllowedSet As String
    Dim strDimensionSecurity As String
    
    'Set Permission on Dimensions Time.
    strAllowedSet = "[Time].[1997].[Q1]:[Time].[1998].[Q4]"
    
    strDimensionSecurity = "<MEMBERSECURITY IsVisible=""True"" VisualTotalsLowestLevel=""[Time].[Quarter]"">"
    strDimensionSecurity = strDimensionSecurity & "<PERMISSION Access=""Read"""
    strDimensionSecurity = strDimensionSecurity & " AllowedSet=""{" & strAllowedSet & "}"""
    strDimensionSecurity = strDimensionSecurity & " UpperLevel=""[Time].[Year]"""
    strDimensionSecurity = strDimensionSecurity & " LowerLevel=""[Time].[Quarter]"""
    strDimensionSecurity = strDimensionSecurity & " /></MEMBERSECURITY>"
        
    dsoRole.SetPermissions "Dimension:Time", strDimensionSecurity
    
    'Set Permission on Dimension Store.
    strAllowedSet = "[Store].[All Stores].[USA].[CA],[Store].[All Stores].[USA].[WA],[Store].[All Stores].[USA].[OR]"
    strDimensionSecurity = "<MEMBERSECURITY IsVisible=""True"" VisualTotalsLowestLevel=""[Store].[Store Country]"">"
    strDimensionSecurity = strDimensionSecurity & "<PERMISSION Access=""Read"""
    strDimensionSecurity = strDimensionSecurity & " AllowedSet=""{" & strAllowedSet & "}"""
    strDimensionSecurity = strDimensionSecurity & " UpperLevel=""[Store].[Store Country]"""
    strDimensionSecurity = strDimensionSecurity & " LowerLevel=""[Store].[Store State]"""
    strDimensionSecurity = strDimensionSecurity & " /></MEMBERSECURITY>"
        
    dsoRole.SetPermissions "Dimension:Store", strDimensionSecurity
        
    'Deny access to other dimensions.
    For i = 1 To dsoDB.Dimensions.Count
        If dsoDB.Dimensions(i).Name <> "Time" Then
           If dsoDB.Dimensions(i).Name <> "Store" Then
           ' Pay Type is a private dimension in the HR cube.
           ' Setting permissions at the Database Level
           ' so preface it with the name of the cube and ^.
              If dsoDB.Dimensions(i).Name <> "HR^Pay Type" Then
                 If dsoDB.Dimensions(i).Name <> "Store Type" Then
                    If dsoDB.Dimensions(i).Name <> "Measures" Then

                    ' Comment these two lines, because they contain an incomplete permission statement.
                      strDimensionSecurity = "<MEMBERSECURITY IsVisible=""False"">"
                      strDimensionSecurity = strDimensionSecurity & "</MEMBERSECURITY>"


                    ' Uncomment these lines, containing a complete permission statement, to apply the security rules.
                      'strDimensionSecurity = "<MEMBERSECURITY IsVisible=""False"">"
                      'strDimensionSecurity = strDimensionSecurity & "<PERMISSION Access=""Read"" "
                      'strDimensionSecurity = strDimensionSecurity & "UpperLevel=""[" & Trim(dsoDB.Dimensions(i).Name) & "].Levels(0)"" "
                      'strDimensionSecurity = strDimensionSecurity & "LowerLevel=""[" & Trim(dsoDB.Dimensions(i).Name) & "].Levels(0)"" "
                      'strDimensionSecurity = strDimensionSecurity & "AllowedSet=""{[" & Trim(dsoDB.Dimensions(i).Name) & "].Levels(0).Members(0)}""/> "
                      'strDimensionSecurity = strDimensionSecurity & "</MEMBERSECURITY>"

                      dsoRole.SetPermissions "Dimension:" & dsoDB.Dimensions(i).Name, strDimensionSecurity
                    End If
                 End If
              End If
           End If
        End If
    Next
    
    'Unlock the database.
    dsoRole.UnlockObject
    'Update the Role.
    dsoRole.Update
    
    Dim dsoCube As DSO.Cube
    Set dsoCube = dsoDB.MDStores(CubeName)

    dsoCube.LockObject 1, "Creating New Roles"
    Set dsoCubeRole = dsoCube.Roles.AddNew(RoleName)
          
    strDimensionSecurity = "<MEMBERSECURITY>"
    strDimensionSecurity = strDimensionSecurity & "<PERMISSION Access=""Read"""
    strDimensionSecurity = strDimensionSecurity & " AllowedSet=""{[Measures].[Org Salary],[Measures].[Count],[Measures].[Number of Employees]}"""
    strDimensionSecurity = strDimensionSecurity & " /></MEMBERSECURITY>"
    
    dsoCubeRole.SetPermissions "Dimension:Measures", strDimensionSecurity
    
    dsoCube.Update

    dsoCube.UnlockObject
    Set dsoCubeRole = Nothing
    Set dsoCube = Nothing
        
    dsoDB.Update
    dsoServer.Update
    dsoServer.UnlockAllObjects
    dsoServer.CloseServer
    Set dsoServer = Nothing
    Set dsoDB = Nothing
    Set dsoRole = Nothing
    
    MsgBox "Done"
End Sub
对之Java代码的改造(部分):
Ole32.CoInitialize();
   DispatchPtr as = new DispatchPtr("DSO.Server");
   as.invoke("Connect" , "localhost");
   DispatchPtr mds = (DispatchPtr) as.get("MDStores");
   DispatchPtr db = (DispatchPtr)mds.invoke("Item","FoodMart 2000");
   DispatchPtr roles = (DispatchPtr) db.get("Roles");
   int rnt = (Integer) roles.get("Count");
   for( int i = 1;i <= rnt;i ++ )
   {
    DispatchPtr role = (DispatchPtr) roles.invoke("Item", i);
    System.err.println("RoleName:" + role.get("Name"));
    String str = (String) role.get("Permissions","Dimension:Time");
    System.out.println(str);
    
   }
Ole32.CoUninitialize();
分享到:
评论

相关推荐

    java调用com组件实例

    Java调用COM组件是Java与非Java环境交互的一种方式,主要应用于Windows平台,因为COM(Component Object Model)是微软提出的一种面向对象的技术,主要用于构建Windows应用程序和服务。在Java中调用COM组件,可以...

    jcom java调用com+组件

    Java调用COM+组件是一种常见的跨语言交互技术,它允许Java应用程序利用已有的COM(Component Object Model)或COM+组件,这些组件通常是用其他语言如C++或Visual Basic编写的。这种技术对于整合遗留系统或者利用...

    java操纵com组件–java调用C#写的DLL文件

    Java 操纵 COM 组件并调用 C# 编写的 DLL 文件是一种跨语言交互的技术实现。在本文中,我们将深入探讨这一技术,并提供一个完整的示例,包括源代码、DLL 文件以及必要的 JAR 包和工具。我们使用的是一种名为 Jacob ...

    JavaScript+OCX+COM组件,实现网页对客户端DLL的调用

    为了扩展JavaScript的功能,可以利用OCX(ActiveX控件)和COM(组件对象模型)组件来实现与客户端DLL(动态链接库)的交互。 **OCX(ActiveX控件)**是微软提出的一种技术,它允许开发者创建可重用的、跨平台的用户...

    自己的Java远程方法调用组件

    Java远程方法调用(Remote Method Invocation,简称RMI)组件是一种关键的技术,它允许Java应用程序在不同的网络节点之间透明地调用对象的方法,仿佛这些对象都在本地进程中一样。这种技术在构建分布式系统、大型...

    java调用大漠插件的开源项目,使用njawin插件调用com组件,目前还在研究java 如何免注册调用com组件.zip

    在Java编程中,调用Windows系统的COM(Component Object Model)组件是一种常见的需求,尤其是在与操作系统交互或者使用特定的硬件设备时。"java调用大漠插件的开源项目" 提到了如何利用Java来调用这类插件,而...

    java调用C#封装的dll方法

    ### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...

    java调用windows api

    Java调用Windows API是将Java程序与Windows操作系统底层功能相结合的一种技术。这允许Java开发者利用Java的跨平台特性,同时可以访问到特定于Windows系统的功能,例如注册表操作、文件系统监控、用户权限管理等。要...

    使用JACOB工具调用COM组件

    【使用JACOB工具调用COM组件】是一个关键的话题,特别是在Java编程中处理与Windows平台交互的场景。JACOB,全称为JAVA-COM Bridge,它允许Java应用程序直接调用COM(Component Object Model)组件,这些组件通常是用...

    pb调用C#中COM组件实例(源码+运行EXE)

    标题中的“pb调用C#中COM组件实例”是指在PowerBuilder(PB)环境中通过COM(Component Object Model)接口调用由C#语言编写的组件。这种方法允许不同编程语言之间进行互操作,使得PB能够利用C#的强大功能,如.NET ...

    java 调用webservice使用HttpClient和XFire两种方式

    在Java开发中,有时我们需要与外部服务进行交互,如发送短信、获取数据等,这时就会用到Web Service。本文将详细介绍如何使用HttpClient和XFire这两种不同的库来调用Web Service,特别是针对短信接口的调用。 首先...

    纯java调用ws-security+CXF实现的webservice安全接口

    本文将深入探讨如何使用CXF框架结合ws-security标准来实现对Java客户端调用Web服务的安全接口。CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务,而ws-security(Web Services Security)则是用于...

    gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码.rar

    gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码;gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例代码.;gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例...

    在Win7和Win10 64位系统安装金蝶K3-V10.4客户端.docx

    - 以管理员身份运行“控制面板”-&gt;“程序”-&gt;“打开或关闭Windows功能”,确保选中必要的组件,例如“远程过程调用(RPC)”等。 2. **运行金蝶客户端安装程序**: - 使用管理员权限启动安装程序,根据提示进行...

    WebService客户端调用WebService服务示例代码——java

    WebService客户端调用WebService服务示例代码,java代码,纯手工,包括直接httpClient直接发送Saop报文调用和利用wsimport -keep 生成客户端代码后调用两种方式的示例。因涉及商务账户密码隐私,因此代码中的有些账号...

    java 调用windows的COM组件举例(使用JACOB)-附件资源

    java 调用windows的COM组件举例(使用JACOB)-附件资源

    java调用C++ webservice

    本话题主要探讨如何使用Java调用由C++实现的Web服务(Webservice)。在给出的描述中,提到了通过WSDL(Web Services Description Language)文件来实现这一目标。以下是关于这个主题的详细知识点: 1. **Web服务...

    PB调用java组件SatJni

    SatJni是C++编写的动态链接库,实现了C#,PB,Delphi,VB,VC等对Java的调用,能让你很容易地调用成熟的java类库和第三方java组件。不用再为移值java代码而烦恼。 示例中演示了PB调用webservice服务(无需代理对象)得到...

    JAVA com组件调用示例

    JAVA com组件调用示例/** * */ package com.jdgroup.utilwork.util; import org.jawin.DispatchPtr; import org.jawin.win32.Ole32; /** * @author Guo Long * * Oct 16, 2008 */

    com组件服务器端和客户端程序例子

    在Windows操作系统中,COM组件可以被多个应用程序共享,提供了一种标准的方式来进行跨进程通信和对象交互。在这个"com组件服务器端和客户端程序例子"中,我们将探讨如何使用VC6(Visual C++ 6.0)和ATL(Active ...

Global site tag (gtag.js) - Google Analytics