Difference between revisions of "JIVE Application Bundle (Aspire 2.2)"

From wiki.searchtechnologies.com
Jump to: navigation, search

For Information on Aspire 3.1 Click Here

 
Line 8: Line 8:
 
|appBundleName=Jive Connector
 
|appBundleName=Jive Connector
 
|mavenCoordinates=com.searchtechnologies.aspire:app-jive-connector
 
|mavenCoordinates=com.searchtechnologies.aspire:app-jive-connector
|versions=2.2
+
|versions={{CurrentVersion2.X}}
 
|typeFlags=scheduled
 
|typeFlags=scheduled
 
}}
 
}}

Latest revision as of 23:44, 8 December 2015



JIVE Application Bundle (Aspire 2.2)
AppBundle Name  Jive Connector
Maven Coordinates  com.searchtechnologies.aspire:app-jive-connector
Versions  2.2.2
Type Flags  scheduled
Inputs  AspireObject from a content source submitter holding all the information required for a crawl.
Outputs  An AspireObject containing the URL, content, ACLs and Metadata processed for each file.


The Jive Connector performs full and incremental scans over a Jive Community and will extract security, metadata, and content from each object scanned. The connector allows you to select whether you wish to index all or specific containers (people, spaces, groups, projects, blogs, ...) and if you wish to fetch security. Each scanned object will be tagged with one of three possible actions--add, update, or delete--and can be routed to any Aspire pipeline as desired.

The connector, once started, can be stopped, paused or resumed sending a new Scanner Configuration Job. Typically the start job will contain all information required by the job to perform the scan. When pausing or stopping, the connector will wait until all the jobs it published have completed before updating the statistics and status of the connector.


Configuration

This section lists all configuration parameters available to install the Jive Application Bundle and to execute crawls using the connector.

Property Type Default Description
snapshotDir string ${aspire.home}/snapshots The directory for snapshot files to be stored.
disableTextExtract boolean false By default, connectors use Apache Tika to extract text from downloaded documents. If you wish to apply special text processing to the downloaded document in the workflow, you should disable text extraction. The downloaded document is then available as a content stream.
workflowReloadPeriod int 15m The period after which to reload the processing rules. Defaults to ms, but can be suffixed with ms, s, m, h or d to indicate the required units.
workflowErrorTolerant boolean false When set, exceptions in workflow rules will only effect the execution of the rule in which the exception occurs. Subsequent rules will be executed and the job will complete the workflow successfully. If not set, exceptions in workflow rules will be re-thrown and the job will be moved to the error workflow.
useGE boolean false true if group expansion is going to be used.
geSchedule string 0 0 0 * * ? Indicates how often the group expansion is going to fetch all the security groups.
url string none The url to the Jive Community.
username string none The user used to fetch the security groups.
password string none The password for the user
debug Boolean false Controls whether debugging is enabled for the application. Debug messages will be written to the log files.

Configuration Example

To install the application bundle, add the configuration, as follows, to the <autoStart> section of the Aspire settings.xml.

  <application config="com.searchtechnologies.aspire:app-jive-connector">
    <properties>
      <property name="generalConfiguration">false</property>
      <property name="snapshotDir">${dist.data.dir}/${app.name}/snapshots</property>
      <property name="disableTextExtract">false</property>
      <property name="workflowReloadPeriod">15s</property>
      <property name="workflowErrorTolerant">false</property>
      <property name="useGE">true</property>
      <property name="geSchedule">0 0 12 ? * *</property>
      <property name="url">http://searchtechnologies.jive.com</property>
      <property name="username">Admin</property>
      <property name="password">encrypted:63AA72A7708C8999DEE56A41894EBEEB</property>
      <property name="debug">true</property>
    </properties>
  </application>

Note: Any optional properties can be removed from the configuration to use the default value described on the table above.


Source Configuration

Scanner Control Configuration

The following table describes the list of attributes that the AspireObject of the incoming scanner job requires to correctly execute and control the flow of a scan process.

Element Type Options Description
@action string start, stop, pause, resume, abort Control command to tell the scanner which operation to perform. Use start option to launch a new crawl.
@actionProperties string full, incremental When a start @action is received, it will tell the scanner to either run a full or an incremental crawl.
@normalizedCSName string Unique identifier name for the content source that will be crawled.
displayName string Display or friendly name for the content source that will be crawled.

Header Example

  <doc action="start" actionProperties="full" actionType="manual" crawlId="0" dbId="0" jobNumber="0" normalizedCSName="FeedOne_Connector"
   scheduleId="0" scheduler="##AspireSystemScheduler##" sourceName="ContentSourceName">
    ...
    <displayName>testSource</displayName>
    ...
  </doc>

All configuration properties described in this section are relative to /doc/connectorSource of the AspireObject of the incoming Job.

Element Type Default Description
url string none Jive community URL.
username string none The name of the user that is going to be use for the crawl
password string none The password of the user.
useSecurity boolean false true if want to fetch the document level security.
fetchPlacesAcls boolean false true if want to fetch the security for jive places.
securityFetchingType string useSecurityPlugin useEntitlementApi if want to fetch the security by using jive entitlement API.
pageSize integer 100 Number of elements that are going to be fetched per call
timeOut integer 5 Time in seconds before the connection gives a timeout
maxRetries integer 3 Number of attempts before the connection gives error
mapsDBDir string ${dist.data.dir}/${app.name}/mapsDB Directory where the mapDBs for the ACLs and the Hierarchy will be placed.
indexSpecific boolean false true if you want to specify which endpoints to crawl.
endpionts/endpoint@value boolean true true if you want to crawl this endpoint (people, places, contents, announcements)
incrementalCrawlingType string normalIncremental activityIncremental if you want to use the Activity incremental and analyticApiIncremental if you want to use the Analytic (DES) API incremental.
activityIncremental boolean false true if you want to use the Activity incremental.
incrementalCount integer 5 How many Activity crawl must be perform in order to do a normal incremental.
timestampDir string ${dist.data.dir}/${app.name}/timestamp Directory where timestamp will be placed.
apiUrl string none Jive api URL.
apiVersion integer none Version of Analytic API..
clientId string none Client id of Analytic API add-on..
clientSecret string none Client Secret of Analytic API add-on..
authKeyPeriod boolean false Option to set the validity period for Jive analytic API's Authorization key.
authKeyPeriodMinutes integer 30 Authorization key validity period in minutes.
connectionProperties boolean false true if you want to use a specific timestamp for the incremental crawl with Activity API.
customMetadata boolean false true if you want to modified some metadata options.
fetchModifiedBy boolean true true if you want to fetch the modifiedBy for the Documents and Files items.
fetchOwner boolean true true if you want to fetch the Owner for Tasks items.
fetchReplies boolean true true if you want to fetch the replies of the discussions.
fetchComments boolean true true if you want to fetch the comments, of the content items.
fileNamePatterns/include/@pattern regex none Optional. A regular expression pattern to evaluate file urls against; if the file name matches the pattern, the file is included by the scanner. Multiple include nodes can be added.
fileNamePatterns/exclude/@pattern regex none Optional. A regular expression pattern to evaluate file urls against; if the file name matches the pattern, the file is excluded by the scanner. Multiple exclude nodes can be added.

Scanner Configuration Example

<doc action="start" actionProperties="full" normalizedCSName="testFile">
	<connectorSource>
		<url>https://searchtechnologies.jive-on.com</url>
		<username>Admin</username>
		<password>encrypted:8F51820C8DA15CBE0FC9A07E99674290</password>
		<useSecurity>true</useSecurity>
		<useSecurityPlugin>true</useSecurityPlugin>
		<pageSize>100</pageSize>
		<timeOut>5</timeOut>
		<maxRetries>3</maxRetries>
		<mapsDBDir>${dist.data.dir}/${app.name}/mapsDB</mapsDBDir>
		<indexSpecific>true</indexSpecific>
		<endpionts>
			<endpoint value="people">true</endpoint>
			<endpoint value="places">true</endpoint>
			<endpoint value="contents">true</endpoint>
			<endpoint value="announcements">true</endpoint>
		</endpionts>
		<incrementalCrawlingType>analyticApiIncremental</incrementalCrawlingType>
		<analyticApiIncremental>true</analyticApiIncremental>
		<apiUrl>https://api.jivesoftware.com</apiUrl>
		<apiVersion>v2</apiVersion>
		<clientId>kjnt0qfclery6hznosmui0tguh8zboi1.i</clientId>
		<clientSecret>iv6b4k49xwj2wp1jfy0aj8bisaz1aisy.s</clientSecret>
		<authKeyPeriod>true</authKeyPeriod>
		<authKeyPeriodMinutes>30</authKeyPeriodMinutes>
		<connectionProperties>true</connectionProperties>
		<customMetadata>true</customMetadata>
		<fetchModifiedBy>true</fetchModifiedBy>
		<fetchOwner>true</fetchOwner>
		<fetchReplies>true</fetchReplies>
		<fetchComments>true</fetchComments>
		<fileNamePatterns>
			<include pattern=".*Public.*"/>
			<exclude pattern=".*Secret.*"/>
		</fileNamePatterns>
	</connectorSource>
	<displayName>testFile</displayName>
</doc>

Note: To launch a crawl, the job should be sent (processed/enqueued) to the "/JiveConnector/Main" pipeline.


Output

<doc>
	<sourceType>jive</sourceType>
	<fetchUrl>http://searchtechnologies.jive.com/api/core/v3/places/1000</fetchUrl>
	<docType>container</docType>
	<lastModified>2013-04-22T13:56:11Z</lastModified>
	<dataSize>0</dataSize>
	<url>http://searchtechnologies.jive.com/api/core/v3/places/1000</url>
	<crawlId>43</crawlId>
	<id>1000</id>
	<displayUrl>http://searchtechnologies.jive.com/community/getting-started</displayUrl>
	<connectorSpecific type="jive">
		<field name="contentsUrl">http://searchtechnologies.jive.com/api/core/v3/contents?filter=place(http%3A%2F%2Fjive-search.com%3A8080%2Fapi%2Fcore%2Fv3%2Fplaces%2F1000)</field>
		<field name="contentsAllowed">GET</field>
		<field name="announcementsUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000/announcements</field>
		<field name="announcementsAllowed">GET, POST</field>
		<field name="categoriesUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000/categories</field>
		<field name="categoriesAllowed">GET, POST</field>
		<field name="htmlUrl">http://searchtechnologies.jive.com/community/getting-started</field>
		<field name="htmlAllowed">GET</field>
		<field name="selfUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000</field>
		<field name="selfAllowed">DELETE, GET, PUT</field>
		<field name="placesUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000/places</field>
		<field name="placesAllowed">GET</field>
		<field name="avatarUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000/avatar</field>
		<field name="avatarAllowed">DELETE, GET, POST</field>
		<field name="followingInUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000/followingIn</field>
		<field name="followingInAllowed">GET</field>
		<field name="activityUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000/activities</field>
		<field name="activityAllowed">GET</field>
		<field name="staticsUrl">http://searchtechnologies.jive.com/api/core/v3/places/1000/statics</field>
		<field name="staticsAllowed">GET, POST</field>
		<field name="childCount">0</field>
		<field name="status">Active</field>
		<field name="locale">en_US</field>
		<field name="parent">http://searchtechnologies.jive.com/api/core/v3/places/1002</field>
		<field name="contentTypes">discussions, documents, files, polls</field>
		<field name="id">2001</field>
		<field name="visibleToExternalContributors">false</field>
		<field name="description">New to Jive SBS? Start here to learn how to get the most out of it.</field>
		<field name="name">Getting Started</field>
		<field name="followerCount">0</field>
		<field name="displayName">getting-started</field>
		<field name="published">2013-04-08T15:15:06Z</field>
		<field name="viewCount">0</field>
	</connectorSpecific>
	<repItemType>aspire/space</repItemType>
	<sourceName>Jive Connecotr with Plugin</sourceName>
	<snapshotUrl>002 http://searchtechnologies.jive.com/api/core/v3/places/1000</snapshotUrl>
	<action>add</action>
	<acls>
		<acl name="All Registered Users" sidType="4" scope="global" entity="group" sid="-2" access="allow"/>
		<acl name="All Guest Users" sidType="4" scope="global" entity="group" sid="-3" access="allow"/>
	</acls>
	<hierarchy>
		<item name="Getting Started" type="space" url="http://searchtechnologies.jive.com/api/core/v3/places/1000" id="1000" level="2">
			<ancestors>
				<ancestor name="Jive" parent="true" type="space" url="http://searchtechnologies.jive.com/api/core/v3/places/1002" id="1002" level="1"/>
			</ancestors>
		</item>
	</hierarchy>
	<connectorSource>
		<url>https://searchtechnologies.jive-on.com</url>
		<username>Admin</username>
		<password>encrypted:8F51820C8DA15CBE0FC9A07E99674290</password>
		<useSecurity>true</useSecurity>
		<useSecurityPlugin>true</useSecurityPlugin>
		<pageSize>100</pageSize>
		<timeOut>5</timeOut>
		<maxRetries>3</maxRetries>
		<mapsDBDir>${dist.data.dir}/${app.name}/mapsDB</mapsDBDir>
		<indexSpecific>true</indexSpecific>
		<endpionts>
			<endpoint value="people">true</endpoint>
			<endpoint value="places">true</endpoint>
			<endpoint value="contents">true</endpoint>
			<endpoint value="announcements">true</endpoint>
		</endpionts>
		<incrementalCrawlingType>analyticApiIncremental</incrementalCrawlingType>
		<analyticApiIncremental>true</analyticApiIncremental>
		<apiUrl>https://api.jivesoftware.com</apiUrl>
		<apiVersion>v2</apiVersion>
		<clientId>kjnt0qfclery6hznosmui0tguh8zboi1.i</clientId>
		<clientSecret>iv6b4k49xwj2wp1jfy0aj8bisaz1aisy.s</clientSecret>
		<authKeyPeriod>true</authKeyPeriod>
		<authKeyPeriodMinutes>30</authKeyPeriodMinutes>
		<connectionProperties>true</connectionProperties>
		<customMetadata>true</customMetadata>
		<fetchModifiedBy>true</fetchModifiedBy>
		<fetchOwner>true</fetchOwner>
		<fetchReplies>true</fetchReplies>
		<fetchComments>true</fetchComments>
		<fileNamePatterns>
			<include pattern=".*Public.*"/>
			<exclude pattern=".*Secret.*"/>
		</fileNamePatterns>
	</connectorSource>
	<displayName>testFile</displayName>
</doc>