Wallet File Format

Last modified by Aurelie Bertrand on 2024/12/09 17:09

Each wallet (role or user) are persisted in a wallet.iwt (or wallet_<roleId>.iwt). "iwt" is for 'i'nformation 'w'alle't'. This is a plain XML file that lists all flows descriptors for of the role's or user wallet.

At the moment we describe the most important parts of the file that would be mandatory for integrating DigDash Metadata. Other fields are not considered important for this purpose. We reserve the right to modify the file format and this document as we need it. 

XML Sample

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="staticwebcontent/tools/walletinfo.xsl"?>
<Wallet group="Retail_2d6e0f1e" lastedit="1602240482661" name="Retail" uid="Retail_2d6e0f1e">
<SpeakableNames contextprefix="FLOW" global="true" id="Retail" readonly="false"></SpeakableNames>
<ScheduleList>
 <Schedule frequency="daily" fromDay="25" fromHour="0" fromMinute="0" fromMonth="4" fromYear="2016" periods="1" time="20:0"></Schedule>
</ScheduleList>
<Flow disabled="false" file="flow_datamodelwrapper.xml" group="Retail_2d6e0f1e" lastedit="1570689992312" name="Revenues" refid="11" uid="11517a0bd">
 <SpeakableNames contextprefix="FLOW" global="false" id="Revenues" readonly="false">
  <SpeakableName Description="" DisplayName="" ImageName="" Lang="0" VocalName="">
   <Tag></Tag>
  </SpeakableName>
  <SpeakableName Description="" DisplayName="Chiffre d'affaire" ImageName="" Lang="1" VocalName="">
   <Tag></Tag>
  </SpeakableName>
  <SpeakableName Description="" DisplayName="Ingresos" ImageName="" Lang="2" VocalName="">
   <Tag></Tag>
  </SpeakableName>
 </SpeakableNames>
 <Description Name="">
  <SpeakableNames contextprefix="FLOW.DESCRIPTION" global="true" id="" readonly="false"></SpeakableNames>
 </Description>
 <Category Name="Retail/Synthèse">
  <SpeakableNames contextprefix="FLOW.CATEGORY" global="false" id="Retail/Synthèse" readonly="false">
   <SpeakableName Description="" DisplayName="Synthesis" ImageName="" Lang="0" VocalName="">
    <Tag></Tag>
   </SpeakableName>
   <SpeakableName Description="" DisplayName="Synthèse" ImageName="" Lang="1" VocalName="">
    <Tag></Tag>
   </SpeakableName>
   <SpeakableName Description="" DisplayName="Síntesis" ImageName="" Lang="2" VocalName="">
    <Tag></Tag>
   </SpeakableName>
  </SpeakableNames>
 </Category>
 <deviceids>
  <device id="dashboard"></device>
 </deviceids>
 <History ForceRefresh="false" KeepSource="true" MaxItems="1" Refresh="2"></History>
 <Input id="1" value="4ed0efaf2746ec7c60593590bf140d59"/>
 <Input id="2"><![CDATA[<RenderingModel DimCount="4" axisId="0" id="" refreshatopening="true" template="textreport-template" templateVideo="" type="$ui.TextChart" version="20130212" vizid="19"><MeasureRenderingParameter Aggregation="0" AxisAlias="-1" Format="" HideLabel="false" HideMeasure="false" MeasureId="Sales" Target=""></MeasureRenderingParameter><NavigationModels AcceptableTarget="" BadTarget="" EnableDescription="false" GoodTarget="" Intro="" NoVal="" Outro="" SayEmptyValues="false" id="text"><NavigationModel MinTime="-1" SentenceId="Indicateur ( RETAIL - CA)" id="0" type="0"></NavigationModel></NavigationModels><ChartRenderingParameter Action="&lt;Actions&gt;&lt;Action TypeAction=&quot;JAVASCRIPT&quot; AxisAction=&quot;0&quot; URLAction=&quot;&quot; JavascriptAction=&quot;ddCtrl.switchPage(&amp;apos;Sales.Revenues&amp;apos;)&quot;/&gt;&lt;/Actions&gt;" ActiononMouseover="" Animated="true" ColorIndependant="true" ColorManager="true" ColorTable="" DisplayTooltip="true" FontScalable="false" ShowEmptyValues="false" ShowNullValues="false" globalSortPreserveTotal="false" maxSizeTooltip="0" version="20161001"><Labels></Labels><Tooltip><SpeakableNames global="false" id="" readonly="false"></SpeakableNames></Tooltip><ExtraParameters><parameter key="extraFeature_enableScaleGroup" value="true"/></ExtraParameters><Scripts></Scripts><AddCSS name="${client.digdashCSS},_DD_,removeScrollBar"></AddCSS></ChartRenderingParameter><DimensionsOptions></DimensionsOptions></RenderingModel>]]></Input>
 <Input id="3" value=""/>
</Flow>
</Wallet> 

Wallet Node

AttributeTypeDescription
groupIdentifier Identifier of the role of the wallet as it is defined in LDAP. This value is empty for a user wallet.
lasteditTimestampLast time this wallet was modified
nameNameUser friendly name of the wallet (can be modified). In case of a user wallet, this is the user's name
uidIdentifierIdentifier of the wallet. Identical to group attribute for a role wallet, and generated id for a user wallet
Child NodesCountDescription
SpeakableNames1List of localized names for this element
ScheduleList1List of Schedule options for this element
FlowNDescriptor of a flow

Flow Node

The flow is the description of a visual representation in DigDash Enterprise. It can be of several types, from a single indicator, table, chart to a more complex report containing other flows (PDF/PPT/HTML reports). Each type has its own set of specific inputs.

AttributeTypeDescription
groupIdentifier Identifier of the role of the flow as it is defined in LDAP. This value is empty for a user wallet. Note: this value is always the same as the group attribute in the Wallet node.
lasteditTimestampLast time this flow was modified
nameNameUser friendly name of the flow (can be modified)
uidIdentifierIdentifier of the flow (generated). This is the identifier used in dashboard flow portlets, see Base node, flowId attribute in Dashboard File Format
refid & fileIdentifierType of the flow. file attribute is also used in dashboard flow portlets, see Base node, subtype attribute in Dashboard File Format
Child NodesCountDescription
SpeakableNames1List of localized names for this element
ScheduleList1List of Schedule options for this element
Description1Description of the flow localized via SpeakableNames
Category1Category of the flow localized via SpeakableNames
deviceids1List of Device where this flow can be exported
History1Options of the flow's history
InputNInput for the specified type of flow (see below)

Type Flow Data Model Wrapper (file=flow_datamodelwrapper.xml, refid=11)

This type is the most used information flow in DigDash. This is any type of visualisation : table, chart, KPI... Each flow of this type uses one data model and one data rendering model. They are used to build dashboard page, export data to different devices or build more complex reports (builders).

Input IdTypeDescription
1IdentifierThis is the identifier of the data model used for this flow. See TableDataModel node, id attribute in Data Models File Format.
2XML (CDATA)This is the XML to describe the rendering model of the flow
3FileThis is the file name to use when exporting this flow to a device. It may contains substitution tokens.

Rendering Model XML Sample (TODO)

The rendering model describe how the flow should be displayed in dashboard pages and exports. It may contains references to measures (MeasureId) and dimensions (DimId) from the flow's data model. See TableDataModel Node, name attributes of the Dimension and Measure child nodes in Data Models File Format.

Currently the XML for the rendering model is inlined as a CDATA section to cope with a limitation of the Input Node's value which must be a string. CDATA usage prevents us from over-encoding this XML string and keep it somewhat human-readable. This may change in the future.

<RenderingModel DimCount="4" axisId="0" id="" refreshatopening="true" template="textreport-template" templateVideo="" type="$ui.TextChart" version="20130212" vizid="19">
<MeasureRenderingParameter Aggregation="0" AxisAlias="-1" Format="" HideLabel="false" HideMeasure="false" MeasureId="Sales" Target=""></MeasureRenderingParameter>
<NavigationModels AcceptableTarget="" BadTarget="" EnableDescription="false" GoodTarget="" Intro="" NoVal="" Outro="" SayEmptyValues="false" id="text">
 <NavigationModel MinTime="-1" SentenceId="Indicateur ( RETAIL - CA)" id="0" type="0"></NavigationModel>
</NavigationModels>
<ChartRenderingParameter Action="&lt;Actions&gt;&lt;Action TypeAction=&quot;JAVASCRIPT&quot; AxisAction=&quot;0&quot; URLAction=&quot;&quot; JavascriptAction=&quot;ddCtrl.switchPage(&amp;apos;Sales.Revenues&amp;apos;)&quot;/&gt;&lt;/Actions&gt;" ActiononMouseover="" Animated="true" ColorIndependant="true" ColorManager="true" ColorTable="" DisplayTooltip="true" FontScalable="false" ShowEmptyValues="false" ShowNullValues="false" globalSortPreserveTotal="false" maxSizeTooltip="0" version="20161001">
 <Labels></Labels>
 <Tooltip>
  <SpeakableNames global="false" id="" readonly="false"></SpeakableNames>
 </Tooltip>
 <ExtraParameters>
  <parameter key="extraFeature_enableScaleGroup" value="true"/>
 </ExtraParameters>
 <Scripts></Scripts>
 <AddCSS name="${client.digdashCSS},_DD_,removeScrollBar"></AddCSS>
</ChartRenderingParameter>
<DimensionsOptions></DimensionsOptions>
</RenderingModel>

Type Flow PDF/PPT/XLS/HTML builder (TODO)

These types of flow are used to build complex reports. They usually contain other flows (type Data Model Wrapper) and are based on a report template, externally defined. Eg. a Powerpoint file, an Excel file...

Input IdTypeDescription
TODOTODOTODO

SpeakableNames Node

This is used in different part and defines the localization for the name of the node where it is included.

Note : if the localization global attribute is set to true, then the translated string are stored in a properties files. If it is false the localized string are defined in SpeakableName child nodes, one for each language.

We will not describe this node for each place where it can be used. Instead we will only mention it.

Summary

  • The important element here is the Flow.
  • The identifier of the flow is the uid attribute of the Flow node, while its (default) name is the name attribute. Name can be localized using SpeakableNames.
  • There is also a Description (localized) and Category of the flow (also localized)
  • For Data Model Wrappers type of flow, input "1" is the id of the data model, and input "2" is the rendering Model.