VOS.VOSeCRMViewsDeplRules

  • Topic
  • Discussion
  • VOS.VOSeCRMViewsDeplRules(1.1) -- DAVWikiAdmin? , 2017-06-13 05:36:29 Edit WebDAV System Administrator 2017-06-13 05:36:29

    URL Rewrite Rules for eCRM

    This article contains the script for defining the URL Rewrite Rules for eCRM:


    DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
        'ecrm_rule2',
        1,
        '(/[^#]*)',
        vector('path'),
        1,
        '/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/ecrm%%3E+WHERE+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}&format=%U',
        vector('path', 'path', '*accept*'),
        null,
        '(text/rdf.n3)|(application/rdf.xml)',
        0,
        null
        );
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
        'ecrm_rule1',
        1,
        '(/[^#]*)',
        vector('path'),
        1,
        '/about/html/http://^{URIQADefaultHost}^%s%%23this',
        vector('path'),
        null,
        '(text/html)|(\\*/\\*)',
        0,
        303
        );
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
        'ecrm_rule3',
        1,
        '(/[^#]*)/\x24',
        vector('path'),
        1,
        '%U',
        vector('path'),
        null,
        null,
        0,
        null
        );
    
    create procedure DB.DBA.ECRM_MAKE_RDF_DET()
    {
        declare uriqa_str varchar;
        uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
        uriqa_str := 'http://' || uriqa_str || '/ecrm';
        DB.DBA."RDFData_MAKE_DET_COL" ('/DAV/VAD/eCRM/RDFData/', uriqa_str, NULL);
        VHOST_REMOVE (lpath=>'/ecrm/data/rdf');
        DB.DBA.VHOST_DEFINE (lpath=>'/ecrm/data/rdf', ppath=>'/DAV/VAD/eCRM/RDFData/All/', is_dav=>1, vsp_user=>'dba');
    }
    ;
    
    DB.DBA.ECRM_MAKE_RDF_DET();
    
    drop procedure DB.DBA.ECRM_MAKE_RDF_DET;
    
    -- procedure to convert path to DET resource name
    create procedure DB.DBA.ECRM_DET_REF (in par varchar, in fmt varchar, in val varchar)
    {
      declare res, iri any;
      declare uriqa_str varchar;
      uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
      uriqa_str := 'http://' || uriqa_str || '/ecrm';
      iri := uriqa_str || val;
      res := sprintf ('iid (%d).rdf', iri_id_num (iri_to_id (iri)));
      return sprintf (fmt, res);
    }
    ;
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ecrm_rdf', 1,
        '/ecrm/(.*)', vector('path'), 1,
        '/ecrm/data/rdf/%U', vector('path'),
        'DB.DBA.ECRM_DET_REF',
        'application/rdf.xml',
        2,
        303);
    
    create procedure DB.DBA.ECRM_DET_REF2 (in par varchar, in fmt varchar, in val varchar)
    {
    	declare tmp, stream any;
    	declare oid, inst, class, sid, url varchar;
    	declare pos, org_id_ integer;
    	--val := val || '&oid=301000000001';
    	val := replace(val, '%27', '\'');
    	val := replace(val, '%20', ' ');
    	if (val like '%/%/view.vsp?sid=%&oid=%')
    	{
    		tmp := sprintf_inverse (val, '%s/%s/view.vsp?sid=%s&oid=%s', 0);
    		inst := tmp[0];
    		class := tmp[1];
    		sid := tmp[2];
    		oid := tmp[3];
    		pos := strchr(oid, '&');
    		if (pos is not NULL)
    		{
    			oid := left(oid, pos);
    		}
    		org_id_ := (select WAI_ID from DB.DBA.WA_INSTANCE where WAI_NAME = inst);
    		if (class = 'company')
    		{
    			for (select COMPANY_NAME, COMPANY_ID from eCRM.DBA.SFA_COMPANIES where cast(COMPANY_ID as varchar) = oid and ORG_ID = org_id_) do
    			{
    				url := sprintf('Company/%U/%U/%d#this', COMPANY_NAME, COMPANY_ID, org_id_);
    			}
    		}
    		if (class = 'lead')
    		{
    			for (select SUBJECT, LEAD_ID from eCRM.DBA.SFA_LEADS where cast(LEAD_ID as varchar) = oid and ORG_ID = org_id_) do
    			{
    				url := sprintf('Lead/%U/%d/%/U#this', SUBJECT, org_id_, LEAD_ID);
    			}
    		}
    		if (class = 'opportunity')
    		{
    			url := sprintf('Lead/%d/%/U#this', org_id_, oid);
    		}
    		if (class = 'contact')
    		{
    			for (select NAME_FIRST, NAME_MIDDLE, NAME_LAST, CONTACT_ID from eCRM.DBA.SFA_CONTACTS where cast(CONTACT_ID as varchar) = oid and ORG_ID = org_id_) do
    			{
    				url := sprintf('Contact/%U/%U/%U/%U/%d#this', NAME_FIRST, NAME_MIDDLE, NAME_LAST, CONTACT_ID, org_id_);
    			}
    		}
    		if (class = 'order')
    		{
    			url := sprintf('Order/%d/%U#this', org_id_, oid);
    		}
    
    	}
    	else if (val like '%/%/view.vsp?sid=%')
    	{
    		tmp := sprintf_inverse (val, '%s/%s/view.vsp?sid=%s', 0);
    		inst := tmp[0];
    		class := tmp[1];
    		sid := tmp[2];
    		org_id_ := (select WAI_ID from DB.DBA.WA_INSTANCE where WAI_NAME = inst);
    		if (class = 'organization')
    		{
    			for (select DNS_ZONE from eCRM.DBA.XSYS_ORGANIZATIONS_DATA where ORG_ID = org_id_) do
    			{
    				url := sprintf('OrganizationsData/%d/%U#this', org_id_, DNS_ZONE);
    			}
    		}	
    	}
    	return url;
    }
    ;
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_ecrm_rdf',
    	1,
        '/dataspace/([^/]*)/eCRM/(.*)',
        vector('uname', 'path'),
        1,
        '/ecrm/%U',
        vector('path'),
        'DB.DBA.ECRM_DET_REF2',
        'application/rdf.xml',
        2,
        303);
    
    DB.DBA.URLREWRITE_CREATE_RULELIST (
        'ecrm_rule_list1',
        1,
        vector (
                    'ecrm_rule1',
                    'ecrm_rule2',
                    'ecrm_rule3',
                    'ecrm_rdf'
              ));
    
    
    VHOST_REMOVE (lpath=>'/ecrm');
    DB.DBA.VHOST_DEFINE (lpath=>'/ecrm', ppath=>'/DAV/VAD/eCRM/', vsp_user=>'dba', is_dav=>1, def_page=>'sfront.vspx',
              is_brws=>0, opts=>vector ('url_rewrite', 'ecrm_rule_list1'));
    
    create procedure DB.DBA.LOAD_ECRM_ONTOLOGY_FROM_DAV()
    {
      declare content, urihost varchar;
      select cast (RES_CONTENT as varchar) into content from WS.WS.SYS_DAV_RES where RES_FULL_PATH = '/DAV/VAD/eCRM/ecrm.owl';
      DB.DBA.RDF_LOAD_RDFXML (content, 'http://www.openlinksw.com/schemas/ecrm#', 'http://www.openlinksw.com/schemas/eCRMOntology/1.0/');
      urihost := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
      if (urihost = 'demo.openlinksw.com')
      {
        DB.DBA.VHOST_REMOVE (lpath=>'/schemas/ecrm#');
        DB.DBA.VHOST_DEFINE (lpath=>'/schemas/ecrm#', ppath=>'/DAV/VAD/eCRM/ecrm.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
      }
    }
    ;
    
    DB.DBA.LOAD_ECRM_ONTOLOGY_FROM_DAV()
    ;
    
    drop procedure DB.DBA.LOAD_ECRM_ONTOLOGY_FROM_DAV
    ;
    
    create procedure DB.DBA.LOAD_ECRM_ONTOLOGY_FROM_DAV2()
    {
      declare urihost varchar;
      sparql base <http://www.openlinksw.com/schemas/ecrm#> load bif:concat ("http://", bif:registry_get("URIQADefaultHost"), "/DAV/VAD/eCRM/ecrm.owl")
       into graph <http://www.openlinksw.com/schemas/eCRMOntology/1.0/>;
      urihost := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
      if (urihost = 'demo.openlinksw.com')
      {
        DB.DBA.VHOST_REMOVE (lpath=>'/schemas/ecrm#');
        DB.DBA.VHOST_DEFINE (lpath=>'/schemas/ecrm#', ppath=>'/DAV/VAD/eCRM/ecrm.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
      }
    }
    ;
    
    --DB.DBA.LOAD_ECRM_ONTOLOGY_FROM_DAV2();
    
    drop procedure DB.DBA.LOAD_ECRM_ONTOLOGY_FROM_DAV2
    ;